【问题标题】:Depend native build in subrpoject on progurad in root project将子项目中的本地构建依赖于根项目中的 proguard
【发布时间】:2023-03-11 17:02:01
【问题描述】:

使用 3.0.1 版本的 Android gradle 插件。

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

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

【问题讨论】:

    标签: android gradle proguard native subproject


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-07-24
      • 2016-11-29
      • 1970-01-01
      • 2013-01-30
      • 1970-01-01
      • 2015-11-30
      • 2015-11-16
      相关资源
      最近更新 更多