Android 多渠道打包

在Android開發(fā)中,多渠道打包是一種常見的需求,它可以幫助開發(fā)者追蹤應(yīng)用在不同渠道上的安裝和使用情況。以下是一個(gè)使用Gradle的多渠道打包示例:

首先,在項(xiàng)目的build.gradle文件中配置flavors:


android {
  ...
  productFlavors {
      googleplay {}
      baidu {}
      xiaomi {}
      // 添加更多的 flavors 根據(jù)需要
  }
}

然后,在gradle.properties文件中添加多渠道配置:

# 默認(rèn)渠道
CHANNEL=googleplay
 
# 或者在命令行中設(shè)置渠道
# CHANNEL=baidu
# CHANNEL=xiaomi

接下來,在build.gradle中使用CHANNEL屬性來為每個(gè)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屬性,只需運(yùn)行以下命令即可:

./gradlew assemble

這將根據(jù)CHANNEL屬性中定義的渠道來構(gòu)建APK。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容