近来正在做混淆编译的活,为什么呢?因为这个软件太复杂了,所以要采取一些保护措施,混淆编译当时做的很艰苦
配置文件默认的四大组件的子类是不会被混淆的,因为这个混淆只是把java代码做了混淆处理,不会对里面的XML文件AndroidManifest.xml做混淆,而这里面又含有Activity,Service,Application,BroadcastReceiver,ContentProvider的子类
1、在工程项目下新建文件proguard.cfg
2、文件内容是
-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontpreverify
-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 com.android.vending.licensing.ILicensingService
-keepclasseswithmembernames class * {
native <methods>;
}
-keepclasseswithmembernames class * {
public <init>(android.content.Context, android.util.AttributeSet);
}
-keepclasseswithmembernames class * {
public <init>(android.content.Context, android.util.AttributeSet, int);
}
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
-keep class * implements android.os.Parcelable {
public static final android.os.Parcelable$Creator *;
}
android-support-v4.jar 类库
-libraryjars libs/android-support-v4.jar
-dontwarn android.support.v4.**
-keep class android.support.v4.** { *; }
-keep interface android.support.v4.app.** { *; }
-keep public class * extends android.support.v4.**
-keep public class * extends android.app.Fragment
ant.jar 中文解压包。(项目里面用到了压缩文件里面带有中文文件名的问题)
-libraryjars libs/ant.jar
-dontwarn org.apache.tools.**
-keep class org.apache.tools.** { *; }
-keep interface org.apache.tools.** { *; }
-keep public class * extends org.apache.tools.**
最后还应该在project.properties文件里面声明 proguard.config=proguard.cfg
只是做了以上的配置的话,能顺利的混淆代码从而生成安装包,但是安装包不能安装。。问题还挺多。哎
2013/4/6 23:51
现在发现不能安装的问题了,原因是Android程序发布的时候需要签名,而当时我导出apk程序的时候选择的导出无签名的apk程序,所以手机不能安装上,英语不行啊,哎
2013/5/8
项目使用了webservice。
用到了 ksoap2-android-assembly-2.4-jar-with-dependencies.jar
-ignorewarnings
-libraryjars libs/ksoap2-android-assembly-2.4-jar-with-dependencies.jar
-dontwarn org.**
-keep class org.** { *; }
-keep interface org.** { *; }
-keep public class * extends org.**
2013/9/2
gson.jar
参考资料:http://code.google.com/p/google-gson/source/browse/trunk/examples/android-proguard-example/proguard.cfg