使用 3.0.1 版本的 Android gradle 插件。
我有应用程序模块 :app
和库模块 :lib
包含在 :app
中模块:implementation(project(':lib'))
.
模块 :lib
有 native 代码。所以,它有 :lib:externalNativeBuildRelease
任务。我需要使这个任务依赖于根模块的 Proguard 任务 :app
.
由于 native 代码混淆,我需要它。我不使用标准方法来保持从 native 调用的 java 代码。我也混淆了它,用 native 替换代码。因此,为了正确处理 native 代码,我需要在开始 native 构建之前由 Proguard 生成的 mapping.txt。
最佳答案
嗯,目前还没有答案。
我找到了我不喜欢的解决方案,但它确实有效。
在 :app
build.gradle
:
android.applicationVariants.matching {
it.buildType.name == android.buildTypes.release.name
}.whenObjectAdded {
Task nativeBuildTask = tasks.getByName('externalNativeBuildRelease')
Task libNativeBuildTask = project(':lib')
.getTasksByName('externalNativeBuildRelease', true)
.first()
tasks.matching { Task task ->
task.name.contains('Proguard')
&& task.name.contains('Release')
}.all { Task proguardTask ->
nativeBuildTask.dependsOn proguardTask
libNativeBuildTask.dependsOn proguardTask
}
}
希望有人会找到更好的方法。
关于android - 将子项目中的本地构建依赖于根项目中的 proguard,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48256971/