插件化知识详细分解及原理 之Binder机制

本文详细介绍了Android插件化的基础知识,包括其起源、应用场景、知名插件化框架和热修复框架。重点讲解了插件化面临的代码和资源加载问题,以及四大组件的生命周期管理。在准备部分,提到了理解插件化需要掌握的Binder机制、代理模式、反射等关键知识点。文中还解析了Binder的IPC通信过程,为后续的插件化实现打下基础。
摘要由CSDN通过智能技术生成

最近一直在研究插件化的东西,我看了网上大多都是直接上来就开始讲解原理然后写个demo,这样对于很多没有入门的朋友不是很好的理解,下面我会通过自己的研究过程,一步一步循序渐进的将插件化需要的知识点都梳理一遍及讲解,其实学习插件化的好处并不全因为它是一门热门的技术,插件化涉及的知识点很多,可以让我们对android的理解及境界上都会有一个质的飞跃,在我将所有设计的知识点都大概讲一遍后会用一个demo来实现插件化,里面将设计所有讲过的知识。

插件化其实就是动态加载,动态加载又包括了代码加载和资源加载。

可以干什么:

  • 插件化最早出现是因为65535问题出现的,用于查分多个dex并动态加载dex来防止65535问题

  • 现在很多公司用插件化来做模块的动态加载,这样既能实现web端一样的随时更新,还能减少apk包的体积,其实就是加载一个未安装的apk。

  • 热修复,热修复其实也是动态加载原理

  • 换肤,使用动态的资源加载可以实现换肤功能

  • 还可以通过hook系统的一些类做一些你想做的坏事。

目前比较有名的插件化框架:

目前比较火的热修复框架:

如果要使用插件化来作为模块化的话,那么就需要解决两个问题

  • 代码的加载,就是使用ClassLoader加载代码
  • 资源的加载,使用AssetManager的隐藏方法,addAsssetPath方法加入一个资源路径来获取这个资源的Resource资源
  • 还有一个问题就是对四大组件的生命周期管理

准备:

在了解插件化之前首先需要了解及掌握的知识点
一、Binder机制
二、代理模式
三、反射
四、类加载及dex加载
五、应用启动过程及类加载过程
六、实现插件化完整demo及思路分析
七、动态加载资源及解决资源冲突问题

Binder机制:

其实Binder看你怎么去理解,如果从代码角度的话他是一个类,如果从硬件角度的话他是一个驱动,如果从IPC角度的话他是一种通信机制,是framework层的各种ServiceManager的链接桥梁,
我们知道我们平时使用的系统服务对象其实都是系统的,他们存在的进程和我们的应用并不在一个进程中,但是为什么我们能直接使用呢?其实就是因为Binder的存在,跨进程通信,再说大白话一点就是使用了我们经常说的aidl,Binder很复杂,这里只是为了插件化做铺垫,想深入理解请自行查阅资料。

进程间通信过程

  • 1.首先客户端要链接服务端
  • 2.然后服务端会返回一个客户端的对象(代理对象)
  • 3.然后客户端使用这个代理对象其中的方法时,系统会先调用服务端的方法,然后将运算的结果返回给客户端(要知道其实并不是用了这个对象的方法,而是去服务端里运算,然后在返回给客户端的)

我们通过自己写一个aidl,然后和系统的源码进行对比

//我们自己写的aidl的接口
//IMyAidlInterface.aidl
package com.huanju.chajianhuatest;
import com.huanju.chajianhuatest.aidlmode.TestBean;

interface IMyAidlInterface {
    /**
     * Demonstrates some basic types that you can use as parameters
     * and return values in AIDL.
     */
    void basicTypes(int anInt, long aLong, boolean aBoolean, float aFloat,
            double aDouble, String aStri
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值