首页
首页
沸点
课程
直播
活动
竞赛
商城
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
shifujun
掘友等级
客户端开发
|
腾讯
获得徽章 0
动态
文章
专栏
沸点
收藏集
关注
作品
赞
5
文章 5
沸点 0
赞
5
返回
|
搜索文章
最新
热门
Shadow的全动态设计原理解析
我们在宣传Shadow的时候说了Shadow具有两大特性,其中一个叫做“全动态插件框架”。这篇文章就讲这个特性。我们很早之前用过一款基于数百反射私有API实现的插件框架,在前面的文章也提过,在这种插件框架里要不停的兼容新版本的Android系统,OEM系统。尤其是Activit…
Shadow解决Activity等组件生命周期的方法解析
每个Android插件框架要解决的首要问题都是Activity的生命周期问题。Activity代表了Service等其他需要注册的组件。不同是插件框架解决这个问题的前提也不完全一样。而我们的业务要求比较苛刻,再加上Android 9.0的非公开API限制,所以由这些前提要求: …
Shadow的缺点介绍
看到有网友看到Shadow的开源公告和Github主页的README之后,觉得都是报喜不报忧的介绍。我们也多少同意这个看法。如果开源一个项目,并不指望其他人能真正使用,也不期待收获网友们回馈的代码贡献,那么报喜不报忧问题不大。但是Shadow开源的目的不是单纯的吹嘘自己的技术多…
Shadow的跨进程设计与插件Service原理
这篇文章介绍一下Shadow的跨进程设计和插件Service的原理。一同讲这两部分是因为它们是相关的。这篇文章假设读者对于Android的Service、Binder通信没有那么了解,因此会提及一些可能对你来说有些简单的内容。 在Android系统中,应用可以是多进程的。这在移…
Shadow支持WebView使用file:///android_asset/协议加载插件资源的方法
在正常的App开发中,我们可以用这样的代码加载App的Assets中打包的Web页面。 Android系统实现这个功能时,并没有像我们想象的使用webview对象的Context去查找Assets资源。而是通过当前应用的ApplicationId,反查了当前安装的应用的apk路…
Shadow对插件包管理的设计
在Shadow开源的代码中,首先分为core层和dynamic层。core层就完成了插件框架的全部功能,dynamic层又将插件框架动态化起来了。然后core层本身主要也分为两部分,一部分是loader相关的,一部分是manager相关的。其中loader就是解决插件框架核心功…
调试研究Shadow对字节码编辑的正确姿势
Shadow是通过字节码编辑技术向插件插入中间层,完成插件技术的核心工作的。所以,有必要给新接触字节码编辑技术的同学分享一下研究这项技术的入门姿势。 Android 官方的构建过程提供了名为TransForm的API,详见这里 。这个API允许第三方插件在class转换成dex…
Shadow对PackageManager的处理方法
在Android开发中免不了使用PackageManager获取当前应用的一些信息。 从官方文档上能确定PackageManager一般都是通过Context的getPackageManager方法获得的,实际上我们平常开发中也只有这个途径。 显然,如果插件框架什么都不做,插件…
Shadow为什么要求插件和宿主包名一致
我们过去也用过基于各种反射实现的插件框架,用了3年左右时间,也维护了3年左右时间。在过去维护的经验中,我们就发现了插件使用单独包名(ApplicationId,下同)带来的问题。 ApplicationId一般是在build.gradle中设置的,在编译时这个字符串会被记录在2…
Android插件框架的两个作用
首先谈谈我们理解的Android插件框架有什么作用,免得大家同我们交流时不在一个频道。 我们理解的插件框架有两个作用:一是“自解耦”,二是“免安装”。 自解耦指的是一个应用原本由一份代码编译而成,希望改成将其中的一些功能单独编译,像插件一样动态插在主应用上。这样一来可是使主应用…
下一页
个人成就
文章被点赞
665
文章被阅读
104,437
掘力值
2,244
关注了
7
关注者
970
收藏集
0
关注标签
23
加入于
2019-06-26