android - 将子项目中的本地构建依赖于根项目中的 proguard

标签 android gradle proguard native subproject

使用 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/

相关文章:

java - 外围 Java 线程方法的后台工作对调用线程的影响

android - Proguard 回溯工具的输出

java - Android Studio,ProGuard 无法计算 Classes.jar 的哈希值

android - 删除小数位的数字

java - 如何从声明 edittext 的另一个类中的线程更改 edittext 的文本?

gradle - Gradle 中用于编译 Java 的替代配置

android - Android Espresso 的空 Jacoco 报告

android - 使用 proguard Android 后数据库崩溃

android - 带有 AndroidFragments 的 onSaveInstanceState 上的 NullPointerException

android - list 合并失败 android.support.v4.app.CoreComponentFactory