最近学了android热修复,在使用时遇到了许许多多的坑,在导入其依赖时

    //生成appilcation时使用(只在编译时使用,打包不起作用)    provided('com.tencent.tinker:tinker-android-anno:1.9.1')    //thinker的核心sdk库    implementation('com.tencent.tinker:tinker-android-lib:1.9.1')

但在最新版AndroidStudio时会提示provider过时

我就有一种冲动替换成最新的

什么,居然还有一片黄,再使用Alt+Enter换

替换好之后也不会报错,但是你在写ApplicationLike这个类的时候需要使用DefaultLifeCycle注解来将ApplicationLike对象装换成Application对象,但无论如何都找不到这个注解,后来还是看了看官方文档:tinker官方文档

一打开全tmd英文,脑袋大啊,但是还是看下去了,大家看英文文档还是要有耐心,如上图Use thinker-android-anno to generate your Application is recommended,翻译一下就是建议我们使用这个库生成我们的Application,原来就是我们使用thinker-android-anno这个库中出了问题,后来就按着官方文档又换回provider这就成功了。

当时我们要知其所以然,annotationProcessor只在编译的时候执行依赖的库,但是库最终不打包到apk中,简单的说,就是利用编译库达成目的,目的达成就把它抛弃了,我们要的仅仅是编译库的成果。差不多就是这个意思,概念到位即可。Provided 虽然也是编译时执行,最终不会打包到apk中,但是跟apt/annotationProcessor有着根本的不同。

A 、B、C都是Library。 A依赖了C,B也依赖了C App需要同时使用A和B 那么其中A(或者B)可以修改与C的依赖关系为Provided

A这个Library还是要用到C的,只不过它知道B那里也有需要C,自己再用就重复了,等app开始运行的时候,A就可以通过B得到C,也就是两人公用这个C。所以自己就在和B汇合之前,假设自己有C。如果运行的时候没有C,肯定就要崩溃了。总之Provided是间接的使用了依赖的Library,运行的时候必须使这个Library的存在,否则就会出错,避免依赖重复资源。

后来我查了一下,大家看一下这个新旧关系的替换表

图片转载地址:https://blog.csdn.net/u013795543/article/details/82227308

更多相关文章

  1. Python-uiautomator使用说明文档
  2. Android支付宝快捷登录
  3. 淘宝(阿里百川)手机客户端开发日记第一篇 android 主框架搭建(二
  4. 让Android软键盘默认进入英文键盘
  5. Android(安卓)Error: execution failed for task ':app:transfor
  6. 用android 自带的包进行网络请求
  7. Android(安卓)XML属性在文档中的位置
  8. 自定义字体| Using a custom typeface in Android
  9. android官方技术文档翻译——aar 格式

随机推荐

  1. Android studio相对布局的常用属性
  2. Android(安卓)进度条 ProgressBar (模拟图
  3. Android学习过程
  4. Android百度地图——路径规划(驾车、步行
  5. Android内存泄露利器MLT(整合篇)
  6. Android标题栏TitleBar全攻略
  7. execlp启动android进程命令窗口通过adb s
  8. Android EditView属性详细介绍
  9. Android 面试题
  10. Ubuntu上开发Android