安卓:proguard未对源代码进行混淆

5

我在project.properties中启用了proguard:

proguard.config=proguard.cfg

我的proguard.cfg没有禁用混淆。但是没有进行混淆。

我使用

ant release.

运行项目构建。

有任何提示音吗?


-optimizationpasses 5 -dontusemixedcaseclassnames -dontskipnonpubliclibraryclasses -dontpreverify -verbose -optimizations !code/simplification/arithmetic,!field/,!class/merging/

-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 -keep public class * extends android.app.backup.BackupAgentHelper -keep public class * extends android.preference.Preference -keep public class com.android.vending.licensing.ILicensingService

-keepclasseswithmembernames class * { native ; }

-keepclasseswithmembers class * { public (android.content.Context, android.util.AttributeSet); }

-keepclasseswithmembers class * { public (android.content.Context, android.util.AttributeSet, int); }

-keepclassmembers class * extends android.app.Activity { public void *(android.view.View); }

-keepclassmembers enum * { public static *[] values(); public static * valueOf(java.lang.String); }

-keep class * implements android.os.Parcelable { public static final android.os.Parcelable$Creator *; }



你怎么检查没有混淆代码呢?你能在这里发布你的proguard.cfg吗?你是否看到ant输出中显示proguard正在处理你的文件? - Victor Ronin
编辑了proguard.cfg文件。我只是在源代码中抛出一个异常并查看堆栈跟踪。有点愚蠢,但仍然有效。我注意到应该混淆的类没有被混淆。此外,在构建时,当构建进入“混淆”阶段时,我看不到任何东西。 - Danail
3个回答

1
这比我想象的要简单得多:我们在manifest.xml文件中启用了。
android:debuggable="true"

抱歉。

1

您应该确保您的项目已配置为您的Android SDK:

android update project -p MyProjectDirectory

从Android SDK r20开始,ProGuard配置文件被拆分成几个部分,这些部分在project.properties中指定:
proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt

短的项目特定配置在proguard-project.txt中定义(不再像旧版本SDK中的proguard.cfg那样)。在这方面,SDK文档可能并不完全更新。

当您运行ant release时,应该会看到来自ProGuard的一些日志输出。


1
@感谢Danail,今天我刚刚克服了这个问题。只是详细说明一下。 android:debuggable 应用程序是否可以在用户模式下运行时进行调试——如果可以,则为"true",如果不能,则为"false"。默认值为"false"。
要了解更多详细信息,请访问。

http://www.vogella.com/tutorials/AndroidDebugging/article.html


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接