首页 > 编程知识 正文

android混淆规则,安卓哪些不能混淆

时间:2023-05-03 09:35:45 阅读:111591 作者:287

请尊重别人的劳动成果。 转载请注明来源: 《Android代码混淆技巧》

因为Android是使用Java开发的,所以开发人员可以使用ProGuard混淆代码。 SDK已经集成了ProGuard工具,开发人员可以从SDK目录的toolsproguard目录中查看。

ProGuard是免费的Java类文件收缩,优化,混淆和预校验器。它可以检测并删除未使用的类,字段,方法和属性。它可以优化字节码,并删除未使用的指令。它可以将类、字段和方法使用短无意义的名称进行重命名最后,经过预验证的Java6或Java MicroEdition处理的代码。

让我给大家展示一下将使用第三方库的项目混淆的经验。

默认情况下,ProGuard还会对第三方库进行模糊处理,但某些第三方库已经模糊处理,而某些库正在使用Java反射技术,因此在代码模糊处理时,这些第三方库会被混淆要排除第三方库的混淆,请将混淆规则文件(通常为proguard-project.txt或proguard.cfg或proguard-rules.pro或proguard-rules.proguard-rules

使用Gson等工具时,避免混淆作为JavaBean类的实体类。

2 .如果使用自定义控件,请不要混淆。

3 .如果使用枚举,请不要混淆枚举。

4 .不要混淆第三方库中的类

a .保护混淆时引用的第三方jar包

例如,- libraryjarslibs/baidumapapi _ v3 _2_0. jar #可保护引用的第三方jar包不混淆

注意:使用Eclipse ADT时必须添加-libraryjars libs/. 对于使用Android Studio开发的项目,不需要将其添加到libs软件包的jar软件包中。 这是因为Android Studio中的混淆代码已经添加到lib目录的jar中,所以不需要再次手动添加。 否则,将出现Java.io.io exception : thesameinputjarisspecifiedtwice错误。

b .在混淆时保护第三方jar包中的类免受混淆

例如,-keep class com.baidu.** { *; 不要警告ProGuard在名为com.baidu.**的包中找不到有关类的引用

不要将包- dontwarncom.Baidu.* # com.Baidu.* *中的所有类与所有方法混淆。

附件:小编开发中使用的一些混淆规则,大家可以根据需要复制到自己项目的混淆规则文件中。

# # # # # } #实体体系不参与混淆- keepclasscom.jph.Android.view.* * { *; } # # # # # # # # # # # # Baidu map # # # # # # # # #-libraryjarslibs/baidumapapi _ v3 _2_ #-2 }-keeeke }-dontwarncom.Baidu.* # # # # # # # # # # # afinal # # # # # # # #-libraryjarslibs/# # #-library } # #-kkk } #-dontwarnet.tsz.afinal.* # # # # # # # # # # # x utils # # # # # # # # # # # # # # # # # # -库存储器# # # # # # #-keeep pubbbbbbbuty - keepattributessignature-keep attributes * annotation *-keeppubllibutes }-dontwarncom.Li droid.x utils.*-keepclasclass 方法; }#############支付宝(Alipay ) ###

###############-libraryjars libs/alipaysecsdk.jar-libraryjars libs/alipayutdid.jar-libraryjars libs/alipaysdk.jar-keep class com.alipay.android.app.IAliPay{*;}-keep class com.alipay.android.app.IAlixPay{*;}-keep class com.alipay.android.app.IRemoteServiceCallback{*;}-keep class com.alipay.android.app.lib.ResourceMap{*;}################gson##################-libraryjars libs/gson-2.2.4.jar-keep class com.google.gson.** {*;}#-keep class com.google.**{*;}-keep class sun.misc.Unsafe { *; }-keep class com.google.gson.stream.** { *; }-keep class com.google.gson.examples.android.model.** { *; } -keep class com.google.** { <fields>; <methods>;}-keepclassmembers class * implements java.io.Serializable { static final long serialVersionUID; private static final java.io.ObjectStreamField[] serialPersistentFields; private void writeObject(java.io.ObjectOutputStream); private void readObject(java.io.ObjectInputStream); java.lang.Object writeReplace(); java.lang.Object readResolve();}-dontwarn com.google.gson.**################httpmime/httpcore##########-libraryjars libs/httpcore-4.3.2.jar-libraryjars libs/httpmime-4.3.5.jar-keep class org.apache.http.** {*;}-dontwarn org.apache.http.**####################jpush##################-libraryjars libs/jpush-sdk-release1.7.1.jar-keep class cn.jpush.** { *; }-keep public class com.umeng.fb.ui.ThreadView { } #双向反馈功能代码不混淆-dontwarn cn.jpush.**-keepclassmembers class * { public <init>(org.json.JSONObject);} #不混淆R类-keep public class com.jph.android.R$*{ public static final int *;}-keepclassmembers enum * { public static **[] values(); public static ** valueOf(java.lang.String);}####################umeng##################-libraryjars libs/umeng-analytics-v5.2.4.jar-keep class com.umeng.analytics.** {*;}-dontwarn com.umeng.analytics.**#-keep public class * extends com.umeng.** #-keep public class * extends com.umeng.analytics.** #-keep public class * extends com.umeng.common.** #-keep public class * extends com.umeng.newxp.** -keep class com.umeng.** { *; } -keep class com.umeng.analytics.** { *; } -keep class com.umeng.common.** { *; } -keep class com.umeng.newxp.** { *; } -keepclassmembers class * { public <init>(org.json.JSONObject);}-keep class com.umeng.**-keep public class com.idea.fifaalarmclock.app.R$*{ public static final int *;}-keep public class com.umeng.fb.ui.ThreadView {}-dontwarn com.umeng.**-dontwarn org.apache.commons.**-keep public class * extends com.umeng.**-keep class com.umeng.** {*; }####################universal-image-loader########-libraryjars libs/universal-image-loader-1.9.3.jar-keep class com.nostra13.universalimageloader.** {*;}-dontwarn com.nostra13.universalimageloader.**####################zxing#####################-libraryjars libs/zxing.jar-libraryjars libs/zxing_apply.jar-keep class com.google.zxing.** {*;}-dontwarn com.google.zxing.**####################BASE64Decoder##################-libraryjars libs/sun.misc.BASE64Decoder.jar####################support.v4#####################-libraryjars libs/android-support-v4.jar-keep class android.support.v4.** { *; }-dontwarn android.support.v4.**###################other##################### slidingmenu 的混淆-dontwarn com.jeremyfeinstein.slidingmenu.lib.**-keep class com.jeremyfeinstein.slidingmenu.lib.** { *; }# ActionBarSherlock混淆-dontwarn com.actionbarsherlock.**-keep class com.actionbarsherlock.** { *; }-keep interface com.actionbarsherlock.** { *; }-keep class * extends java.lang.annotation.Annotation { *; }-keepclasseswithmembernames class * { native <methods>;}-keep class com.jph.android.entity.** { <fields>; <methods>;}-dontwarn android.support.**-dontwarn com.slidingmenu.lib.app.SlidingMapActivity-keep class android.support.** { *; }-keep class com.actionbarsherlock.** { *; }-keep interface com.actionbarsherlock.** { *; }-keep class com.slidingmenu.** { *; }-keep interface com.slidingmenu.** { *; }

推荐阅读:《Android开发之反编译与防止反编译》

《Android代码混淆指南》 


        

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。