Android APK打包代码混淆规则怎么定义
发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,这篇文章主要介绍了Android APK打包代码混淆规则怎么定义的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Android APK打包代码混淆规则怎么定义文章都会有所收
千家信息网最后更新 2025年02月01日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;}#表示不混淆任何一个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 ;}#保持自定义控件类不被混淆-keepclasseswithmembers class * { public (android.content.Context, android.util.AttributeSet);}#保持自定义控件类不被混淆-keepclasseswithmembers class * { public (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打包代码混淆规则怎么定义"这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对"Android APK打包代码混淆规则怎么定义"知识都有一定的了解,大家如果还想学习更多知识,欢迎关注行业资讯频道。
方法
代码
规则
字段
控件
文件
配置
版本
知识
组件
内容
大小
属性
工程
布局
目录
第三方
篇文章
类名
系统
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
虹口区信息软件开发厂家批发价
Esemble蛋白质数据库
闵行区服务软件开发教育
初中网络安全知识教育
怪猎崛起服务器稳定么
党建设计软件开发公司
万方数据库医学论文
数据库数据按固定顺序输出
网络安全值不值得考研
dsp软件开发流程
软件开发好还是后期制作好
泰安数据库安全防护系统
便捷的数据库管理工具mysql
vuedjango软件开发
传奇物品数据库 宝石
gt240显卡能做软件开发吗
数据库名称设计
青岛戴尔服务器授权代理
网络技术推广服务入什么科目
国家实行网络安全分级管理
石家庄软件开发后端招聘
甲方软件开发需求并发量
软件开发中设计阶段是指
15000pi数据库
软件工程包括软件开发技术
软件数据库安装视频
数据库纵向怎么能变成横向打印
音频宿主软件开发
传奇4国际服服务器sa
建立档案用什么数据库