說明
首先使用shell腳本打出源apk,根據(jù)channel中聲明的渠道信息復(fù)制相應(yīng)apk文件,調(diào)用美團(tuán)寫入方法寫入信息,最后將寫入的信息運(yùn)行時(shí)讀取出來設(shè)置給統(tǒng)計(jì)服務(wù)商,該套方法使用后主項(xiàng)目打包后體積僅多3kb。請結(jié)合文章末尾項(xiàng)目鏈接配置項(xiàng)目。
目錄結(jié)構(gòu)
步驟
- 以model形式導(dǎo)入build-lib到主項(xiàng)目工程,該model用于打包,并不會編譯到主項(xiàng)目中
- 配置主工程build.gradle
- 配置簽名文件
- 確保文件中有以下渠道名,改名用來生成源apk文件,在build.sh和BuildTask.java文件中使用。
sourceChannel {}
}```
+ 加入以下代碼,指定apk生成的路徑,默認(rèn)在build-lib的apks文件夾下面,可以在path文件中修改
def app_name = "build_test"
android.applicationVariants.all { variant ->
variant.outputs.each { output ->
def outputFile = output.outputFile
if (outputFile != null && outputFile.name.endsWith('.apk')) {
def outFileName = app_name
if (android.defaultConfig.versionName != null) {
outFileName = outFileName + "" + android.defaultConfig.versionName + "" + new Date().format('yyyy-MM-dd') + "_" + productFlavors[0].name + ".apk"
}
if (project.hasProperty("output_dir")) {
output.outputFile = new File(project.property("output_dir"), outFileName)
} else {
output.outputFile = new File(getBuildFile().getParentFile().getParent() + "\build-lib\apks", outFileName)
}
}
}
}```
- 引用渠道讀取庫
compile 'com.meituan.android.walle:payload_reader:1.0.3'
加入圖中獲取信息的工具類WalleChannelReader
配置channe文件,渠道名開始,“,”做間隔,“=”連接鍵值對信息,可用“#”注釋渠道
上述配置完成后,執(zhí)行build.sh腳本,待生成apk文件后,運(yùn)行BuildTask.java文件即可生成所有渠道包。