Android Gradle 插件AaptOptions 配置 ⑥ ( Overlay 重叠包机制 | AaptOptions#additionalParameters 附加参数配置 )
Posted 韩曙亮
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android Gradle 插件AaptOptions 配置 ⑥ ( Overlay 重叠包机制 | AaptOptions#additionalParameters 附加参数配置 )相关的知识,希望对你有一定的参考价值。
文章目录
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.
一、Overlay 重叠包机制
在 " AS项目根目录/app/src/main " 目录下创建一个 " res2 " 目录 , 将该目录也作为资源目录 ,
res2 目录下创建 values 目录 , 并在其中创建 strings.xml 文件 ,
strings.xml 文件 内容如下 :
<resources>
<string name="app_name">SVG_res2</string>
<string name="res2">res2</string>
</resources>
而 " AS项目根目录/app/src/main/values/strings.xml " 中的内容为 :
<resources>
<string name="app_name">SVG</string>
</resources>
在 res 和 res2 中都有 <string name="app_name">
, 则只会取编译时找到的第一个 该标签属性 进行打包 ;
这里就涉及到多个 res 目录进行编译打包的问题 ;
二、AaptOptions#additionalParameters 附加 -S 参数配置实现Overlay 重叠包机制
在 AaptOptions#additionalParameters 附加参数配置中
- 配置 " -S " 参数 , 指定要查找的 res 资源目录 ;
- 配置 " --auto-add-overlay " 参数 , 表示自动添加重叠包 ;
参考 【Android Gradle 插件】AaptOptions 配置 ① ( AaptOptions#additionalParameters 附加参数配置 | aapt 工具帮助文档 ) 三、aapt 工具帮助文档 中的 aapt 资源编译工具的 -S 参数 原型 :
-S directory in which to find resources. Multiple directories will be scanned
and the first match found (left to right) will take precedence.
要在其中查找资源的目录。将扫描多个目录,找到的第一个匹配项(从左到右)将优先。
--auto-add-overlay
Automatically add resources that are only in overlays.
自动添加仅在覆盖中的资源。
注意 -S 配置中 , 如果 res 与 res2 目录有相同的 属性 , 则只取找到的第一个属性 ,
最终打包出的 strings.xml 资源中 , 会有
<resources>
<string name="app_name">SVG</string>
<string name="res2">res2</string>
</resources>
注意 : 使用 aapt 可以使用上述方式 , 但是 aapt2 不行 , 会报错 ;
* What went wrong:
Execution failed for task ':app:processDebugResources'.
> A failure occurred while executing com.android.build.gradle.internal.tasks.Workers$ActionFacade
> Android resource linking failed
AAPT: unknown option '-S'.
aapt2 link [options] -o arg --manifest arg files...
aapt 运行环境 : gradle:2.2.0 / gradle-wrapper:3.4.1
aapt2 运行环境 : gradle:3.3.2 / gradle-wrapper:5.6.2
以上是关于Android Gradle 插件AaptOptions 配置 ⑥ ( Overlay 重叠包机制 | AaptOptions#additionalParameters 附加参数配置 )的主要内容,如果未能解决你的问题,请参考以下文章
Android Gradle 插件Gradle 自定义 Plugin 插件 ③ ( 自定义插件作用 | Android Gradle 插件的扩展 | 自定义 Extension 扩展 )
Android Gradle 插件Gradle 自定义 Plugin 插件 ⑥ ( 在 buildSrc 模块中依赖 Android Gradle 插件 | 完整代码示例 )
Android Gradle 插件Gradle 自定义 Plugin 插件 ⑥ ( 在 buildSrc 模块中依赖 Android Gradle 插件 | 完整代码示例 )
Android Gradle 插件Gradle 自定义 Plugin 插件 ② ( buildSrc 目录中实现 Gradle 插件 | 实现 Gradle 插件代码 | 模块引入插件并编译 )
Android Gradle 插件Android Module 模块 build.gradle 构建脚本 Groovy 语法分析 ① ( Gradle 二进制插件引入 | Gradle依赖配置 )
Android Gradle 插件Android Module 模块 build.gradle 构建脚本 Groovy 语法分析 ① ( Gradle 二进制插件引入 | Gradle依赖配置 )