Android Plugin DSL Reference 参考文档 :
-
AppExtension ( build.gradle#android 配置 ) 文档位置 : android-gradle-dsl-gh-pages/2.3/com.android.build.gradle.AppExtension.html
-
build.gradle#android 模块配置文档 : android-gradle-dsl/2.3/com.android.build.gradle.AppExtension.html
-
ProductFlavor ( build.gradle#android#defaultConfig 配置 ) 文档 : android-gradle-dsl/2.3/com.android.build.gradle.internal.dsl.ProductFlavor.html
-
ProductFlavor#externalNativeBuild 配置 ( build.gradle#android#defaultConfig#externalNativeBuild 配置 ) : com.android.build.gradle.internal.dsl.ProductFlavor:externalNativeBuild
-
ExternalNativeBuildOptions ( build.gradle#android#defaultConfig#externalNativeBuild 配置 ) 文档位置 : android-gradle-dsl-gh-pages/2.3/com.android.build.gradle.internal.dsl.ExternalNativeBuildOptions.html
-
NdkBuildOptions ( build.gradle#android#defaultConfig#externalNativeBuild#ndkBuild 配置 ) 文档位置 : android-gradle-dsl-gh-pages/2.3/com.android.build.gradle.internal.dsl.NdkBuildOptions.html
-
CmakeOptions ( build.gradle#android#defaultConfig#externalNativeBuild#cmake 配置 ) 文档位置 : android-gradle-dsl-gh-pages/2.3/com.android.build.gradle.internal.dsl.CmakeOptions.html
-
JackOptions ( build.gradle#android#defaultConfig#jackOptions 配置 ) 文档位置 : android-gradle-dsl/2.3/com.android.build.gradle.internal.dsl.JackOptions.html
-
AnnotationProcessorOptions ( 注解处理器配置 ) ( build.gradle#android#defaultConfig#javaCompileOptions配置 ) 文档位置 : android-gradle-dsl/2.3/com.android.build.gradle.internal.dsl.AnnotationProcessorOptions.html
-
NdkOptions ( build.gradle#android#defaultConfig#ndk 配置 ) 文档位置 : android-gradle-dsl/2.3/com.android.build.gradle.internal.dsl.NdkOptions.html
-
VectorDrawablesOptions ( build.gradle#android#defaultConfig#vectorDrawables 配置 ) 文档位置 : android-gradle-dsl/2.3/com.android.build.gradle.internal.dsl.VectorDrawablesOptions.html
-
BuildType ( build.gradle#android#buildTypes 配置 ) 文档位置 : android-gradle-dsl/2.3/com.android.build.gradle.internal.dsl.BuildType.html
-
SigningConfig ( build.gradle#android#signingConfigs 配置 ) 文档位置 : android-gradle-dsl/2.3/com.android.build.gradle.internal.dsl.SigningConfig.html
-
AaptOptions ( build.gradle#android#aaptOptions 配置 ) 文档位置 : android-gradle-dsl/2.3/com.android.build.gradle.internal.dsl.AaptOptions.html
-
NDK 参考文档 : Add C and C++ Code to Your Project.
一、AaptOptions#noCompress 配置
AaptOptions ( build.gradle#android#aaptOptions 配置 ) 文档位置 : android-gradle-dsl/2.3/com.android.build.gradle.internal.dsl.AaptOptions.html
1、配置说明
AaptOptions#noCompress 配置 中 设置 不需要压缩的 文件扩展名 ;
注意 : 如果设置一个空的扩展名 , 即 配置
noCompress ''
内容 , 会导致所有的文件都不会压缩 , 打包出来的 apk 安装包会很大 ;
AaptOptions#noCompress 配置原型 :
Collection<String> noCompress
Extensions of files that will not be stored compressed in the APK. Adding an empty extension, i.e., setting noCompress '' will trivially disable compression for all files.
Equivalent of the -0 flag. See aapt --help
2、使用示例
配置
noCompress ''
内容 , 表示所有的文件都不压缩 ;
android {
compileSdkVersion 30
buildToolsVersion "30.0.3"
defaultConfig {
applicationId "com.example.classloader_demo"
minSdkVersion 18
targetSdkVersion 30
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
aaptOptions {
// aapt 附加参数
additionalParameters '--rename-manifest-package', 'com.example.classloader_demo2'
// 是否开启 png 图片优化检查
cruncherEnabled true
// 忽略所有的 jpeg 格式图片
ignoreAssets '*.jpg'
// 指定某些扩展名文件不压缩
noCompress ''
}
}
3、apk 文件对比
① 压缩文件后的 apk
下图是默认所有文件都压缩的 apk 文件 ,
使用
aapt l -v app\build\outputs\apk\debug\app-debug.apk
命令 , 分析该 apk 文件 ;
其中 Ratio
就是压缩比例 ;
D:\002_Project\002_Android_Learn\ClassLoader_Demo>aapt l -v app\build\outputs\apk\debug\app-debug.apk
Archive: app\build\outputs\apk\debug\app-debug.apk
Length Method Size Ratio Offset Date Time CRC-32 Name
-------- ------ ------- ----- ------- ---- ---- ------ ----
5285836 Deflate 2365166 55% 132 01-01-81 01:01 32c299f3 assets/classes.dex
5286216 Deflate 2365138 55% 2365346 01-01-81 01:01 7cbee33f assets/classes2.dex
55 Deflate 51 7% 4730533 01-01-81 01:01 bac0f866 META-INF/com/android/build/gradle/app-metadata.properties
2416 Deflate 841 65% 4730671 01-01-81 01:01 d273c0cd AndroidManifest.xml
388 Deflate 216 44% 4731561 01-01-81 01:01 6270df64 res/anim/abc_fade_in.xml
388 Deflate 218 44% 4731831 01-01-81 01:01 748bb31c res/anim/abc_fade_out.xml
852 Deflate 376 56% 4732104 01-01-81 01:01 9a93c4ea res/anim/abc_grow_fade_in_from_bottom.xml
508 Deflate 258 49% 4732551 01-01-81 01:01 b8ffd7e6 res/anim/abc_popup_enter.xml
508 Deflate 259 49% 4732867 01-01-81 01:01 53704157 res/anim/abc_popup_exit.xml
852 Deflate 377 56% 4733183 01-01-81 01:01 7694b074 res/anim/abc_shrink_fade_out_from_bottom.xml
396 Deflate 228 42% 4733634 01-01-81 01:01 cc6ffadf res/anim/abc_slide_in_bottom.xml
396 Deflate 229 42% 4733924 01-01-81 01:01 fef136ce res/anim/abc_slide_in_top.xml
396 Deflate 227 43% 4734212 01-01-81 01:01 eeb0006b res/anim/abc_slide_out_bottom.xml
396 Deflate 228 42% 4734502 01-01-81 01:01 f068f605 res/anim/abc_slide_out_top.xml
388 Deflate 217 44% 4734790 01-01-81 01:01 0775413b res/anim/abc_tooltip_enter.xml
388 Deflate 217 44% 4735067 01-01-81 01:01 20761d7c res/anim/abc_tooltip_exit.xml
② 未压缩文件的 apk
设置未压缩的 apk 后 , 最终生成的文件有 16.3MB , 远大于 默认状态所有文件都压缩的 7.9MB ;