Closed c1024 closed 8 years ago
嗯,多flavor现在确实还不支持。下个版本会支持。
PS: 不过单纯的渠道包感觉用flavor会比较慢
用的美团的多渠道打包方案,请问支持吗? @simpleton
@w4lle 这个工具的输入 输出都是一个apk文件,可以在资源混淆后再打渠道包。
好的,多谢 @simpleton
@simpleton 怎么个先资源混淆,再打渠道包的方案?
接楼上,使用该方案自动化打包 build.gradle
project.afterEvaluate {
//在Release后执行资源混淆,然后多渠道打包
//打包命令 ./gradlew resguard
tasks.getByName("resguard") {
it.doLast {
print 'channel package task begin'
def fileName = ***
def rApk = new File("app/build/outputs/apk/AndResProguard/" + fileName)
if (rApk.exists()) {
print 'resGuard apk exits begin channel package'
packageChannel(rApk.absolutePath)
}
}
}
}
def packageChannel(String releaseApk) {
try {
def stdout = new ByteArrayOutputStream()
exec {
//执行python脚本打多渠道包
commandLine 'python', rootProject.getRootDir().getAbsolutePath() + "/app/multi_build.py", releaseApk
standardOutput = stdout
}
return stdout.toString().trim()
}
catch (ignored) {
return "UnKnown";
}
}
大家可以参考 @simpleton @nianzixin
@w4lle def fileName = *\ ,这个三个星是怎么回事?帮忙解释一下
release {
applicationVariants.all { variant ->
variant.outputs.each { output ->
def outputFile = output.outputFile
if (outputFile != null && outputFile.name.endsWith('.apk')) {
//***就是自定义的文件名
def fileName = "app_v${defaultConfig.versionName}_${releaseTime()}.apk"
output.outputFile = new File(outputFile.parent, fileName)
}
}
}
}
@nianzixin
@w4lle 刚刚那个问题我解决了,可又出现新问题了,帮忙给个demo呗
@w4lle 能加个QQ好友么?
有问题在这里讨论吧,大家都能看到 @nianzixin
把渠道信息放在apk的zip comment的做法会比较好,比较快一点
@shwenzhang comment我实践了可以,但是能把你这个混淆的和那个comment多渠道打包的结合一下么?我在gradle中运行命令就可以生成多渠道混淆后的包了。
@w4lle 我有点不明白,你做的这先资源混淆,然后又多渠道打包?这多渠道打出来的所有包都资源混淆了么?
@nianzixin, 个人感觉一个库完成一个功能就可以,自动打渠道信息到comment美团那个库好像可以work?
@nianzixin 是的。
有什么办法能结合packer-ng-plugin (https://github.com/mcxiaoke/packer-ng-plugin) 打包渠道包?packer-ng-plugin打包渠道包很快
@c1024 由于AndResGuard的task执行先于打渠道包的task,我这边不是很好适配。只要渠道包可以指定input apk的路径,就可以很容易的一起work.
@simpleton AndResGuard task 如果有多个product flavor ,是用哪个product flavor执行,有没有规则?
@c1024 使用了默认的release
@simpleton 您说的是buildtype。我是说product flavor
@c1024 抱歉,没有描述清楚。是buildtype,我没有写读取product flavor相关的信息。会对你做集成造成困扰么?
@simpleton 我是想知道多个product flavor,是执行哪个product flavor?还是都执行?
这个问题已经修复,会发布在1.1.6版本。 执行所有的release variant。
这里先关闭了,有问题请重新打开。
feel free to reopen if the issue still existed.
@simpleton 有沒有辦法指定 release variant? 想把它包到jenkins機器上 全部favor都build要很久....
@nick1Jian 暂时是编译了所有release variant,不能指定特定的。下个release我会增加这个功能。
@nick1Jian 可以升级到1.1.14尝试下,resguard_和assemble_的task对齐了。
@nianzixin AndResGuard多渠道打包的问题,你处理清楚了么?要是有解决思路分享下,我这边按照你们上面的评论信息,始终没有一个完整的流程,关键地方缺失。总是成功不了!
@18511084155 由于大家打包多渠道的思路不一致,有的使用的是Flavor,有的使用增加非签名的特殊文件。这里需要各个开发者去适配自己的方案。
总的来讲AndResGuard
和多渠道并没有强依赖,可以是多渠道的结果输入到AndResGuard
也可以是AndResGuard
的结果输入到多渠道工具。
我用最新的gralde插件,运行andresguard/generate task 只生成一个压缩apk。我的配置里面是有多个productFlavor。目前是不支持同时压缩多个吗?