Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/179.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Proguard在合并的库清单中混淆活动名称_Android_Proguard - Fatal编程技术网

Android Proguard在合并的库清单中混淆活动名称

Android Proguard在合并的库清单中混淆活动名称,android,proguard,Android,Proguard,我有几个使用公共库项目的应用程序项目。最近,我尝试将一些常见的活动声明从每个应用程序项目的AndroidManifest.xml移动到库的清单中,并在project.properties中启用清单合并 调试版本中一切正常,但发布版本(由Proguard模糊处理)失败,出现ActivityNotFoundException。这是因为Proguard正在混淆库清单中声明的活动名称,而不是应用程序清单中声明的活动名称 我已经检查了应用程序项目的合并bin/AndroidManifest.xml文件,它

我有几个使用公共库项目的应用程序项目。最近,我尝试将一些常见的活动声明从每个应用程序项目的AndroidManifest.xml移动到库的清单中,并在
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

如果生成的应用程序仍然缺少其他类,您可以在ProGuard manual>Examples>

@Eric中找到更多手动配置,我认为这是构建系统中的一个bug()。您有什么解决方法或建议吗?@user802421显式添加上述-保留行应该可以解决问题。@Eric,显式添加仍然不起作用。仅保留apk项目清单中的类定义。现在我需要关闭合并并复制lib项目中的所有内容:(