文章目录
Task29 checkDebugLibraries
1. inut/ouput
taskName:checkDebugLibraries
=========================================================
output:/Users/dingbaosheng/work/mockuai/project/AndroidGradleTaskDemo/app/build/intermediates/check-libraries/debug
这个任务就是用来做校验的,如果存在多个modules打包成相同库,则会提示报错
2. 核心类(CheckMultiApkLibrariesTask)
@TaskAction
fun taskAction() {
// Build a map of libraries to their corresponding modules. If two modules package the same
// library, we will use the map to output a user-friendly error message.
val map = mutableMapOf<String, MutableList<String>>()
var found = false
for (artifact in featureTransitiveDeps) {
// Sanity check. This should never happen.
if (artifact.id.componentIdentifier !is ProjectComponentIdentifier) {
throw GradleException(
artifact.id.componentIdentifier.displayName + " is not a Gradle project.")
}
val projectPath =
(artifact.id.componentIdentifier as ProjectComponentIdentifier).projectPath
if (artifact.file.isFile) {
found = found || updateLibraryMap(artifact.file, projectPath, map)
}
}
if (found) {
// Build the error message. Sort map and projectPaths for consistency.
val output = StringBuilder()
for ((library, projectPaths) in map.toSortedMap()) {
if (projectPaths.size > 1) {
output
.append(projectPaths.sorted().joinToString(prefix = "[", postfix = "]"))
.append(" all package the same library [$library].\n")
}
}
throw GradleException(output.toString())
}
}
private fun updateLibraryMap(
file: File,
projectPath: String,
map: MutableMap<String, MutableList<String>>
): Boolean {
var found = false
for (library in Files.readLines(file, Charsets.UTF_8)) {
val libraryWithoutVariant = library.substringBeforeLast("::")
if (map.containsKey(libraryWithoutVariant)) {
found = true
map[libraryWithoutVariant]?.add(projectPath)
} else {
map[libraryWithoutVariant] = mutableListOf(projectPath)
}
}
return found
}
Task30 processDebugJavaRes
1. 预操作
在debug/main目录新增resources添加文件
1. input/ouput
taskName:processDebugJavaRes
input:/Users/dingbaosheng/work/mockuai/project/AndroidGradl

这篇博客详细介绍了Android构建过程中的关键任务,包括checkDebugLibraries用于检查多模块打包冲突,processDebugJavaRes执行Java资源复制,transformResourcesWithMergeJavaResForDebug合并Java资源,validateSigningDebug验证调试模式签名,以及packageDebug任务打包APK。每个任务的输入/输出及核心类都进行了说明。
最低0.47元/天 解锁文章
1016

被折叠的 条评论
为什么被折叠?



