tinker icon indicating copy to clipboard operation
tinker copied to clipboard

升级到1.9.14.5后打出来的补丁包很大

Open YuanKJ- opened this issue 5 years ago • 9 comments

异常类型:编译异常

手机型号:如:Nexus 5(如是编译异常,则可以不填)

手机系统版本:如:Android 5.0 (如是编译异常,则可以不填)

tinker版本:如:1.9.14.5

gradle版本:gradle5.1.1, tools3.4.2

是否使用热更新SDK: Bugly SDK

系统:Win minSdk: 16

我这边通过assembleRelease进行基础包的打包,打包完成后仅修改strings.xml中其中一个资源,开始打补丁包。补丁包出来后发现有1.7M大,通过对比,发现diff包的主dex一些类完整的移到了dex2里面,而dex2的类则完整移到了主dex中,最后导致差异很多,但实际上这些类都是没有改动的。目前在tinker 1.9.14.5版本中遇到,原来使用的tinker 1.9.13.3版本未出现

YuanKJ- avatar Jan 10 '20 10:01 YuanKJ-

问题补充,我升级tinker版本的原因是因为遇到打补丁包出现 found loader classes are found in old secondary dex的问题,跟issue #1205 中看到的问题一致。

项目的gradle版本和AGP版本在8月就已经升级到5.1.1, 3.4.2并且直到11月底都能够成功打补丁包。

第一次打补丁包失败是发现项目依赖了一个三方库升级到了JAVA8导致出现了上面的found loader classes are found in old secondary dex,后续尝试了把三方库降级到不需要JAVA8,再次打包仍然出现found loader classes are found in old secondary dex。

参考了issue #1084 描述的原因,一般这种情况是出现在minSdk>=21上面,我这边的minSdk是16,按理来说不会出现这个问题,打包的时候也是通过gradle assembleRelease进行打包的。

现在担心的问题是如果升级到最新版1.9.14.5,允许Tinker的类在任意DEX,会不会导致5.0以下的设备热更新失效或者热更新后直接Crash。然而现在没有退路,即使降级不使用JAVA8仍然无法打补丁包。

@tomystang 希望@一下大佬能看见这个issue

YuanKJ- avatar Jan 13 '20 07:01 YuanKJ-

重要补充!!!

已定位到出现 found loader classes are found in old secondary dex 问题出现的位置。

我这边的项目使用的是组件化开发,出现问题前后修改的主要点是在 baseComponent module 中增加了kotlin的使用,在该module的build.gradle中增加了如下两句配置,并且在该module中增加了几个使用kotlin开发的类

apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'

实测回退到上一个没有在 baseComponent module 中配置kotlin环境的commit尝试打包正常,并且包体积也正常,只有100K左右。

@tomystang 继续@大佬

YuanKJ- avatar Jan 15 '20 02:01 YuanKJ-

@YuanKJ- 你打包输出的apk会出现很多dex吗? 我这里出现了40多个dex

YummyLau avatar Mar 25 '20 08:03 YummyLau

你好,我使用tinker热修复,需要用自己的application.这一步总是避免不过去,不知道怎么能避免。总是遇到问题。请教一下。

------------------ 原始邮件 ------------------ 发件人: "YummyLau"<[email protected]>; 发送时间: 2020年3月25日(星期三) 下午4:25 收件人: "Tencent/tinker"<[email protected]>; 抄送: "Subscribed"<[email protected]>; 主题: Re: [Tencent/tinker] 升级到1.9.14.5后打出来的补丁包很大 (#1332)

@YuanKJ- 你打包输出的apk会出现很多dex吗? 我这里出现了40多个dex

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub, or unsubscribe.

Reset-jiao avatar Mar 25 '20 08:03 Reset-jiao

@YuanKJ- 你的意思是你也会很多dex吗? 目前我debug模式会出现,release不会。具体的问题你可以描述下

YummyLau avatar Mar 25 '20 08:03 YummyLau

后来解决了吗?

sivenwu avatar Nov 17 '21 08:11 sivenwu

是的后来解决了,解决方案是离职

YuanKJ- avatar Dec 26 '21 06:12 YuanKJ-

@YuanKJ- 😂牛

Ccixyj avatar Dec 27 '21 23:12 Ccixyj

一脚踢开,好狠

KidAndroid avatar Jul 14 '22 08:07 KidAndroid