Android 三星和 wiko 的 appCompat 问题

Android appCompat issue with samsung and wiko

目前我的应用程序有点问题,在大多数设备上一切正常,但在某些三星和 wiko 上我收到此错误: java.lang.NoClassDefFoundError: android.support.v7.internal.view.menu.MenuBuilder

我在 Internet 上看到一些答案,他们说在混淆文件中添加以下行,在我的情况下这行不通

 -keep class !android.support.v7.internal.view.menu.**, ** { *; }

我的应用程序由 2 个模块组成(所以我有 2 个混淆文件),1 个模块用于主应用程序,另一个用于库

这是我的应用程序模块的 gradle 文件:

 apply plugin: 'com.android.application'

android {
compileSdkVersion 22
buildToolsVersion "21.1.2"

defaultConfig {
    applicationId "com.refresh.quickeer"
    minSdkVersion 16
    targetSdkVersion 22
    versionCode 1
    versionName "1.0"
    multiDexEnabled true
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
    debug
            {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            }
}
}

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:22.1.1'
compile 'com.squareup.picasso:picasso:2.5.2'
compile 'com.android.support:cardview-v7:22.1.0'
compile 'com.android.support:recyclerview-v7:22.+'
compile 'com.android.support:palette-v7:21.0.0'
compile 'com.xgc1986.android:parallaxpagertransformer:1.0.3'
compile project(':library')
}

有人可以解决这个问题吗?

我很清楚你在说什么,这里是 Google

这是我用来修复的 java.lang.NoClassDefFoundError: android.support.v7.internal.view.menu.MenuBuilder:

-keep class !android.support.v7.internal.view.menu.**,android.support.** {*;}

以下是适用于支持 v4 和 v7 的所有内容:

##################################################################################
#
# App Compat
# 
#
##################################################################################
-dontnote android.support.**
-dontwarn android.support.v4.**
-keep class android.support.v4.** { *; }
-keep interface android.support.v4.** { *; }
-dontwarn android.support.v7.**
# -keep class android.support.v7.** { *; }  # <-- excess notes
# -keep interface android.support.v7.** { *; }
# Allow obfuscation of android.support.v7.internal.view.menu.**
# to avoid problem on Samsung 4.2.2 devices with appcompat v21
# see https://code.google.com/p/android/issues/detail?id=78377
-keep class !android.support.v7.internal.view.menu.**,android.support.** {*;}  # <-- important

来源: Note: android.support.v4.text.ICUCompatIcs: can't find dynamically referenced class libcore.icu.ICU and https://code.google.com/p/android/issues/detail?id=78377

在遇到这个问题之前,我没有在我的应用程序上使用混淆器。我通过设置 minifyEnabled true 并使用以下 proguard 配置

解决了这个问题
-dontshrink    
-keep class !android.support.v7.internal.view.menu.**,** {*;}
-keepattributes **
-dontwarn **

我在此修复前后在 appthwack 上测试了我的应用程序,以验证它是否有效。