2

我正在尝试使用 proguard 来混淆我的 Android 应用程序的代码。

我的问题是我的应用程序的某些屏幕工作正常,其他一些屏幕显示空白屏幕(虽然不是完全空白,例如我的顶部标题栏显示正确,但其余内容为空白)。

我从基本设置开始:

proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt

然后,在 proguard-project.txt 中,我尝试添加:

-keep class {my.package.name}.** { *; }

没变

然后

-dontskipnonpubliclibraryclassmembers

没变

然后

-dontobfuscate

这显然解决了问题,但是没有意义,因为我想混淆我的代码。

任何想法?

4

1 回答 1

0

查看 ProGuard 创建的输出;它会告诉你哪些类被重命名,哪些类被删除(因为它们似乎没有被使用)。当然,您将需要修改您的配置来重命名或删除这些类。通常,您可以在您的 AndroidManifest.xml 和混淆后丢失的部分之间找到交互(并且您的 logcat 甚至可能会告诉您丢失了什么)。不太可能是使用反射导致 ProGuard 没有意识到保持这些东西完好无损的重要性。

如果您决定需要对正在更改但仍是必要的内容进行完全混淆,您将需要创建不受混淆且知道如何访问真实类的瘦对象代理。

于 2013-09-25T11:33:32.517 回答