资源未找到异常

4

我正在尝试构建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

同时应用程序在模拟器上不会崩溃(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。请帮我找出解决此问题的方案。

尝试这个:gradlew assembleRelease - Terril Thomas
我已将jdk更新到131并执行了“gradlew assembleRelease”。它没有出现错误,但问题仍然存在。 - Dmitriy
1
将 shrinkResources 设置为“false”暂时起作用了... - Dmitriy
你是否正在使用Iconics和google_material_typeface库?我认为它们有关系 - 我也遇到了这个错误。目前还没有解决方案... :( - jazzgil
不,我不使用这些库。 - Dmitriy
1个回答

3
我在使用“shrinkResources true”时遇到了类似的问题。
后来,我参考了这个部分自定义保留哪些资源获得了帮助。

如果您希望保留或丢弃特定资源,请在项目中创建一个XML文件, 其中包含标签,并在tools:keep属性中指定要保留的每个资源, 并在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" />

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接