插件化
明天的增加
一切都是最好的安排
展开
-
Android 插件化开发(六)—— Replugin外部插件开发
配置环境请参考上一篇文章:https://blog.csdn.net/StudyOfAndroid/article/details/108233680本文只是将插件存放在外部,可以模拟文件下载,实际开发中插件肯定是要从服务端下载的,然后存放在指定的位置,这时候就需要将插件copy到宿主app的目录下,这样才能直接跳转使用。插件存放位置:public class MainActivity extends Activity { @Override protected void onC原创 2020-08-26 11:07:07 · 325 阅读 · 0 评论 -
Android 插件化开发(三)—— hook式插件化开发
原理:startActivity —> PluginActivity – (Hook ProxyActivity)(AMS)检测,当前要启动的Activity是否注册了)ok —》ActivityThread(即将加载启动Activity)----(要把这个ProxyActivity 换回来 --> PluginActivity)这里使用了两次Hook,最后启动PluginActivity的时候也会报错,因为插件并没有安装,这时候就需要将插件和宿主app合在一起加载,所以需要三部1、绕原创 2020-08-21 15:27:05 · 798 阅读 · 0 评论 -
Android 插件化开发(二) —— 占位式插件化开发
先上效果图项目结构:app:宿主apkplugin:插件apkstandard:标准,插件activity创建时候需要实现里面的接口1、创建标准/** * activity标准接口 */public interface ActivityInterface { /** * 把宿主的环境给 插件 * @param activity */ void insertAppActivity(Activity activity); void原创 2020-08-20 09:54:40 · 310 阅读 · 0 评论 -
Android 插件化开发(五)—— Replugin内部插件开发
最近在学习插件化开发,之前看的是VirtualApk,但是从2018年之后,已经没有人维护了,所以换成360的Replugin,先上效果图环境搭建:Android stuido 4.0gradle 3.1.3+4.4replugin 2.3.1com.android.support:appcompat-v7本次使用的是内部插件方式加载项目结构图环境搭建:因为是在同一个项目下的,所以在project中放入宿主和插件导入buildscript { repositories {原创 2020-08-26 10:12:10 · 850 阅读 · 0 评论 -
Android 插件化开发(一) —— 概要篇
插件化开发分为三种,如下1、占位式插件化开发原理:使用ProxyActivity代替要跳转的Activity,使用的上下文环境也是宿主的环境,因为插件并未安装加载,所以是没有环境的。Service、动态广播都是需要使用ProxyService、ProxyReceiver的。静态广播 就需要解析APK的manifest文件了特点:稳定,但是开发中会存在很多的问题,需要写很多的代理类,并且四大组件中的大部分方法都需要重写,上下文使用也是存在问题。2、Hook式:原理:将宿主app和插件app包一起加载原创 2020-08-19 17:37:12 · 388 阅读 · 0 评论 -
Android 插件化开发(四)—— LoadApk方式插件化开发
插件化开发的第三种方法,其实是在第二种Hook式方法上继续改进,因为第二种hook式存在一个问题,那就是第三步中将多个apk插件进行加载,导致dexElements会很大,占用内存比较大,很有可能当插件很多时候,直接oom,因此产生了一种新的方法,就是讲LoadApk进行扩展,当加载插件时候,使用插件的LoadApk,这样就不会产生占很大内存的dexElements了。下面是步骤:1、绕过AMS检测,使用ProxyActivity替换PluginActivity2、将ProxyActivity换回Pl原创 2020-08-24 15:20:25 · 1015 阅读 · 0 评论