【问题标题】:Generating Signed APK missing resource files生成签名的 APK 缺少资源文件
【发布时间】:2017-06-10 16:05:34
【问题描述】:

我正在生成一个需要上传到 Play 商店的签名 APK。我遇到的问题是我使用的地图使用了自定义样式,并且我引用了 Res>raw 文件夹中的自定义样式。当我生成可调试的 APK/在手机上运行应用程序时,可以检索到 R.raw.mapstyle_grayscale 文件。当我尝试生成签名的 APK 时,我收到错误 Error:(936, 98) error: cannot find symbol variable mapstyle_grayscale

我的代码如下所示:

Boolean success = false;
int map_version = manager.getMapVersion(this);
 switch (map_version){
     case 0:
         break;
     case 1:
         success = googleMap.setMapStyle(MapStyleOptions.loadRawResourceStyle(this, R.raw.mapstyle_grayscale));
         break;
     case 2:
         success = googleMap.setMapStyle(MapStyleOptions.loadRawResourceStyle(this, R.raw.mapstyle_night));
         break;
     case 3:
         success = googleMap.setMapStyle(MapStyleOptions.loadRawResourceStyle(this, R.raw.mapstyle_retro));
         break;     
 }

if (!success)
    Log.e("Maps", "Style parsing failed.");
else
    Log.i("Maps","Style parsing successful");

【问题讨论】:

    标签: android google-maps android-studio google-play google-play-services


    【解决方案1】:

    请检查您的build.gradle 文件,看看您的minifyEnabledshrinkResources 是否设置为true。如果minifyEnabledshrinkResources 设置为true,它会在生成发布apk 时删除未使用的资源。通常,从代码中引用的资源可以作为未使用的资源找到,因此会出现问题。

    如果您希望保留或丢弃特定资源,请在项目中创建一个带有 <resources> 标记的 XML 文件,并在 tools:keep 属性中指定要保留的每个资源,并在 tools:discard 中指定要丢弃的每个资源属性。这两个属性都接受以逗号分隔的资源名称列表。您可以将星号字符用作通配符。请check here了解更多信息。

    <?xml version="1.0" encoding="utf-8"?>
    <resources xmlns:tools="http://schemas.android.com/tools"
        tools:keep="@layout/l_used*_c,@layout/l_used_a,@layout/l_used_b*"
        tools:discard="@layout/unused2" />
    

    Developers guide for android 有更多关于资源收缩的信息。

    更新:

    我在自定义签名过程中遇到了类似的问题。问题是,我正在解压缩 apk 并签署一些库文件并再次将 apk 压缩回去。再次压缩 apk 时,资源文件被压缩,因此在单点 apk 中缺少对资源文件的引用。希望这些信息可以帮助任何未来的开发人员。

    【讨论】:

    • minifyEnabled 设置为 false
    • 请输入您的build.gradleproguard-rules.pro
    猜你喜欢
    • 1970-01-01
    • 2017-08-27
    • 2012-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多