Android:proguard 不会混淆源代码

Posted

技术标签:

【中文标题】Android:proguard 不会混淆源代码【英文标题】:Android: proguard is not obfuscating the source 【发布时间】:2013-01-16 23:02:27 【问题描述】:

我在 project.properties 中启用了 proguard:

proguard.config=proguard.cfg

我的 proguard.cfg 没有禁用混淆。但没有任何东西被混淆。

我使用

运行项目构建

蚂蚁释放。

有铃声响起吗?


-优化通过 5 -dontusemixedcase类名 -dontskipnonpubliclibraryclasses -dontpreverify -详细 -优化 !code/simplification/arithmetic,!field/,!class/merging/

-保持公共类 * 扩展 android.app.Activity -保持公共类 * 扩展 android.app.Application -keep public class * 扩展 android.app.Service -保持公共类 * 扩展 android.content.BroadcastReceiver -保持公共类 * 扩展 android.content.ContentProvider -保持公共类 * 扩展 android.app.backup.BackupAgentHelper -keep public class * 扩展 android.preference.Preference -保持公共类com.android.vending.licensing.ILicensingService

-keepclasseswithmembernames class * 本国的 ;

-keepclasseswithmembers class * 公共(android.content.Context,android.util.AttributeSet);

-keepclasseswithmembers class * 公共(android.content.Context,android.util.AttributeSet,int);

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

-keepclassmembers 枚举 * 公共静态 *[] 值(); 公共静态 * valueOf(java.lang.String);

-keep class * 实现 android.os.Parcelable public static final android.os.Parcelable$Creator *;


【问题讨论】:

如何检查是否有任何内容被混淆?你可以在这里发布你的 proguard.cfg 吗?您是否在 ant 输出中看到 proguard 正在处理您的文件? 用 proguard.cfg 编辑了问题。我只是在源代码中抛出一个异常并观察堆栈跟踪。有点愚蠢,但仍然有效。而且我注意到应该混淆的类不是。此外,在构建时,当构建经过“混淆”阶段时,我什么也看不到。 【参考方案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 中定义(不再在 proguard.cfg 中,就像在旧版本的 SDK 中一样)。 SDK 文档在这方面可能并不完全是最新的。

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

【讨论】:

【参考方案2】:

@Thanks Danail,今天我刚刚克服了这个问题。只是详细说明

android:debuggable 是否可以调试应用程序,即使在用户模式下在设备上运行时也是如此——如果可以,"true",如果不能,则为“false”。默认值为“false”。

更多详情您可以访问

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

【讨论】:

【参考方案3】:

这比我想象的要简单得多:我们(在 manifest.xml 文件中)启用了

android:debuggable="true"

哦。

【讨论】:

以上是关于Android:proguard 不会混淆源代码的主要内容,如果未能解决你的问题,请参考以下文章

从 Android Studio 构建替代 buildType 时,ProGuard 不会混淆

Android ProGuard - 只有混淆

Android ProGuard - 只有混淆

Android Proguard - dontobfuscate 不会禁用混淆

Proguard 可以混淆 Android 库项目 (APKLIB) 吗?

代码混淆