您可以使用您所怀疑的构建变体来执行此操作,但您可能还需要 Flavors。
这是一个具有多种构建类型和风格的示例 gradle 文件。您在风味设置中设置 ApplicationId(Play 商店中使用的包名)。
设置每种类型/风格的签名。您可以添加特定于每种风味的资源、图标、清单等。您甚至可以替换整个类文件,因此客户特定代码仅包含在您正在为其构建的客户的 apk 中。
defaultConfig {
applicationId "uk.co.foo.default"
minSdkVersion 14
targetSdkVersion 23
versionCode = 113
versionName = "3.2.3"
}
signingConfigs {
release {
storeFile file("X:\\Android Projects\\Keystore\\MyKeys.jks")
storePassword "MyPassword"
keyAlias "KeyAlias"
keyPassword "itsasecret"
}
}
productFlavors {
Customer1 {
applicationId "uk.co.foo.customer1"
}
Customer2 {
applicationId "uk.co.foo.customer2"
}
}
buildTypes {
debug {
applicationIdSuffix ".debug"
versionNameSuffix " Debug"
}
beta {
applicationIdSuffix ".beta"
versionNameSuffix " Beta"
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
}
signed {
minifyEnabled false
debuggable true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
}
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
}
}
这是为每种类型\风味添加资源的文件夹结构。在此示例中,第二种风味称为“粉丝”。默认情况下使用“主”文件夹。根据您在 Android Studio 的“构建变体”部分中选择的构建,每种类型和风味资源都会合并到 apk 中(替换主文件夹中的任何相同名称)。

Android Studio 将显示哪些文件夹对当前构建有效,如图中突出显示的那样。

编辑 - 完整的官方文档可在此处获得:https ://developer.android.com/tools/building/configuring-gradle.html