我使用的是CircledImageView库。它适用于棒棒糖+ Android版本。但在kitkat,它崩溃了。所以在谷歌搜索后。我发现我必须在我的应用程序中实现multidex。
所以这是我的应用程序类。
public class FireApp extends Application {
@Override
public void onCreate() {
super.onCreate();
Firebase.setAndroidContext(this);
Fresco.initialize (this);
}
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
}
在defaultconfig下的build.gradle中,MultiDexEnabled为true
multiDexEnabled true
但是当我运行应用程序时,我收到以下错误。
java.lang.NoSuchFieldException: Field dexElementsSuppressedExceptions not found in class dalvik.system.PathClassLoader
at android.support.multidex.MultiDex.findField(MultiDex.java:288)
at android.support.multidex.MultiDex.access$300(MultiDex.java:57)
at android.support.multidex.MultiDex$V19.install(MultiDex.java:390)
at android.support.multidex.MultiDex$V19.access$000(MultiDex.java:369)
at android.support.multidex.MultiDex.installSecondaryDexes(MultiDex.java:242)
at android.support.multidex.MultiDex.install(MultiDex.java:161)
at android.support.multidex.MultiDexApplication.attachBaseContext(MultiDexApplication.java:39)
at com.buckydroid.anonchat.FireApp.attachBaseContext(Unknown Source)
at android.app.Application.attach(Application.java:182)
at android.app.Instrumentation.newApplication(Instrumentation.java:991)
at android.app.Instrumentation.newApplication(Instrumentation.java:975)
at android.app.LoadedApk.makeApplication(LoadedApk.java:511)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4564)
at android.app.ActivityThread.access$1500(ActivityThread.java:139)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1353)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:149)
at android.app.ActivityThread.main(ActivityThread.java:5268)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:609)
at dalvik.system.NativeStart.main(Native Method)
答案 0 :(得分:3)
尝试在compile 'com.android.support:multidex:1.0.1'
文件中加入build.gradle
。
答案 1 :(得分:3)
检查以下步骤
1)在build.gradle文件中添加依赖项:
compile 'com.android.support:multidex:1.0.0'
2)启用multidex并设置堆大小
defaultConfig {
applicationId "your package name"
minSdkVersion 19
targetSdkVersion 23
versionCode 1
versionName "1.0"
multiDexEnabled true
}
dexOptions {
javaMaxHeapSize "4g"
}
3)在Application类中添加此
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
4)在<application>
标记
android:name=".YourApplicationClassName"
答案 2 :(得分:2)
MultiDexApplication
。build.gradle
文件已启用多索引并包含compile 'com.android.support:multidex:1.0.1'
包依赖项。MultiDexApplication
答案 3 :(得分:2)
试试这个 在你的应用程序级别build.gradle文件中放入以下代码行
android{
//compielsdkVersion..
//..
//..
vectorDrawables.useSupportLibrary = true
}
并在您使用CircularImageView的Activity.java中将以下静态块放在onCreate()方法的顶部,如下所示
//...
//....
static {
AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
//...
//...
答案 4 :(得分:1)
之前的解决方案还可以,但缺少一件事 的 MultiDexApplication 强>
public class FireApp extends MultiDexApplication
答案 5 :(得分:0)
在清单
中的应用标记中添加此行android:name="android.support.multidex.MultiDexApplication"
答案 6 :(得分:0)
在API 19和20上,库试图保存“抑制的异常” 在loader.dexElementsSuppressedExceptions中。
但是该字段不存在,它在DexPathList中,所以正确的路径是 loader.pathList.dexElementsSuppressedExceptions。
您需要将multidex版本更新为1.0.2 +。
答案 7 :(得分:0)
我在运行 debug 构建(发布还可以)的Android 4.3(API 18)的Sony设备上遇到了相同的问题。在尝试了每种解决方案并确保正确完成所有操作后,我仍然无法解决该问题。
在使用Android Studio为多个设备构建和安装APK时,我偶然发现,如果我尝试一次为Lollipop设备构建 ,然后为旧版本构建(在KitKat下) )它将运行,而不会出现烦人的MultiDex installation failed
错误。
请注意,我最常用于构建和测试应用程序的设备运行API 28。
答案 8 :(得分:-2)
尝试包括
build.gradle文件中的compile 'com.android.support:multidex:1.0.1
'。
答案 9 :(得分:-2)
这是kitkat multidex中的错误,你可以覆盖V19.install,因为dexElementsSuppressedExceptions是dexPathList中的字段,而不是加载器中的字段。但是,当dalvik执行makeDexElements时会出现异常,但是您收到了错误的消息enter image description here