1、 . . . . . Android代码混淆、签名打包apk 一、 代码混淆 代码混淆说简单的其实就是为了防止别人反编译你的源代码,因为JAVA程序比拟容易被反编译,所以如果程序中有一些比拟重要的逻辑的话,通过代码混淆来处理确实可以阻止一下被人反编译。 不过代码混淆还是不能阻止被反编译xml格式的布局文件,混淆的是JAVA文件。但是混淆后的代码如果经验多的话,可是可以分析出来的,但这是少数。 下面开始说说这个东西是如何使用的,有两种方式可以实现代码混淆,一种是直接在eclipse中
2、android 2.3开始支持这个功能。另一种是使用ant。 首先我们会在项目中看到proguard.cfg或者proguard-project.txt文件,只需将project.properties里的分注释拿掉即可,去掉# 注:有的项目下面会存在proguard-project.txt,这时你直接拿掉注释即可;自定义的时候,创建文件proguard.cfg文件,将系统自带的proguard-project.txt容复制进去。 配置proguard.cfg文件, 考前须知:1、添加外部引用的外部jar包; 2、保存外部jar里的类以与方法;〔由于有的ja
3、r已经混淆过,再次混淆会出错〕 3、涉与到网络请求json数据返回的,需要将实体类保存,不参与混淆,并且每个实体类都需序列化;〔和服务器端实体类对应,参与混淆将无法解析〕 -optimizationpasses 5 -dontusemixedcaseclassnames -dontskipnonpubliclibraryclasses -dontpreverify -verbose -ignorewarnings -dontwarn -dontobfuscate -dontoptimize -libraryjarslibs/androi
4、d-support-v4.jar -libraryjarslibs/Core.jar -libraryjarslibs/yht.BASE64Decoder.jar -dontskipnonpubliclibraryclassmembers -dontskipnonpubliclibraryclasses -optimizations !code/simplification/arithmetic,!field/*,!class/merging/* -keep public class * extends android.app.Activity -keep
5、 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
6、 -keep public class * extends android.preference.Preference -keep public class .android.vending.licensing.ILicensingService -keep public class .broadtext.phreportfault.entity.**{*;} -keep public class .broadtext.phreportfault.service.result.**{*;} -keep class android.support.v4.**{*;} -k
7、eep class .google.zxing.**{*;} -keep class Decoder.BASE64Encoder.**{*;} -keepattributes Signature -keepclassmembers class * implements java.io.Serializable { static final long serialVersionUID; private static final java.io.ObjectStreamField[] serialPersistentFields; private voi
8、d writeObject(java.io.ObjectOutputStream);
private void readObject(java.io.ObjectInputStream);
java.lang.Object writeReplace();
java.lang.Object readResolve();
}
-keepclasseswithmembernames class * {
native 9、t>(android.content.Context, android.util.AttributeSet);
}
-keepclasseswithmembers class * {
public 10、ersenum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
-keep class * implements android.os.Parcelable {
public static final android.os.Parcelable$Creator *;
}
-keep class * implements android.os.Serializable {
*;
}
-keepclassmembers class fqcn.of.javascript.interface.for.webview {
public *;
}
二、 数字签名
所有的Android应用都必须有数字签名,没有不存在数字签名的应用,包括模拟器上运行的。Android系统不会安装没有数字证书的应用。
签名步骤:
右击项目,选择下列图中的1或者2
当已生成过密钥库,直接使用,无密钥库那么选择下的create new keystore
选择密钥,输入密码
完毕!
6 / 6






