使用 Gradle 为 Android 个应用程序生成自定义包名称

Generate custom package names for Android apps with Gradle

假设我想要四个程序包名称为 com.demo_uatcom.demo_prodcom.demo1_prodcom.demo1_uat。 为此,我使用了 Gradle 和 buildTypes/productFlavors 机制。

我尝试执行以下操作:

    buildTypes {
        uat.initWith(buildTypes.debug)
        uat {
            applicationIdSuffix "_uat"
        }

        prod.initWith(buildTypes.release)
        prod {
            applicationIdSuffix "_prod"
        }
    }

    productFlavors {
        demo {
            applicationId "com.demo"
        }

        demo1 {
            applicationId "com.demo1"
        }
    }

但默认情况下,Gradle 会添加一个额外的“.”。在 _uat_prod 的开头,它将产生以下输出:com_demo._uatcom_demo._prodcom_demo1._uatcom.demo1._prod

是否可以覆盖此行为?我想保留下划线。

我终于找到了解决方法。 这是我所做的:

android {

    ...

    buildTypes {
        prod.initWith(buildTypes.release)
        prod {
        }

        uat.initWith(buildTypes.debug)
        uat {
        }
    }

    productFlavors {
        demo {
            applicationId "com.demo"
        }

        demo1 {
            applicationId "com.demo1"
        }
    }
}

task editApplicationId {
    android.applicationVariants.all { variant ->
        variant.mergedFlavor.applicationId = variant.mergedFlavor.applicationId + "_" + variant.buildType.name
    }
}

assemble.dependsOn(editApplicationId)