与三星和wiko的Android appCompat问题

时间:2015-04-25 23:06:26

标签: java android android-appcompat

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

我在互联网上看到了一些答案,他们说在proguard文件中添加以下行,在我的情况下,这不起作用

position: absolute;
top: 10px;
right: 10px;

我的应用程序是2个模块的复合(所以我有2个proguard文件),1个模块用于主应用程序,另一个用于库

这是thr app模块的gradle文件:

import org.json.JSONArray;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.IntStream;

public class JSONFun {

    public static List<String> firstKeysOf(JSONArray array) {
        return IntStream.range(0, array.length())
                .mapToObj(i -> array.getJSONObject(i).keys().next())
                .collect(Collectors.toList());
    }
}

enter image description here 有人有解决这个问题的方法吗?

2 个答案:

答案 0 :(得分:1)

我确切地知道你在说什么,这是谷歌

以下是我用来修复java.lang.NoClassDefFoundError: android.support.v7.internal.view.menu.MenuBuilder的内容:

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

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

##################################################################################
#
# App Compat
# https://stackoverflow.com/questions/22441366/note-android-support-v4-text-icucompatics-cant-find-dynamically-referenced-cl
#
##################################################################################
-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.ICUhttps://code.google.com/p/android/issues/detail?id=78377

答案 1 :(得分:1)

在遇到此问题之前,我没有在我的应用上使用proguard。我通过设置minifyEnabled true并使用以下proguard配置

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

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