我正在生成一个我需要上传到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");
答案 0 :(得分:0)
请检查您的build.gradle
文件,看看您的minifyEnabled
和shrinkResources
是否设置为true
。如果minifyEnabled
和shrinkResources
设置为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提供了有关资源缩减的更多信息。