使用3.0.1版本的Android gradle插件。
我有应用程序模块:app
和库模块:lib
包含在:app
模块中:implementation(project(':lib'))
.模块 :lib
具有本机代码。所以,它有:lib:externalNativeBuildRelease
任务。我需要使此任务依赖于根模块:app
的Proguard任务。
由于本机代码混淆,我需要它。我不使用保持从本机调用的 java 代码的标准方法。我也混淆了它,替换了本机代码。因此,为了正确处理本机代码,我需要在开始本机构建之前由Proguard生成的映射.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
}
}
希望有人能找到更好的方法。