我正在发布一个用Eclipse开发的Android应用程序,正如标题中所述,我想将Proguard混淆集成到构建中,特别是用于导出已签名的应用程序。
如果没有沿着蚂蚁路走下去,任何人都有运气吗?
答案 0 :(得分:4)
我还想在不使用Ant或命令行方法的情况下执行此操作。这是有效的(仅限Eclipse + Windows):
(你需要下载Proguard。脚本希望在这里找到它:C:\ android-sdk_r04-windows \ proguard \ lib \ proguard.jar)。
创建Windows批处理文件“C:\ android-sdk_r04-windows \ obfusc.bat”:
DEL /S /Q obfuscated
MKDIR obfuscated
java -jar C:\android-sdk_r04-windows\proguard\lib\proguard.jar @android.pro
DEL /S /Q bin\com\
DEL /S /Q bin\org\
ROBOCOPY obfuscated\com bin\com /S
在Eclipse中,打开Android项目的属性页面,选择“Builders”窗格并添加“Program”类型的新构建器。在主选项卡的“位置”字段中,将脚本的绝对路径放在上一步中。在“工作目录”字段中输入变量$ {build_project}。在“构建选项”选项卡中,选择“运行构建器”下的“清理后”。
确保此构建工具紧挨着Android工具包构建器之前。
在Android项目的根文件夹中创建一个proguard配置文件。我稍微定制了这些并将它们包含在版本控制中,但这取决于你。我使用的文件在脚本中命名为“android.pro”,类似于开发博客中的配置,但包含带有injar,outjar和libraryjar语句的标题,例如:
-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);
}
我认为就是这样。
答案 1 :(得分:3)
好的,这是有关该主题的最相关和最近的帖子:
http://android-developers.blogspot.com/2010/09/proguard-android-and-licensing-server.html
它使用Ant,但所有的硬件都是为你完成的,只要你按照说明操作,它就可以了。注意:不要跳过更新,这只适用于SDK r7 +,对于AVD更新来说,运行eclipse的更新也不是一个坏主意。
并且,对于添加外部jar的人,请设置ProGuards procfg.txt并添加:
-libraryjars {path} {file_name} .jar
答案 2 :(得分:1)
如果您正在使用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