1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 【Android 安装包优化】开启 ProGuard 混淆 ( 压缩 Shrink | 优化 Optimize

【Android 安装包优化】开启 ProGuard 混淆 ( 压缩 Shrink | 优化 Optimize

时间:2023-11-11 13:04:01

相关推荐

【Android 安装包优化】开启 ProGuard 混淆 ( 压缩 Shrink | 优化 Optimize

文章目录

一、开启 ProGuard 混淆二、混淆文件编写三、混淆前后对比四、build.gradle 完整配置文件五、参考资料

一、开启 ProGuard 混淆

在 build.gradle 中 开启 Proguard , 在编译时 , 会自动进行如下一系列优化 :

压缩 Shrink :检查 并 删除 没有使用的类 , 字段 , 方法 , 属性 ; 这里要注意 , 如果通过反射使用一个类时 , 可能会在该步骤被删除 ; 这里需要配置混淆文件 , 保留反射中使用的类 ;

优化 Optimize :优化字节码 , 移除无用指令 ;

混淆 Obfuscate :混淆 Java 层代码 , 使用无意义的标识符替代 Java 中的类名 , 变量名 , 方法名 等名称 ;

预检 Preveirfy :预检 Java 平台上预处理的代码 ;

开启 ProGuard 配置 :在 build.gradle 构建脚本中的 " android / buildTypes " 层级中 , 配置 debug / release 相关选项 , 即可开启 ProGuard ;

设置 minifyEnabled true 配置 , 并配置 proguardFiles 混淆配置文件 , 在 Android Studio 中 , 一般会生成一个默认的混淆配置文件 ;

android {buildTypes {debug {minifyEnabled trueproguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'}release {minifyEnabled trueproguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'}}}

混淆配置文件说明 :

在 proguardFiles getDefaultProguardFile(‘proguard-android-optimize.txt’), ‘proguard-rules.pro’ 中 , 配置了两个文件,

其中 proguard-android-optimize.txt 是默认的混淆配置文件 , 由系统自动生成 ; proguard-rules.pro 是用户自己配置的混淆配置文件 , 在进行打包时 , 将这两个 ProGuard 配置文件进行合并处理 ;

二、混淆文件编写

混淆文件编写 :引用的第三方库及服务 , 一般不进行混淆 , 去相应的开源页面 , 查找混淆配置 ;

遇到某个包或类编译遇到警告退出 , -dontwarn 配置该包不要爆出警告 ;

遇到没有找到的类 , 使用 -keep 不要混淆该类 ;

常用的混淆配置 :

" -dontwarn " :不要报出警告信息 , 如果出现警告 , 编译打包会被终止 ;

# com 包名下不要爆出警告-dontwarn com.**

" -keep " :不要混淆的类 ;

# com 包名下的类不要混淆-keep class com.**{*;}

三、混淆前后对比

混淆前编译的 APK 安装包 :3.6MB\rm 3.6 MB3.6MB

混淆后编译的 APK 安装包 :1.7MB\rm 1.7MB1.7MB

四、build.gradle 完整配置文件

完整的 build.gradle 构建脚本 ;

plugins {id 'com.android.application'id 'kotlin-android'}android {compileSdkVersion 30buildToolsVersion "30.0.3"defaultConfig {applicationId "kim.hsl.svg"minSdkVersion 18targetSdkVersion 30versionCode 1versionName "1.0"testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"// 生成 PNG 图片配置//generatedDensities = ['hdpi', 'mdpi', 'xhdpi', 'xxhdpi', 'xxxhdpi']// 使用 com.android.support:appcompat 支持库配置vectorDrawables.useSupportLibrary = true// 国际化资源配置, 只打包默认资源与英文资源resConfigs 'en'}// 开启混淆 buildTypes {debug {minifyEnabled trueproguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'}release {minifyEnabled trueproguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'}}compileOptions {sourceCompatibility JavaVersion.VERSION_1_8targetCompatibility JavaVersion.VERSION_1_8}kotlinOptions {jvmTarget = '1.8'}}dependencies {implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"implementation 'androidx.core:core-ktx:1.3.2'// 矢量图支持库 , 支持 5.0 以下版本手机使用矢量图 , 这个是创建应用时自带的配置implementation 'androidx.appcompat:appcompat:1.2.0'implementation 'com.google.android.material:material:1.3.0'implementation 'androidx.constraintlayout:constraintlayout:2.0.4'testImplementation 'junit:junit:4.+'androidTestImplementation 'androidx.test.ext:junit:1.1.2'androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'}

五、参考资料

参考之前的博客资源 :

【Android 安全】DEX 加密 ( ProGuard 混淆 | -keepclassmembers 混淆效果 | -keepclasseswithmembernames 混淆效果 )【Android 安全】DEX 加密 ( Proguard 混淆 | 混淆后的报错信息 | Proguard 混淆映射文件 mapping.txt )【Android 安全】DEX 加密 ( Proguard 混淆 | 将混淆后的报错信息转为原始报错信息 | retrace.bat 命令执行目录 | 暴露更少信息 )【Android 安全】DEX 加密 ( Proguard 混淆 | 混淆后的报错信息 | Proguard 混淆映射文件 mapping.txt )

博客资源 :

GitHub 项目源码 :/han120/SVG

下载地址 :

【Android 安装包优化】开启 ProGuard 混淆 ( 压缩 Shrink | 优化 Optimize | 混淆 Obfuscate | 预检 | 混淆文件编写 | 混淆前后对比 )

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。