Android 插件化初识

插件化技术源于免安装运行apk的想法,支持插件化的app可在运行时加载和运行插件,能减小安装包大小、实现功能动态扩展。实现插件化需解决代码加载与调用、资源加载与访问、组件生命周期管理等问题,还有宿主和插件分开编译、并发开发等好处。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

插件化介绍:

插件化技术最初源于免安装运行apk的想法,这个免安装的apk可以理解为插件。支持插件化的app可以在运行时加载和运行插件,这样便可以将app中一些不常用的功能模块做成插件,一方面减小了安装包的大小,另一方面可以实现app功能的动态扩展。想要实现插件化,主要是解决下面三个问题:

  • 插件中代码的加载和与主工程的互相调用
  • 插件中资源的加载和与主工程的互相访问
  • 四大组件生命周期的管理

插件化好处

宿主和插件分开编译
编译时只需要编译宿主app,插件app是在编译好后下发到宿主app里的。
并发开发
宿主app什么时候发布版本跟插件app什么时候开发完没有关系,宿主app只要开发完并且为插件app提供一个入口就可以了。
动态更新插件
插件app在开发完后下发到宿主app里,点击相应的入口就可以跳转到最新版的插件app了。
按需下载模块
解决方法数或变量数爆棚(65536)

直接上代码吧:

 //得到packageManager来获取包信息
        PackageManager packageManager = context.getPackageManager();
        //参数一是apk的路径,参数二是希望得到的内容
        PackageInfo packageInfo = packageManager.getPackageArchiveInfo(path, PackageManager.GET_ACTIVITIES);
        //得到插件app的入口activity名称
        ActivityInfo[] lists = packageInfo.activities;
        //得到插件app的入口activity名称
        entryName = packageInfo.activities[0].name;

 

 

 //由于构建resources必须要传入AssetManager,这里先构建一个AssetManager
        try {
            AssetManager assetManager = AssetManager.class.newInstance();
            Method addAssetPath = AssetManager.class.getMethod("addAssetPath", String.class);
            addAssetPath.invoke(assetManager, path);

            resources = new Resources(assetManager, context.getResources().getDisplayMetrics(), context.getResources().getConfiguration());
        } catch (Exception ignored) {

        }

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值