Java Proguard不断破坏已签名的APK
我有一个项目,它在从eclipse运行时运行良好,但在由签名的APK安装时运行不好 此项目使用一些库:Java Proguard不断破坏已签名的APK,java,android,eclipse,proguard,Java,Android,Eclipse,Proguard,我有一个项目,它在从eclipse运行时运行良好,但在由签名的APK安装时运行不好 此项目使用一些库: Pulltorefresh 通用图像加载器 android支持v4(JAR) gson(JAR) youtubeandroidplayerapi(罐) 我不想让proguard接触任何这些库,因此我在proguard-project.txt中使用: -libraryjars libs -keep class com.handmark.pulltorefresh.library.** { *;
-libraryjars libs
-keep class com.handmark.pulltorefresh.library.** { *; }
-keep interface com.handmark.pulltorefresh.library.** { *; }
-keep class com.nostra13.universalimageloader.** { *; }
-keep interface com.nostra13.universalimageloader.** { *; }
-keep class android.support.v4.app.** { *; }
-keep interface android.support.v4.app.** { *; }
-keep class com.google.** { *; }
-keep interface com.google.** { *; }
这是我的项目。属性
:
proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
这些proguard代码可以工作,因为我添加它们后生成的APK的大小更大。然而,当我从已签名的APK安装它时,该项目仍处于崩溃状态
我试图通过这样做来发现发生了什么:
retrace.bat -verbose mapping.txt dump.txt
之后,我的cmd
疯狂地输出了一些东西,但我不知道错误在哪里
请帮帮我,我刚开始前进。提前谢谢
编辑
对不起,伙计们,我说的“破坏”是指我的列表视图不显示任何数据/项目…永远加载。毫无例外。Grouguard keep语句
Keep语句是一种告诉Proguard保留代码位的方法,即使它们不是直接从应用程序代码调用的。一个很好的例子是main活动活动
。它不是从代码中调用的,但是您仍然需要将其保留在最终的包中,并且不要更改其名称
这些是您配置的唯一keep语句吗?如果是真的,你就缺少一些基本的。以下是最低限度Android配置的基本示例(第7节):
回溯
回溯是一种重新创建堆栈跟踪的方法
所以首先我们需要你崩溃的堆栈跟踪。在设备/模拟器上运行APK并获取崩溃异常和堆栈跟踪。它应该类似于:a.b.m.a()上的NullPointerException。
使用GUI回溯(更容易使用)获得实际的堆栈跟踪,然后您可以转到原始代码并尝试调试崩溃
反思与前瞻
Proguard破坏流的一个常见原因是需要将反射通知Proguard。例如,来自布局XML的方法调用是通过反射完成的,但是由于没有来自代码本身的调用,Proguard不知道它拥有保留相关方法的权限
有关此主题的更多信息,请参阅此问题:
如果您想排除反射问题,我建议您首先禁用Proguard代码收缩:。Define“当我从已签名的APK安装项目时,项目仍在中断”。你有例外吗?如果是,什么例外?如果您希望so社区为您调试问题,至少提供错误详细信息(日志、堆栈跟踪等)。“现在看来,这是一条很宽的路。”OlegEstekhin我试过使用retrace.bat,但错误在哪里?Thanks@Michael完成,请查看我编辑的问题。没有任何例外。对不起,我修改了我的答案。谢谢。我还使用SDK中存储的默认proguard配置。对于回溯,您是指使用logcat吗?我的日志中没有错误,GUI回溯在哪里?GUI:proguard.sourceforge.net/manual/GUI.htmlLogcat应该声明崩溃。你过滤掉什么了吗?