多渠道打包patch无法更新问题 #12
多渠道打包patch无法更新问题 #12
Comments
请将具体的错误码贴出来,不能仅仅描述情况。将合成过程的日志贴出来,用"Tinker."过滤! |
dex原始crc不一致,你们不同渠道的代码不一样?这样是不行的 |
AndroidManifest.xml也包括代码?只是在打包时在gradle里面替换android:value="${UMENG_CHANNEL_VALUE}"/> |
如果只改变AndroidManfest是没有问题的,你先确认一下两个渠道的classes.dex是不是一样的 |
是我打包方式有问题? |
你先要确定不同的flavor有没有定制的功能,导致打出来的原始apk中的dex是不同的。你要先清楚出现这个问题的原因是什么?就是两个不同渠道oldapk中的classes.dex是不同的 |
我这边也有这个问题,如果有定制功能,classes.dex不一样,就不能使用tinker了吗?还是说要一个个flavor单独打补丁? |
是这样的,这里我们有三个解决方法:1. 对于特殊渠道单独发补丁 2. 将特殊的功能拆成单独的dex 3. 所有渠道的代码都是一样,只是通过配置走不同的分支。 |
非常感谢 |
我试了下,手动改渠道是可以的patch的,用favor就会改classes.dex,不知道什么原因。 |
用gradle打多渠道包后,flavor值会写入BuildConfig.java,这个文件是合入dex的,尽管你的初衷只是想改变manifest里面的值。 |
@h3r3x3 ,我的第一点是给某个渠道单独特殊功能的app。事实上,对于渠道我们更建议通过zip comment的方式实现。这样更快,获取也简单 |
是的,zip comment确实是快,不过还是有不少用flavor打包的,可以在QA里面说下 :) |
在zip的comment块写入信息其实不太可靠 之前有遇到过上传应用市场后 comment块被清空的情况 |
应用市场也是要写code的,所以不能重叠 |
@7heaven 哪个市场碰到过? |
@bigbigbigbigbig please try with 1.7.0 |
测试已解决 方法:通过强制在compile${flavorName}${typeName}JavaWithJavac前篡改BuildConfig.java,使所有渠道包打入dex的BuildConfig一致 相关代码:
|
多渠道打包中,改变的的是AndroidManifest.xml的友盟渠道的变量
我的试验结果是仅仅改变了这一点,别的渠道的apk都无法更新patch,例如,使用应用宝的渠道做oldApk,那么tinkerPatchRelease出来的tinkerPatch补丁只可以更新到应用宝apk,baidu的apk就无法更新patch了,请问有什么方法可以处理这种情况吗。
The text was updated successfully, but these errors were encountered: