【发布时间】:2020-08-24 04:46:18
【问题描述】:
我正在模块化我们正在进行的项目。
假设有一个应用模块。
还有“n”个其他模块。 这些模块实现了app模块(即实现项目(':app_module'))
从应用模块我需要启动模块 1..n
我使用反射来获取 app_module 中的活动引用。
val intent = Intent()
intent.setClass(context, Class.forName("com.application.myapp.HelpActivity"))
context.startActivity(intent)
所以当我运行应用程序时它工作正常。
但是当我生成 Signed debug build 并安装它时,我得到了 ClassNotFoundException
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.application.myapp.HelpActivity" on path: DexPathList
知道是什么导致签名调试构建中的反射失败?
注意:这不是亲卫问题。我已经禁用它并且我已经检查过了。有同样的问题。
谢谢。
【问题讨论】:
-
我确定这是一个混淆问题。请在您签名的 APK 上使用 APK 分析器(在 Android Studio 中)并检查您的课程是否确实存在。
-
嘿,我分析了APK发现我的模块不在classes.dex中。但是我已经在 pro-guard 中添加了该模块。而且我也启用了multidex。有什么想法吗?
-
将您的 gradle 文件和 proguard 配置的相关部分添加到您的问题中。
-
嗨,大卫,我知道了这个问题。这是因为在模块清单 dist:onDemand="true" 中,这就是模块类不存在于 dex 文件中的原因。谢谢。
-
很高兴您能够解决问题。您可以为自己的问题创建一个答案并接受该答案。它会将问题从未回答的问题列表中删除,并可能帮助遇到类似问题的其他人。
标签: android gradle proguard android-module