无法实例化应用程序:在路径上找不到 class:DexPathList
Unable to instantiate application: Didn't find class on path: DexPathList
我们的一个 Unity 应用程序最近 运行 在 Android 上出现问题,应用程序 class 不在主 dex 中。结果是应用程序构建,但在启动时崩溃。
这是一个现有的 Android 应用程序,启用了 multidex,并且该应用程序扩展了 MultiDexApplication。我按照 Declare classes required in the primary DEX file 的说明进行操作,但抛出了相同的异常。
java.lang.RuntimeException: Unable to instantiate application com.example.Application: java.lang.ClassNotFoundException: Didn't find class "com.example.Application" on path: DexPathList
同样,在主 dex 中找不到 MultiDexApplication class,如在堆栈跟踪中进一步看到的那样:
Caused by: java.lang.ClassNotFoundException: Didn't find class "androidx.multidex.MultiDexApplication" on path: DexPathList
我试过了
- 添加 multiDexKeepFile.txt (
multiDexKeepFile file('multiDexKeepFile.txt')
)
- 添加 multiDexKeepProguard.pro (
multiDexKeepProguard file('multiDexKeepProguard.pro')
)
- 注意:无论是否启用混淆器,都会出现此问题。
当我将 multiDexKeep 文件添加到 Assets/Plugins/Android/(gradle 文件所在的位置)时,Unity 似乎忽略了它们,即使在我导出项目时也是如此。所以我也尝试过:
- 使用 IPostprocessBuildWithReport 手动添加 multiDexKeep 文件。
- 使用 IPreprocessBuildWithReport 手动添加 multiDexKeep 文件。
- 制作一个包含 multiDexKeep 文件的 Android 库。
Unity 似乎无法自行处理 multiDexKeep 文件,但它能够使用任一进程导出它们。但是,即使我导出项目并在 Android Studio 中构建项目,classes 仍然没有出现在主 dex 中。
有人解决过这个问题吗?
multiDexKeepFile.txt:
androidx/multidex/MultiDexApplication.class
com/example/Application.class
multiDexKeepProguard.pro:
-keep class androidx.multidex.MultiDexApplication
-keep class com.example.Application
我能够解决这个问题。如果文件位于 .androidlib.
中,Unity 似乎可以识别这些文件
我还发现了对我们不再在主 Activity 内部使用的 sdk 的引用。去掉code和sdk好像也安抚了dex大神
我们的一个 Unity 应用程序最近 运行 在 Android 上出现问题,应用程序 class 不在主 dex 中。结果是应用程序构建,但在启动时崩溃。
这是一个现有的 Android 应用程序,启用了 multidex,并且该应用程序扩展了 MultiDexApplication。我按照 Declare classes required in the primary DEX file 的说明进行操作,但抛出了相同的异常。
java.lang.RuntimeException: Unable to instantiate application com.example.Application: java.lang.ClassNotFoundException: Didn't find class "com.example.Application" on path: DexPathList
同样,在主 dex 中找不到 MultiDexApplication class,如在堆栈跟踪中进一步看到的那样:
Caused by: java.lang.ClassNotFoundException: Didn't find class "androidx.multidex.MultiDexApplication" on path: DexPathList
我试过了
- 添加 multiDexKeepFile.txt (
multiDexKeepFile file('multiDexKeepFile.txt')
) - 添加 multiDexKeepProguard.pro (
multiDexKeepProguard file('multiDexKeepProguard.pro')
)
- 注意:无论是否启用混淆器,都会出现此问题。
当我将 multiDexKeep 文件添加到 Assets/Plugins/Android/(gradle 文件所在的位置)时,Unity 似乎忽略了它们,即使在我导出项目时也是如此。所以我也尝试过:
- 使用 IPostprocessBuildWithReport 手动添加 multiDexKeep 文件。
- 使用 IPreprocessBuildWithReport 手动添加 multiDexKeep 文件。
- 制作一个包含 multiDexKeep 文件的 Android 库。
Unity 似乎无法自行处理 multiDexKeep 文件,但它能够使用任一进程导出它们。但是,即使我导出项目并在 Android Studio 中构建项目,classes 仍然没有出现在主 dex 中。
有人解决过这个问题吗?
multiDexKeepFile.txt:
androidx/multidex/MultiDexApplication.class
com/example/Application.class
multiDexKeepProguard.pro:
-keep class androidx.multidex.MultiDexApplication
-keep class com.example.Application
我能够解决这个问题。如果文件位于 .androidlib.
中,Unity 似乎可以识别这些文件我还发现了对我们不再在主 Activity 内部使用的 sdk 的引用。去掉code和sdk好像也安抚了dex大神