【问题标题】:multiDexKeepFile ignored / not workingmultiDexKeepFile 被忽略/不工作
【发布时间】:2017-10-06 07:57:50
【问题描述】:

我的应用程序是一个扩展 MultiDexApplication 的自定义类。

public class CustomApp extends MultiDexApplication {
    @Override
    public void onCreate() {
        super.onCreate();
        //TODO
    }
}

在我的 AndroidManifest.xml 中:

<application
        android:name=".helper.CustomApp"
        android:allowBackup="false"
        android:icon="@mipmap/ic_launcher"
        android:label="${app_name}"
        android:largeHeap="true"
        android:screenOrientation="portrait"
        android:supportsRtl="true"
        android:theme="@style/AppTheme"
        tools:replace="android:allowBackup, android:label">

当我尝试在三星 s6 (API 7.0) 上运行 apk 时,一切正常。但是,当我尝试在 THOMSON (API 4.2.2) 上运行它时,我收到了这个错误:

FATAL EXCEPTION: main
                                                            java.lang.RuntimeException: Unable to instantiate application me.blu.app.helper.CustomApp: java.lang.ClassNotFoundException: Didn't find class "me.blu.app.helper.CustomApp" on path: DexPathList[[zip file "/data/app/me.blu.app-1.apk"],nativeLibraryDirectories=[/data/app-lib/me.blu.app-1, /vendor/lib, /system/lib]]
                                                                at android.app.LoadedApk.makeApplication(LoadedApk.java:504)

所以我这样做了that - 我创建了一个 multidex-config.txt 并添加了这一行:

me/blu/app/helper/CustomApp.class

此文件根据需要位于我的 build.gradle 文件旁边。

然后我在我的两个 builTypes 中添加了这个 multiDexKeepFile file('multidex-config.txt'),但也在 multiDexEnabled true 下方。

它仍然无法正常工作。我会非常感谢一些帮助^^

谢谢。

【问题讨论】:

  • android:name=".CustomApp"
  • @IntelliJAmiya 抱歉,这是一个错字 - 但我已经尝试过了,但我仍然收到此错误:/
  • @Benobab 按照本教程中的步骤启用支持 multidex developer.android.com/studio/build/multidex.html#mdex-pre-l
  • @SergiiPechenizkyi 我已经这样做了(这个链接是我帖子的一部分^^),所以谢谢,但它没有用:/

标签: android android-multidex


【解决方案1】:

即使添加了 multidex,我也曾经遇到过同样的问题。每当apk在Android 4.4 Xiaomi中运行时就会出现问题(如果我没记错的话)。解决方案是在应用程序中使用MultiDex.install(),如下所示:

public class CustomApp extends Application {
  @Override
  protected void attachBaseContext(Context base) {
     super.attachBaseContext(base);
     MultiDex.install(this);
  }
}

然后在模块中添加jumboMode truebuild.gradle:

android {
    ...
    dexOptions {
        jumboMode = true
    }

}

【讨论】:

    猜你喜欢
    • 2023-03-19
    • 2012-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-27
    • 1970-01-01
    • 2013-03-15
    相关资源
    最近更新 更多