在根项目中的progurad上依赖subrpoject中的本机构建

时间:2018-01-15 04:32:28

标签: android gradle proguard native subproject

使用版本3.0.1的Android gradle插件。

我有:app模块中包含的应用程序模块:lib和库模块:appimplementation(project(':lib'))。 模块:lib具有本机代码。因此,它有:lib:externalNativeBuildRelease任务。我需要使这个任务依赖于根模块:app的Proguard任务。

由于本机代码混淆,我需要它。我不使用标准方法来保持从本机调用的java代码。我也混淆了它,用原生替换代码。因此,为了正确处理本机代码,我需要在本机构建开始之前由Proguard生成的mapping.txt。

1 个答案:

答案 0 :(得分:0)

嗯,到目前为止还没有答案。 我找到了解决方案,我不喜欢,但它确实有效。 在: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
    }
}

希望有人能找到更好的方法。