在打包发布android应用的时候,可以应用proguard来对代码进行混淆,防止有人反编译apk获取源代码。
之前创建android 2.3的项目的时候,会在根部录下自动创建proguard.cfg文件,4.0之后需要手动创建。
在工程中添加proguard.cfg,内容如下:
- -optimizationpasses 5
- -dontusemixedcaseclassnames
- -dontskipnonpubliclibraryclasses
- -dontpreverify
- -ignorewarnings
- -dontwarn
- -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 <methods>;
- }
- -keepclasseswithmembers class * {
- public <init>(android.content.Context, android.util.AttributeSet);
- }
- -keepclasseswithmembers class * {
- public <init>(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 *;
- }
上面的代码可以用于调用第三方包的情况。
然后在项目的project.properties文件中添加:
- proguard.config=proguard.cfg
如果没有keystore的话需要自己创建。
然后一路下一步,点finish,结果报错
conversion to dalvik format failed with error 1
原因是proguard版本的问题。
去http://proguard.sourceforge.net/下载最新版proguard
解压后将其中的lib和bin两个目录拷贝到/Your android sdk/tools/proguard文件夹下.
再Export一下,成功!