Eclipse可以生成默认的proguard配置文件吗
Posted
技术标签:
【中文标题】Eclipse可以生成默认的proguard配置文件吗【英文标题】:Can Eclipse generate a default proguard configuration file 【发布时间】:2012-08-16 06:00:35 【问题描述】:我正在尝试在我的 android 项目上启用 proguard 代码混淆。这些年来,我看到了很多问题,但很多话题都已经很老了,很难说它们对我有多重要。
我无法让 Eclipse 生成默认的 proguard 配置文件,所以我一直在尝试拼凑一个,这很痛苦(我从中获得的构建几乎立即崩溃,并且似乎掩盖了第 3 方的某些元素我在应用程序中使用的库)。我可以理解生成的文件现在可能是完美的,但它似乎至少可以在正确处理项目库方面有所突破。
这是我尝试启用 proguard 的步骤。
1 确保我的 Eclipse 和 Android SDK 是最新的。
2 编辑project.properties,取消注释
proguard.config=$sdk.dir/tools/proguard/proguard-android.txt:proguard-project.txt
3 由于 proguard-project.txt 不存在,立即构建失败。 (这里是我希望它生成的地方)
4 我在 proguard-project.txt 中创建了自己的 proguard.config 文件(内容如下所示)
-injars bin/classes -outjars bin/classes-processed.jar -libraryjars libs/FlurryAgent.jar:libs/GoogleAdMobAdsSdk-4.1.1.jar -libraryjars 库/commons-codec-1.4.jar -libraryjars 库/commons-io-2.1.jar -libraryjars 库/commons-logging-1.1.1.jar -libraryjars 库/httpclient-4.1.2.jar -libraryjars 库/httpclient-cache-4.1.2.jar -libraryjars 库/httpcore-4.1.3.jar -libraryjars 库/httpmime-4.1.2.jar -libraryjars 库/mapquest-android-sdk-1.0.3.jar -libraryjars libs/oranjestad-notifications-1.0.jar
-dontwarn org.apache.** -dontwarn org.ietf.*
-keepnames org.apache.**
-dontpreverify -重新包装类'' -允许访问修改 -优化!代码/简化/算术 -keepattributes 注解
-保持公共类 * 扩展 android.app.Activity -保持公共类 * 扩展 android.app.Application -keep public class * 扩展 android.app.Service -保持公共类 * 扩展 android.content.BroadcastReceiver -keep public class * 扩展 android.content.ContentProvider
-保持公共类 * 扩展 android.view.View 公共(android.content.Context); 公共(android.content.Context,android.util.AttributeSet); 公共(android.content.Context,android.util.AttributeSet,int); 公共无效集*(...);
-keepclasseswithmembers class * 公共(android.content.Context,android.util.AttributeSet);
-keepclasseswithmembers class * 公共(android.content.Context,android.util.AttributeSet,int);
-keepclassmembers 类 * 扩展 android.content.Context public void *(android.view.View);公共无效*(android.view.MenuItem);
-keepclassmembers 类 * 实现 android.os.Parcelable 静态 android.os.Parcelable$Creator CREATOR;
-keepclassmembers 类 *.R$ 公共静态;
5 此时,我的项目已构建,但由于有关日志记录的一些类强制转换异常而失败。这让我回到第 3 步,我希望基于 eclipse 库依赖项生成一个合理的 proguard-project.txt。显然我创建的 on 不对。
【问题讨论】:
【参考方案1】:更新 SDK 后,您还必须确保更新项目本身:
android update project --path MyAndroidProjectDirectory
在最近的 Android SDK 中,这应该会创建 proguard-project.txt
。
【讨论】:
【参考方案2】:除非您的设置有问题,否则创建新的 Android 项目时,也会记下 proguard 配置文件。所以只需设置虚拟项目并检查它的文件夹 - 它应该在那里。将其复制回您当前的项目并根据需要进行调整。
【讨论】:
以上是关于Eclipse可以生成默认的proguard配置文件吗的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Eclipse 和调试模式下使用 proguard?