
Android插件化开发指南
文章平均质量分 95
梦否
【@】bug修复,程序代做
展开
-
Android插件化开发指南——Hook技术(三)版本适配问题
文章目录1. 前言2. API版本大于26后的AMS1. 前言在Android插件化开发指南——Hook技术(一)【长文】对AMS进行Hook的时候,我重新创建了一个低版本的项目,并创建了对应的模拟器来运行程序,以得到AMS对象。当时所使用的API版本为30,所以其实可以知道25其实和30的AMS的Hook会略有不同。实际上两个分水岭为23和26。前面几篇博客中所给出的Hook得到AMS对象的为23到26之间的版本。对于大于等于26的版本需要重新做适配。再次查看Android版本和API级别的对应关系原创 2021-11-27 17:15:41 · 1530 阅读 · 0 评论 -
Android插件化开发指南——Hook技术(二)
文章目录1. 前言2. 分析3. 加载外部资源文件代码4. References1. 前言在上篇Android插件化开发指南——Hook技术(一)【长文】中提到最终的效果其实在插件中的MainActivity加载的资源文件activity_main.xml其实加载的还是宿主app的activity_main.xml文件。所以在这篇中将解决如何从插件apk中加载资源文件的问题。首先我们需要知道资源存储在apk包的什么位置,不妨在AS中打开插件的apk文件,可以看见其文件结构为: 也就是在resou原创 2021-11-27 10:51:41 · 1830 阅读 · 0 评论 -
Android插件化开发指南——Hook技术(一)【长文】
文章目录1. 前言2. 将外部dex加载到宿主app的dexElements中3. 插件中四大组件的调用思路4. Hook2.1 对startActivity进行Hook2.1.1 AMS2.1.2 源码分析1. 前言在Android插件化开发指南——插件化技术简介一文中曾提到插件化技术的实现需要使用 Android 系统底层的各种 Hook。在这篇博客中将来简单的介绍下什么是Hook,以及在Android中的一些实践。Hook中文意思为钩子,在编程中意为钩子函数。Hook原理为在某段SDK源码执行的原创 2021-11-26 20:20:53 · 2344 阅读 · 0 评论 -
Android插件化开发指南——类加载器
文章目录1. 前言1. 前言曾在JVM虚拟机知识点浅析总结中提到过在Java中的类加载器。我们知道Java中类的加载由类加载器完成,类加载器通常由JVM提供,这些类加载器也是前面所有程序运行的基础,JVM提供的这些类加载器通常被称为系统类加载器。除此之外,开发者可以通过继承ClassLoader基类来创建自己的类加载器。类加载器可以分为四类:启动类加载器(Bootstrap ClassLoader);主要负责加载 jre\lib\rt.jar 中的JDK文件。扩展类加载器(Extension Cl原创 2021-11-23 16:44:01 · 1077 阅读 · 0 评论 -
Android插件化开发指南——插件化技术简介
文章目录1. 为什么需要插件化技术2. 插件化技术的历史3. 其他1. 为什么需要插件化技术插件化技术最初源于将app中一些不常用的功能模块做成插件,主要有两个方面的好处:减小了安装包的大小;实现app功能的动态扩展;但实际上现在插件化80%的使用场景都是为了修复线上BUG。当将一个项目的各个功能抽离为单独的可运行的模块的时候,也就是插件化的时候。如果项目的某个模块出现了问题,那么需要在短时间内修复这个问题,而重新打包发布Android版到各大应用市场却已经来不及了。而插件化就可以做到只需要重原创 2021-11-21 20:49:50 · 3855 阅读 · 0 评论 -
Android常见设计模式——代理模式(Proxy Pattern)(二)
文章目录1. 前言2. 远程代理(Remote Proxy)3. 后记1. 前言在上篇Android常见设计模式——代理模式(Proxy Pattern)中基本上知道了什么是代理模式,以及对应的应该如何写代理模式的代码,了解了在Retrofit中没有被代理者的代理模式。在这篇中将继续围绕代理模式进行展开。在《Android源码设计模式》一书中提到:静态代理和动态代理是从编码的角度来区分代理模式的方式,同时也可以从其使用范围来区分不同类型的代理模式:远程代理(Remote Proxy):为某个对象在不原创 2021-11-21 16:11:17 · 1069 阅读 · 0 评论 -
Android常见设计模式——代理模式(Proxy Pattern)
文章目录1. 前言2. 代理模式(Proxy Pattern)2.1 静态代理模式2.2 动态代理模式3. Android 中的代理模式3.1 Retrofit中的代理模式(没有被代理者)1. 前言首先看下百度百科对代理模式的介绍:代理模式的定义:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。其实也就是中介模式或者委托模式。在日常生活中代理模式很多,比如叫同事带饭、打官司等。使用代理模式的原创 2021-11-20 20:53:54 · 2417 阅读 · 0 评论 -
Android插件化开发指南——基础之反射
文章目录1. 前言2. 反射2.1 获得代表类的Class对象2.1.1 getClass2.2.2 Class.forName2.2.3 类的class属性2.2.4 基本类型的TYPE属性2.2 获取类的成员2.2.1 构造函数2.2.2 普通方法2.2.3 静态方法2.2.4 私有非静态属性2.2.5 私有静态属性2.3 对泛型类的反射3. 后记1. 前言Java中最强大的技术:反射!为什么这么说,不妨再次来简单回忆一下Spring这个框架。 我们知道Spring 是目前主流的 Java原创 2021-11-12 21:28:54 · 1805 阅读 · 0 评论 -
Android插件化开发指南——实践之仿酷狗音乐首页(自定义ImageView控件)
文章目录1. 前言2. 基础环境——实现RecyclerView的网格布局3. 自定义ImageView3. 后记1. 前言拟定实现效果部分为下图的歌单列表部分,也就是图中红线框出来的部分。为了方便这里使用RecyclerView来进行实现,对于图中所需要的正方形图片显示控件,这里就考虑使用自定义的ImageView。2. 基础环境——实现RecyclerView的网格布局首先在xml文件中定义RecyclerView:<androidx.recyclerview.widget.Recyc原创 2021-11-11 11:32:10 · 1734 阅读 · 0 评论 -
Android插件化开发指南——实践之ViewPager+Fragment优化(预加载和懒加载)
文章目录1. 前言2. ViewPager+Fragment优化2.1 预加载2.2 懒加载3. 后记1. 前言ViewPager+Fragment的组合比较适合用来做页面的导航,这里因为在Android插件化开发指南——实践之仿酷狗音乐首页一文的实践中需要用来这块的知识。为了app加载更加流畅,这里考虑使用预加载和懒加载两种机制。当然,这里对于ViewPager+Fragment的简单实现,这里记录下:首先定义好ViewPager控件:<androidx.viewpager.widget.V原创 2021-11-09 16:19:53 · 2408 阅读 · 0 评论 -
Android插件化开发指南——实践之仿酷狗音乐首页
文章目录1. 前言2. 布局分析3. 底部导航栏的实现1. 前言在Android插件化开发指南——2.15 实现一个音乐播放器APP中介绍了音乐播放的基本知识,以及在最后提到了想仿一个音乐播放器,所以在接下来的日子里将继续仿造。上篇中介绍了仿酷狗音乐启动页——Activity转场效果,按照逻辑将进入主页部分,所以这篇将简单实现首页部分逻辑。首先先来张截图:2. 布局分析映入眼帘的是底部的导航栏部分,所以这里我使用Fragment来进行导航的实现。顶部是三选项栏关联了三个不同的布局页面,且可以侧滑切原创 2021-10-31 22:22:34 · 1388 阅读 · 0 评论 -
Android插件化开发指南——实践之Activity转场效果(仿酷狗音乐启动页)
文章目录1. 前言2. Activity退出动画2.1 简单使用2.2 overridePendingTransition3. 后记1. 前言在Android插件化开发指南——2.15 实现一个音乐播放器APP中介绍了音乐播放的基本知识,以及在最后提到了想仿一个音乐播放器,所以在接下来的日子里将继续仿造。刚刚结合Android启动页白屏/黑屏问题解决一文,简单实现了仿酷狗音乐的启动页面,具体效果如下:但是退出的效果和酷狗的退出效果差别很大,比如下面我截取片段:可以发现明显的页面退出效果更加炫酷。原创 2021-10-31 17:35:10 · 967 阅读 · 0 评论 -
Android插件化开发指南——2.15 实现一个音乐播放器APP
1. 前言最近对Android插件化开发比较感兴趣,也读了部分《Android插件化开发指南》这本书。在该书中1.4部分介绍了这么一句话:我们曾天真地认为,Android插件化是为了增加新的功能,或者增加一个完整的模块。费了不少时间和精力,等项目实施了插件化后,我们才发现,插件化80%的使用场景,是为了修复线上bug。我现在也粗浅的认为插件化是为了新增新的功能,至于修复线上bug这部分,确实还没有接触到或者说了解。希望后续自己能了解更多。对于《Android插件化开发指南》这本书,我决定将其消化原创 2021-10-28 10:53:46 · 896 阅读 · 0 评论