在Android開發(fā)中难衰,多渠道打包是一種常見的需求笆怠,它可以幫助開發(fā)者追蹤應(yīng)用在不同渠道上的安裝和使用情況堕虹。以下是一個使用Gradle的多渠道打包示例:
首先岂津,在項目的build.gradle文件中配置flavors:
android {
...
productFlavors {
googleplay {}
baidu {}
xiaomi {}
// 添加更多的 flavors 根據(jù)需要
}
}
然后虱黄,在gradle.properties文件中添加多渠道配置:
# 默認渠道
CHANNEL=googleplay
# 或者在命令行中設(shè)置渠道
# CHANNEL=baidu
# CHANNEL=xiaomi
接下來,在build.gradle中使用CHANNEL屬性來為每個flavor指定渠道名稱:
def getTime() {
return new Date().format("yyyyMMdd_HHmm", TimeZone.getDefault())
}
android {
...
productFlavors {
googleplay {
manifestPlaceholders = [channelId: "googleplay"]
}
baidu {
manifestPlaceholders = [channelId: "baidu"]
}
xiaomi {
manifestPlaceholders = [channelId: "xiaomi"]
}
}
applicationVariants.all { variant ->
variant.outputs.all { output ->
def outputFile = output.outputFile
if (outputFile != null && outputFile.name.endsWith('.apk')) {
// 輸出apk名稱為app_v1.0_20240805_1023_xiaomi.apk
def fileName = "app_v${defaultConfig.versionName}_${getTime()}_${variant.productFlavors[0].name}.apk"
outputFileName = fileName
}
}
}
}
最后吮成,在AndroidManifest.xml中使用${channelId}占位符來設(shè)置渠道特定的信息:
<meta-data android:name="CHANNEL" android:value="${channelId}" />
現(xiàn)在橱乱,你可以在終端或命令行使用以下命令來構(gòu)建特定渠道的APK:(備注這部分我還沒試,明天再試試執(zhí)行一下)
./gradlew assembleGoogleplay
./gradlew assembleBaidu
./gradlew assembleXiaomi
或者粱甫,如果你在gradle.properties中設(shè)置了CHANNEL屬性泳叠,只需運行以下命令即可:
./gradlew assemble
這將根據(jù)CHANNEL屬性中定義的渠道來構(gòu)建APK。