资源NotFoundException

问题描述 投票:3回答:1

我试图构建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

请帮我找到解决这个问题的方法。

android proguard
1个回答
1
投票

使用“shrinkResources true”时,我遇到了类似的问题。

后来我参考了本节Customize which resources to keep得到了帮助。

如果您希望保留或丢弃特定资源,请在项目中使用标记创建XML文件,并指定要保留在工具中的每个资源:在工具中保留属性和每个资源: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" />
© www.soinside.com 2019 - 2024. All rights reserved.