我有几个使用公共库项目的应用程序项目.我最近尝试将每个应用程序项目的AndroidManifest.xml中的一些常见Activity声明移动到库的清单中,并启用了与manifestmerger.enabled=truein 合并的清单project.properties.
在调试版本中一切正常,但发布版本(由Proguard混淆)失败了ActivityNotFoundException.这是因为Proguard混淆了库清单中声明的活动的名称,而不是应用程序清单中的活动名称.
我已经检查了bin/AndroidManifest.xml应用程序项目的合并文件,并且它正确地列出了活动名称.
有人可以建议一个解决方法吗?
标准 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
Run Code Online (Sandbox Code Playgroud)
如果生成的应用程序仍然缺少其他类,您可以在 ProGuard 手册 > 示例 >完整的 Android 应用程序中找到更多手动配置。
| 归档时间: |
|
| 查看次数: |
1924 次 |
| 最近记录: |