Android APK打包代码混淆规则怎么定义
发表于:2025-11-08 作者:千家信息网编辑
千家信息网最后更新 2025年11月08日,这篇文章主要介绍了Android APK打包代码混淆规则怎么定义的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Android APK打包代码混淆规则怎么定义文章都会有所收
千家信息网最后更新 2025年11月08日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安全错误
数据库的锁怎样保障安全
四川工控软件开发哪家正规
数据库广告表
数据库服务器集群管理
税务部门网络安全制度
厦门339互联网科技
广东社交软件开发定制
服务器硬盘升级教程
江苏工控软件开发
局域网sip服务器搭
辽宁常规软件开发中心
北斗卫星导航系统与软件开发
数据库中间件作用
北京科技大学互联网行业
软件开发简历产能基线建议
宁夏北斗时间频率同步服务器
数据库书本
教学管理云服务器青葡萄
交友软件开发要多少钱
星际数据库.chm
网络安全零基础入门PDF
关系型数据库建模过程包括
腾什么云的轻量服务器
分页查询出现重复显示数据库
连云港多点控制视频系统服务器
服务器安全操作及维护规程是什么
c 软件开发经验
技能计算机网络技术考试
小学网络安全板报的知识
网络安全创新会
大厂租房软件开发