
热修复与插件化
文章平均质量分 87
GitLqr
A Little White Developer
展开
-
RePlugin集成ARouter
欢迎关注微信公众号:FSA全栈行动 ????一、功能需求1、组件解耦 (ARouter)阿里开源的 ARouter 在组件化开发中这个库相当有用,其核心功能就是组件解耦,比如以往要跳转另一个 Activity 时,会使用如下代码:val intent = Intent(this, OtherActivity::class.java)startActivity(intent)这样的代码意味着耦合性极强,当前的 Activity 代码层面上直接引用了 OtherActivity,当项目中应用了模原创 2021-04-13 14:14:44 · 570 阅读 · 1 评论 -
RePlugin集成AndroidAutoSize
一、屏幕适配你可能会问 “都 2021 年了还折腾屏幕适配?直接用 dp 单位适配不好吗?”, 确实,如果公司的 UI 设计师、产品经理以及老板,能明白为什么一套 UI 在不同设备上显现出来的一些差异并不是 bug 时,开发者直接用 dp 单位配合一些布局技巧来进行适配是可以的,但是,实现多数情况下并不是如此美好,他们更希望看到的是 UI 在不同屏幕上,仅仅只是缩放的区别,为了满足这种要求,应用第三方屏幕适配方案就非常有必要了。根据在网上查到的比较好的原生屏幕适配方案有两种:smallestWidth原创 2021-03-31 16:00:59 · 381 阅读 · 0 评论 -
RePlugin强制退出App
RePlugin强制退出需求:插件中按“退出”按钮,就完全退出整个app,包括宿主。一、前提以下所有的理论,都是基于宿主跟插件使用同个进程这个大前提下,即不需要常驻进程。apply plugin: 'replugin-host-gradle'repluginHostConfig { useAppCompat = true persistentEnable = false // 设置为“不需要常驻进程”}“不需要常驻进程” 的目的是为了减少整个app的内存开销。二、问题原创 2021-01-17 09:47:15 · 416 阅读 · 0 评论 -
RePlugin集成Fresco
Fresco版本说明目前fresco最新版本2.3.0,但无法直接在插件中集成从1.14开始要求使用AndroidX ,向下选择1.13.0从1.10.0开始没有armeabi, 向下选择1.9.0从1.8.0开始强制使用SoLoader,向下选择1.7.1插件集成Fresco遇到的问题这里需要重点说明一下SoLoader问题,fresco在1.8.0版本开始,就使用SoLoader替换了SoLoaderShim,原文:SoLoader has been released f原创 2021-01-17 09:46:00 · 302 阅读 · 0 评论 -
DroidPlugin手札——home键强杀处理
DroidPlugin手札——home键强杀处理DroidPlugin是360开源的插件化框架,github地址为:https://github.com/DroidPluginTeam/DroidPlugin。因公司业务及项目历史原因,来公司的这段时间一直在使用DroidPlugin进行业务开发,期间遇到的一些问题在此进行总结记录。一、背景为了方便访客知道本章在解决什么问题,这里先把需求背...原创 2019-01-21 09:08:12 · 4995 阅读 · 0 评论 -
热修复与插件化基础——Java与Android虚拟机
一、Java虚拟机(JVM)1、JVM整体结构使用javac将java文件编译成class文件。类加载器(ClassLoader)将class字节码加载进JVM对应的内存中。JVM将内存分配给方法区、堆区、栈区、本地方式栈4个部分,这4个部分分别存储字节码不同的部分。垃圾回收器(gc)会管理整个内存空间中的垃圾。2、Java代码的编译和执行过程下图是Java代...原创 2018-05-13 20:31:07 · 695 阅读 · 0 评论 -
热修复与插件化基础——dex与class
一、dex/class浅析1、class与dex对比 类型 class文件 dex文件 定义 能够被jvm识别、加载并执行的文件格式 能够被dvm识别、加载并执行的文件格式 如何生成 使用java命令(javac) 使用java命令、dx命令 作用 记录一个类文件的所有信息 记录整个工程中所有类文件的信息2...原创 2018-05-13 20:21:58 · 631 阅读 · 0 评论 -
热修复与插件化基础——Java与Android的类加载器
一、java中的ClassLoader1、类加载器2、加载流程Loading:类的信息从文件中获取并载入到JVM的内存中。Verifying:检查读入的结构是否符合JVM规范的描述。Preparing:分配一人上结构用来存储类信息。Resolving:把类的常量池中的所有符号引用变成直接引用。Initializing:执行静态初始化程序,把静态变量初始化成指定...原创 2018-05-18 00:28:20 · 587 阅读 · 0 评论 -
热修复——Bugly让热修复变得如此简单
一、简述在上一篇《热修复——Tinker的集成与使用》中,根据Tinker官方Wiki集成了Tinker,但那仅仅只是本地集成,有一个重要的问题没有解决,那就是补丁从服务器下发到用户手机上,如果你团队中的后台开发人员实力够强,那么完全可以自己做一个补丁管理系统,但我想应该没多少人愿意花精力在这个后台管理系统的开发上面吧,且开发有时候就是在造bug,鬼知道会挖出一个多大的坑呢?对于这样的一个问题,据我原创 2017-12-12 17:30:10 · 2377 阅读 · 3 评论 -
热修复——Tinker的集成与使用
一、简述 Tinker是微信官方的Android热补丁解决方案,它支持动态下发代码、So库以及资源,让应用能够在不需要重新安装的情况下实现更新。当然,你也可以使用Tinker来更新你的插件。上面是Tinker官方Wiki的原话,意思嘛相信大家都看得明白,但注意啦,它并没有说Tinker可以让补丁实时生效(也叫无感知更新),它必须在打上补丁后重启App(重启进程),补丁才会发挥作用,这跟阿里的热原创 2017-12-06 17:51:26 · 1339 阅读 · 0 评论 -
热修复——深入浅出原理与实现
一、简述热修复无疑是这2年较火的新技术,是作为安卓工程师必学的技能之一。在热修复出现之前,一个已经上线的app中如果出现了bug,即使是一个非常小的bug,不及时更新的话有可能存在风险,若要及时更新就得将app重新打包发布到应用市场后,让用户再一次下载,这样就大大降低了用户体验,当热修复出现之后,这样的问题就不再是问题了。目前较火的热修复方案大致分为两派,分别是:阿里系:DeXposed、andf原创 2017-11-14 19:28:43 · 13742 阅读 · 16 评论