Gradle Flavor明智地改变packageName和applicationId

时间:2018-05-27 03:18:17

标签: android android-build android-package-managers android-build-type android-build-flavors

我有一个核心产品(例如学校核心)现在我需要为2所学校启动它(例如学校A 学校B )。唯一不同的是app图标启动画面。我尝试通过味道来管理这个。我们知道要上传到谷歌游戏商店,我们需要不同的包名,所以我被困在那里。

我的味道看起来像这样 -

productFlavors {
    main {
        applicationId "net.school.main"
        versionCode 7
        versionName "2.12"
    }
    schoolA {
        versionCode 2
        versionName '1.01'
        applicationId 'net.school.schoolA'
    }
    schoolB {
        versionCode 1
        versionName '1.0'
        applicationId 'net.school.schoolB'
    }
}

当我运行味道 schoolA 时,它说没有找到包。我正在寻找最好的方法,以便将来任何新学校都可以添加最少的变化。

2 个答案:

答案 0 :(得分:0)

很遗憾,您无法更改不同风味的套餐名称。

每个Android应用都有一个看似Java包名称的唯一应用ID,例如com.example.myapp。此ID可在设备和Google Play商店中唯一标识您的应用。因此,您可以重新定义完整的applicationId属性,也可以使用applicationIdSuffix足够将段附加到默认应用程序ID。有关详细信息,请参阅official document

答案 1 :(得分:0)

您解决了问题吗?

就我而言,它运作完美。尝试这样

buildTypes {
        release {

        }
    }

flavorDimensions "main"

productFlavors {
main {
    applicationId "net.school.main"
    versionCode 7
    versionName "2.12"
}
schoolA {
    versionCode 2
    versionName '1.01'
    applicationId 'net.school.schoolA'
}
schoolB {
    versionCode 1
    versionName '1.0'
    applicationId 'net.school.schoolB'
}
}

现在您可以将应用程序图标放到src / scholA / res /标准文件夹(如drawable或mipmap)中。 并使用Build Variants进行每种口味的调试或发布。