导出已签名、模糊的Android应用程序时,如何在Eclipse中设置ProGuard?
我正在发布一个在Eclipse中开发的Android应用程序,正如标题中所述,我想将Proguard模糊处理集成到构建中,专门用于导出已签名的应用程序导出已签名、模糊的Android应用程序时,如何在Eclipse中设置ProGuard?,android,eclipse,obfuscation,proguard,Android,Eclipse,Obfuscation,Proguard,我正在发布一个在Eclipse中开发的Android应用程序,正如标题中所述,我想将Proguard模糊处理集成到构建中,专门用于导出已签名的应用程序 有谁不走蚂蚁之路就有好运吗?好的,这是关于这个主题的最相关也是最新的帖子: 它使用Ant,但所有的硬部件都是为您完成的,只要您按照说明操作,它就可以工作。注意:不要跳过更新,这只适用于SDK r7+,对于AVD更新,运行eclipse的更新也不是一个坏主意 对于任何添加外部JAR的用户,请设置ProGuards procfg.txt并添加: -
有谁不走蚂蚁之路就有好运吗?好的,这是关于这个主题的最相关也是最新的帖子: 它使用Ant,但所有的硬部件都是为您完成的,只要您按照说明操作,它就可以工作。注意:不要跳过更新,这只适用于SDK r7+,对于AVD更新,运行eclipse的更新也不是一个坏主意 对于任何添加外部JAR的用户,请设置ProGuards procfg.txt并添加:
-libraryjars{path}{file_name}.jar我也希望在不使用Ant或命令行方法的情况下实现这一点。以下是工作原理(仅限Eclipse+Windows):
- (您需要下载Proguard。脚本希望在这里找到它:C:\android-sdk\u r04-windows\Proguard\lib\Proguard.jar)
- 创建Windows批处理文件“C:\android-sdk\U r04-Windows\obfusc.bat”:
- 在Eclipse中,打开Android项目的属性页面,选择“构建器”窗格并添加一个类型为“Program”的新构建器。在主选项卡的“Location”字段中,在上一步中输入脚本的绝对路径。在“工作目录”字段中放入变量${build_project}。在“构建选项”选项卡中,在“运行构建器”下选择“清理后”
- 确保这个构建工具排在最后,就在Android软件包生成器之前
- 在Android项目的根文件夹中创建proguard配置文件。我稍微自定义了这些,并将它们包含在修订控制中,但这取决于您。我使用的文件名为“android.pro”,如脚本中所述,与dev blog中的配置类似,但包含一个带有injar、outjar和libraryjar语句的头,例如:
- 您将希望在大多数情况下关闭此生成器。当需要测试或导出一个模糊的APK时,打开它,然后从Eclipse执行“Project>Clean”,包括该项目和它所依赖的任何库项目
我想就是这样。如果您使用的是eclipse,只需取消注释
project.properties
行即可
# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
现在新的Eclipse和Android SDK还需要它吗?那么在所有步骤之后,模糊的apk存储在哪里呢?的答案描述了已更新的更改,以尊重SDK中的更改。
-injars bin(!.svn/**)
-outjars obfuscated
-libraryjars C:\android-sdk_r04-windows\android-sdk-windows\platforms\android-1.6\android.jar
-libraryjars C:\GoogleAnalyticsAndroid_0.7\libGoogleAnalytics.jar
-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontpreverify
-verbose
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
-printmapping proguard.map
-keepattributes SourceFile,LineNumberTable
-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 com.android.vending.licensing.ILicensingService
-keepclasseswithmembernames class * {
native ;
}
-keepclasseswithmembernames class * {
public (android.content.Context, android.util.AttributeSet);
}
-keepclasseswithmembernames class * {
public (android.content.Context, android.util.AttributeSet, int);
}
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt