android - 在 gradle 插件中获取应用程序变体的包名

标签 android gradle android-gradle-plugin

我正在构建一个 gradle 插件,为每个应用程序变体添加一个新任务。这个新任务需要应用程序变体的包名称。

这是我当前的代码,它停止使用最新版本的 android gradle 插件:

private String getPackageName(ApplicationVariant variant) {
    // TODO: There's probably a better way to get the package name of the variant being tested.
    String packageName = variant.generateBuildConfig.packageName

    if (variant.processManifest.packageNameOverride != null) {
        packageName = variant.processManifest.packageNameOverride
    }
    packageName
}

由于对构建配置处理的更改,这在最新版本的 android 插件中已停止工作。无论如何,这看起来像是一个 hack,所以我对它停止工作并不感到惊讶。有没有规范的方法来获取包名称?

最佳答案

我用这个:

// Return the packageName for the given buildVariant
def getPackageName(variant) {
    def suffix = variant.buildType.packageNameSuffix
    def packageName = variant.productFlavors.get(0).packageName
    if (suffix != null && !suffix.isEmpty() && suffix != "null") {
        packageName += suffix
    }
    return packageName
}

关于android - 在 gradle 插件中获取应用程序变体的包名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20973259/

相关文章:

android - 拖放 ConcurentModificationException

android - 屏幕方向更改后返回 Activity 时丢失对 Android 服务的引用

android - 带有 "activatedBackgroundIndicator"抽屉导航的所选项目的自定义背景颜色

android - 导出 APK 时的不同模块

android - 如何使用 Gradle 动态地从 aar 中排除文件?

android-studio - 如何使 gradle.properties 机器独立

android - java.util.zip.ZipException : duplicate entry during packageAllDebugClassesForMultiDex

android - 在智能手机上具有大量图形的性能

docker - 以后的 gradle 插件中不支持 Shell 登录命令

Android Gradle 2.5 如何让 resConfigs 工作