说明
首先使用shell脚本打出源apk,根据channel中声明的渠道信息复制相应apk文件,调用美团写入方法写入信息,最后将写入的信息运行时读取出来设置给统计服务商,该套方法使用后主项目打包后体积仅多3kb。请结合文章末尾项目链接配置项目。
目录结构
步骤
- 以model形式导入build-lib到主项目工程,该model用于打包,并不会编译到主项目中
- 配置主工程build.gradle
- 配置签名文件
- 确保文件中有以下渠道名,改名用来生成源apk文件,在build.sh和BuildTask.java文件中使用。
sourceChannel {}
}```
+ 加入以下代码,指定apk生成的路径,默认在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文件,渠道名开始,“,”做间隔,“=”连接键值对信息,可用“#”注释渠道
上述配置完成后,执行build.sh脚本,待生成apk文件后,运行BuildTask.java文件即可生成所有渠道包。