首页前端开发JavaScript安全编程之Android APK打包代码混淆(代码实例)

安全编程之Android APK打包代码混淆(代码实例)

时间2024-01-28 21:10:03发布访客分类JavaScript浏览143
导读:收集整理的这篇文章主要介绍了安全编程之Android APK打包代码混淆(代码实例),觉得挺不错的,现在分享给大家,也给大家做个参考。本篇文章给大家带来的内容是关于安全编程之AndROId APK打包代码混淆(代码实例),有一定的参考价值,...
收集整理的这篇文章主要介绍了安全编程之Android APK打包代码混淆(代码实例),觉得挺不错的,现在分享给大家,也给大家做个参考。本篇文章给大家带来的内容是关于安全编程之AndROId APK打包代码混淆(代码实例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

第一步:在项目工程目录下的PRoGuard-rules.pro文件中配置自定义的混淆规则

#注意:#1.引用外部的jar包 如果不是自己写的最好不混淆它们,因为外部jar包有可能已经混淆过#2.不要混淆XML布局中使用的自定义控件类,混淆后加载布局会报找不到该控件错误#3.不要混淆Manifests中配置的组件类,混淆后系统会找因不到该组件而报错#------------------------------------------------------------------#指定代码的压缩级别-optimizationpasses 5#表示混淆时不使用大小写混合类名,混淆后的类名为小写-dontuSEMixedcaseclassnames#表示不进行优化,建议使用此选项,因为根据proguard-android-optimize.txt中的描述,优化可能会造成一些潜在风险,不能保证在所有版本的Dalvik上都正常运行。-dontoptimize# 混淆时输出日志-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#表示不混淆任何包含native方法的类的类名以及native方法名-keepclasseswithmembernames class * {
        native methods>
    ;
}
#表示不混淆任何一个View中的setXxx()和getXxx()方法,因为属性动画需要有相应的setter和getter的方法实现,混淆了就无法工作了。-keepclassmembers public class * extends android.view.View {
       void set*(***);
       *** get*();
}
#表示不混淆Activity中参数是View的方法,因为有这样一种用法,在XML中配置android:onClick=”buttonClick”属性,当用户点击该按钮时就会调用Activity中的buttonClick(View view)方法,如果这个方法被混淆的话就找不到了。-keepclassmembers class * extends android.app.Activity {
        public void *(android.view.View);
}
#表示不混淆枚举中的values()和valueOf()方法-keepclassmembers enum * {
        public static **[] values();
        public static ** valueOf(java.lang.String);
}
#表示不混淆Parcelable实现类中的CREATOR字段,毫无疑问,CREATOR字段是绝对不能改变的,包括大小写都不能变,不然整个Parcelable工作机制都会失败。-keepclassmembers class * implements android.os.Parcelable {
        public static final android.os.Parcelable$Creator CREATOR;
}
#表示不混淆R文件中的所有静态字段,我们都知道R文件是通过字段来记录每个资源的id的,字段名要是被混淆了,id也就找不着了。-keepclassmembers class **.R$* {
        public static fields>
    ;
}
#保持自定义控件类不被混淆-keepclasseswithmembers class * {
        public init>
    (android.content.Context, android.util.AttributeSet);
}
#保持自定义控件类不被混淆-keepclasseswithmembers class * {
        public init>
    (android.content.Context, android.util.AttributeSet, int);
}
#过滤掉自己编写的实体类以及自定义控件类-keep class com.beacon.supertool.bean.**{
    *;
}
-keep class com.beacon.supertool.widget.**{
    *;
}
#不需要混淆第三方类库-dontwarn android.support.v4.**                #去掉警告-keep class android.support.v4.** {
     *;
 }
        #过滤android.support.v4-keep interface android.support.v4.app.** {
     *;
 }
-keep public class * extends android.support.v4.**-keep public class * extends android.app.Fragment#不需要混淆butterknife-dontwarn butterknife.**-keep class butterknife.** {
     *;
}
#不需要混淆gson-dontwarn com.GOOGLE.**-keep class com.google.gson.** {
    *;
}
#不需要混淆glide-dontwarn com.bumptech.glide.**-keep class com.bumptech.glide.** {
    *;
}
#不需要混淆okhttP3 okio-dontwarn okhttp3.**-keep class okhttp3.** {
    *;
}
-dontwarn okio.**-keep class okio.** {
    *;
}
    #不需要混淆第三方库库或jar......

第二步:在项目工程目录下的build.gradle文件中修改

   buildTypes {
//      debug版本的配置        debug {
            versionNameSuffix "-debug"            minifyEnabled false            zipAlignEnabled false            shrinkResources false            signingconfig signingConfigs.debug        }
//      release版本的配置        release {
            // 不显示LOG            buildConfigField "boolean", "LOG_DEBUG", "false"            //混淆            minifyEnabled true            //Zipalign优化            zipAlignEnabled true            // 移除无用的resource文件            shrinkResources true            proguarDFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'        }
    }
    

以上就是对安全编程之Android APK打包代码混淆(代码实例)的全部介绍,如果您想了解更多有关HTML视频教程,请关注PHP中文网。

以上就是安全编程之Android APK打包代码混淆(代码实例)的详细内容,更多请关注其它相关文章!

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!

上一篇: web前端如何更新缓存?单例模式封...下一篇:$http与ajax的同步请求(代码实例...猜你在找的JavaScript相关文章 html font标签如何设置字体大小?html font标签属性用法介绍2022-05-16vue3+TypeScript+vue-router的使用方法2022-04-16vue3获取当前路由地址2022-04-16如何利用React实现图片识别App2022-04-16JavaScript展开运算符和剩余运算符的区别详解2022-04-16微信小程序中使用vant框架的具体步骤2022-04-16Vue elementUI表单嵌套表格并对每行进行校验详解2022-04-16如何利用Typescript封装本地存储2022-04-16微信小程序中wxs文件的一些妙用分享2022-04-16JavaScript的Set数据结构详解2022-04-16 其他相关热搜词更多phpjavapython程序员loadpost-format-gallery

若转载请注明出处: 安全编程之Android APK打包代码混淆(代码实例)
本文地址: https://pptw.com/jishu/590162.html
利用HTML+CSS设计一个简单的用户注册页面【示例】 web前端要学什么内容?前端入门需要注意什么

游客 回复需填写必要信息