android热修复学习之旅——tinker接入全攻略

android热修复学习之旅——tinker接入全攻略

ID:15872037

大小:610.00 KB

页数:27页

时间:2018-08-06

android热修复学习之旅——tinker接入全攻略_第1页
android热修复学习之旅——tinker接入全攻略_第2页
android热修复学习之旅——tinker接入全攻略_第3页
android热修复学习之旅——tinker接入全攻略_第4页
android热修复学习之旅——tinker接入全攻略_第5页
资源描述:

《android热修复学习之旅——tinker接入全攻略》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Android热修复学习之旅——Tinker接入全攻略微信团队对现有的方案优缺点进行了深入的分析和总结,由于AndFix的局限性和兼容性差原因放弃了这种方案,而对QZone方案通过研究InstantRun的冷插拔与buck的exopackage带来的灵感进行了升级。QZone方案只是插入了Elements(补丁dex),而Tinker则是替换了整个Element数组(所有dex)。替换是通过patch和apk原始的dex进行合并,重启后加载合并后的新dex,这样基本上可以认为没有对dexopt和Classloader加载dex文件的过程进行干预,所以QZone方案的两个问

2、题也就不复存在。可以看到微信团队的新方案Tinker通过替换整个dex,完美了规避了现有方案的一些问题。除了合并新dex稍长时间与内存消耗,以及第一次重启加载整个新dex时dexopt的时间,似乎没有其它的大问题,还是比较完美的。接下来,我将详细介绍如何在项目中接入Tinker.添加gradle依赖在项目的build.gradle中,添加tinker-patch-gradle-plugin的依赖buildscript{dependencies{classpath('com.tencent.tinker:tinker-patch-gradle-plugin:1.7.7')}

3、}然后在app的gradle文件app/build.gradle,我们需要添加tinker的库依赖以及applytinker的gradle插件.dependencies{compilefileTree(dir:'libs',include:['*.jar'])androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2',{excludegroup:'com.android.support',module:'support-annotations'})compile'com.androi

4、d.support:appcompat-v7:24.2.1'testCompile'junit:junit:4.12'//tinker的核心库compile("com.tencent.tinker:tinker-android-lib:1.7.7")//可选,用于生成application类provided("com.tencent.tinker:tinker-android-anno:1.7.7")compile"com.android.support:multidex:1.0.1"}//applytinker插件applyplugin:'com.tencent.tin

5、ker.patch'添加(或修改)项目的Application,使之继承DefaultApplicationLike;这个DefaultApplicationLike不是继承自Application,需要用注解来设置项目中真正的Application,Tinker插件会自动生成真正的Application,建议最好用注解的方式生成自己的application,不用我们自己写,是自动生成的,然后修改manifest.xml将application指向com.xxx.xxx.MyApplication就行,开始会报错,build一下项目就好了。@SuppressWarning

6、s("unused")@DefaultLifeCycle(application="com.example.testtinker.SampleApplication",flags=ShareConstants.TINKER_ENABLE_ALL,loadVerifyFlag=false)publicclassSampleApplicationLikeextendsDefaultApplicationLike{publicSampleApplicationLike(Applicationapplication,inttinkerFlags,booleantinkerLoad

7、VerifyFlag,longapplicationStartElapsedTime,longapplicationStartMillisTime,IntenttinkerResultIntent){super(application,tinkerFlags,tinkerLoadVerifyFlag,applicationStartElapsedTime,applicationStartMillisTime,tinkerResultIntent);}@OverridepublicvoidonBaseContextAttache

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。