我尝试构建apk的发布版本并在Honor 5x(api 23)上启动时出错:
Caused by: android.view.InflateException: Binary XML file line #25: Error inflating class com.google.android.gms.common.SignInButton
File res/color/abc_hint_foreground_material_light.xml from color state list resource ID #0x7f0d01e7
同时app在模拟器(api 25)上没有崩溃。 我试图将此添加到proguard规则,但它没有帮助:
-dontwarn com.google.android.gms.**
-keep class com.google.android.gms.** { *; }
-keepclassmembers class **.R$* {
public static <fields>;
}
构建类型:
release {
shrinkResources true
useProguard true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.config
debuggable true
minifyEnabled true
}
我使用android studio 3.0 canary 1,支持库25.3.1,构建工具25.0.2和firebase-ui 1.2.0
请帮我找一个解决这个问题的方法。
答案 0 :(得分:0)
I am facing similar problems when using "shrinkResources true".
Later I got help with reference to this section Customize which resources to keep复制文本。
如果您希望保留或丢弃某些特定资源,请创建一个 项目中带有标签的XML文件,并指定每个 保留在工具中的资源:保留属性,并将每个资源 在tools:discard属性中丢弃。这两个属性都接受 以逗号分隔的资源名称列表。您可以使用星号 字符作为通配符。
将白名单添加到路径“ res / raw /”中的“ keep.xml”文件中, 用来保留由于“ shrinkResources true”而丢失的资源。
例如“ res / raw / keep.xml”
<?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" />