一套Android代码,不同的url,打出来不同apk包名的包,对应不同的仓库。
1.打包名称
// App名称 + 渠道号 +版本号 + 正式测试 + 时间
applicationVariants.all { variant ->
variant.outputs.all { output ->
def outputFile = output.outputFile
if (outputFile != null && outputFile.name.endsWith('.apk')) {
// def fileName =outputFile.name.replace(".apk", "-${defaultConfig.versionName}.apk")
def fileName = "WMS_${variant.productFlavors[0].name}_${versionName}_${buildType.name}_${generateTime()}.apk"
outputFileName = fileName
}
}
}
2.主要配置
flavorDimensions "example_value"
productFlavors {
origin { // 湖北
// manifestPlaceholders = [channel_value: "origin channel"]
buildConfigField("String", "API_HOST", "\"address\"")
// resValue("string", "example_value", "origin tips")
signingConfig signingConfigs.wdsys
}
exampleFlavor { // 湖南
// applicationId "com.chenyihong.exampledflavordemo"
versionCode 2
versionName "1.0.2-flavor"
// manifestPlaceholders = [channel_value: "flavor channel"] // App的名字
buildConfigField("String", "API_HOST", "\address\"")
// resValue("string", "example_value", "flavor tips")
signingConfig signingConfigs.wdsys
}
}
3.测试环境对应同一个url
buildTypes {
release {
minifyEnabled false
// signingConfig null
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.test
}
debug {
buildConfigField "String", "API_HOST", '"http://10.1.12.144:9010/wms-client/"'
signingConfig signingConfigs.test
}
}
4.要在 Android 的多渠道打包中配置不同的 URL 供 release
和 debug
使用,你可以通过以下步骤实现:
1. 配置 build.gradle
在 app/build.gradle
文件中,为 release
和 debug
配置不同的构建类型,并为每个产品风味(flavor)设置相应的 URL。
android {
compileSdkVersion 33
defaultConfig {
applicationId "com.example.app"
minSdkVersion 21
targetSdkVersion 33
versionCode 1
versionName "1.0"
}
flavorDimensions "version"
productFlavors {
flavorA {
dimension "version"
}
flavorB {
dimension "version"
}
}
buildTypes {
debug {
buildConfigField "String", "BASE_URL", '"https://debug-api.example.com/"'
}
release {
buildConfigField "String", "BASE_URL", '"https://release-api.example.com/"'
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}
2. 使用 BuildConfig
获取 URL
在你的应用代码中,你可以通过 BuildConfig
类访问不同构建类型和风味的配置。例如:
String baseUrl = BuildConfig.BASE_URL;
3. 资源文件配置
如果你需要为不同风味和构建类型配置不同的 URL,还可以通过资源文件配置。例如:
目录结构
src/debug/res/values/strings.xml
src/release/res/values/strings.xml
src/flavorA/debug/res/values/strings.xml
src/flavorA/release/res/values/strings.xml
src/flavorB/debug/res/values/strings.xml
src/flavorB/release/res/values/strings.xml
strings.xml
示例
src/debug/res/values/strings.xml
:
<resources>
<string name="api_base_url">https://debug-api.example.com/</string>
</resources>
src/release/res/values/strings.xml
:
<resources>
<string name="api_base_url">https://release-api.example.com/</string>
</resources>
4. 使用资源文件中的 URL
在你的代码中,通过资源文件访问 URL,例如:
String baseUrl = getString(R.string.api_base_url);
5. 打包和测试
通过执行不同的 Gradle 构建命令,例如 ./gradlew assembleFlavorADebug
或 ./gradlew assembleFlavorARelease
,Gradle 会根据配置自动使用不同的 URL。
这些步骤将帮助你在多渠道打包中正确地配置不同的 release
和 debug
环境 URL。
6.找到BuildConfig
文件
在这里添加多渠道打包添加的参数,该文件中属性赋初始值,不影响使用。
特别注意!!!切换渠道编译的时候,多渠道打包配置的参数比如
API_HOST
,会出现无法引用的问题,是因为该渠道下,BuildConfig
文件没有更新,重新切换选择即可。