我有几个使用公共库项目的应用程序项目。我最近尝试将每个应用程序项目的AndroidManifest.xml中的一些常见Activity声明移动到库的清单中,并在manifestmerger.enabled=true
中启用了与project.properties
合并的清单。
在调试版本中一切正常,但发布版本(由Proguard混淆)失败并显示ActivityNotFoundException
。这是因为Proguard混淆了库清单中声明的活动的名称,而不是应用程序清单中的活动名称。
我检查了应用程序项目的合并bin/AndroidManifest.xml
文件,并且它正确列出了活动名称。
有人可以建议一个解决方法吗?
答案 0 :(得分:2)
标准Ant构建过程调用aapt工具来创建ProGuard配置(bin / proguard.txt),该配置保留必要的类(例如,它认为使用的所有活动)。如果这对您的项目结构不起作用(可能是错误或不支持的情况),您可以在proguard-project.txt中自行保留这些类:
-keep public class * extends android.app.Activity
-keep public class * extends android.app.Application
-keep public class * extends android.app.Service
-keep public class * extends android.content.BroadcastReceiver
-keep public class * extends android.content.ContentProvider
如果生成的应用程序仍然缺少其他类,您可以在ProGuard手册中找到更多手动配置>例子> A complete Android application