Android中代码混淆

来源:互联网 发布:软件开发职业方向 编辑:程序博客网 时间:2024/04/28 17:28
很多时候我们只需要打乱自己的代码就行了,第三方包的代码就是否要打乱就不要管了 # ------ 编译时需要用到的 jar 包-libraryjars D:/dev_rc/android-sdk-windows/add-ons/addon_google_apis_google_inc_11/libs/maps.jar # ------ 保护第三方jar包-----------keep class android.support.v4.**-dontwarn android.support.v4.** # ------ 保护百度地址jar包 ---------keep class com.baidu.mapapi.** { *; }-dontwarn com.baidu.mapapi.** -dontwarn com.classpackage.AA   #打包时忽略以下类的警告 #-keepnames class * implements java.io.Serializable-keepclassmembers class * implements java.io.Serializable { 保护所有实体中的字段名称   <fields>;} -keepclassmembers class * { #保护类中的所有方法名    public <methods>;}


当代码中使用反射机制时,由于函数名会被混淆掉,而对应的字符串是不会混淆的,会导致反射失败,所以有反射机制的类不能使用混淆

可以使用keep命令不混淆该类代码,如果有使用第三方开源库,不知道是否使用反射机制时,最好不要混淆。

-keep class com.test.** {*; }   //这句代码表示com.test包下的所有类都不混淆,一般适用于第三方开源库-keep class com.test.yourClassName { *; }   //表示com.test.yourClassName 这个类的代码不会被混淆//这个表示com.test.yourClassName中的yourFunction方法不会被混淆,其它会被混淆掉,如果特别不想让别人看你的代码,你就用这个吧。。。-keepclassmembers class * extends com.test.yourClassName {yourFunction的函数原型,比如public void test(int); //这里的类型要写完整类路径,比如java.io.Object}


原创粉丝点击