news 2026/4/23 22:33:37

Android 插件化开发——宿主APP加载APK插件

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Android 插件化开发——宿主APP加载APK插件

本篇博客说一下我们的宿主APP怎样加载别的APK文件。
首先需要说一些知识点,我们的Java文件要想在Android环境运行,需要将.java文件通过转为class文件,然后为了能在DVM上面运行,再转为dex文件。同理反过来,我们在代码中要操作的基本都是class文件,但是class文件怎么来呢? 从DexClassLoader加载获取。
DexClassLoader和PathClassLoader什么区别呢?

  1. DexClassLoader可以加载jar/apk/dex,可以从SD卡中加载未安装的apk
  2. PathClassLoader只能加载系统中已经安装过的apk

至于具体源码区别:建议读一下DVM源码。本篇不再赘述,之后专门写一篇博客讲述DexClassLoader和PathClassLoader的区别。

**

加载外部APK

**
其实这个场景是这样的:

  1. 从服务器下载APK,保存在我们的手机储存卡内
  2. 读取APK文件,然后生成对应的DexClassLoader
  3. 通过DexClassLoader的loadClass方法读取插件APK dex中的任何一个类。

说干就干,首先我们创建一个项目MyPluginProject,在这个项目中创建一个Java类:TestModel

/** * author: liumengqiang * Date : 2019/7/27 * Description : */ public class TestModel { private String name; public void setName(String name) { this.name = name; } public String getName() { return name; } }

然后打包此项目生成:app-debug

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 22:30:23

从频谱仪到误码率曲线:工程师视角下的SNR与EbN0全链路解读

从频谱仪到误码率曲线:工程师视角下的SNR与EbN0全链路解读 在通信系统开发的实际工程场景中,信噪比(SNR)与比特信噪比(EbN0)的差异常常让工程师感到困惑。频谱仪上显示的SNR读数如何转化为系统仿真中的EbN0…

作者头像 李华
网站建设 2026/4/23 22:24:25

LotusDB批量操作完全指南:大幅提升数据写入效率

LotusDB批量操作完全指南:大幅提升数据写入效率 【免费下载链接】lotusdb Most advanced key-value database written in Go, extremely fast, compatible with LSM tree and B tree. 项目地址: https://gitcode.com/gh_mirrors/lo/lotusdb LotusDB是基于Go语…

作者头像 李华
网站建设 2026/4/23 22:23:25

Python实战:基于OpenCV的机械臂手眼标定(眼在手上)全流程解析

1. 手眼标定基础概念与准备工作 手眼标定是机器人视觉领域的关键技术,特别是在"眼在手上"(Eye-in-Hand)配置中。简单来说,就是确定相机安装在机械臂末端时,相机坐标系与机械臂末端坐标系之间的精确变换关系。…

作者头像 李华
网站建设 2026/4/23 22:23:24

NS-USBLoader完整教程:Switch玩家的终极文件管理神器

NS-USBLoader完整教程:Switch玩家的终极文件管理神器 【免费下载链接】ns-usbloader Awoo Installer and GoldLeaf uploader of the NSPs (and other files), RCM payload injector, application for split/merge files. 项目地址: https://gitcode.com/gh_mirror…

作者头像 李华
网站建设 2026/4/23 22:21:33

GitPython与Gitoxide:Python Git编程的终极进化指南

GitPython与Gitoxide:Python Git编程的终极进化指南 【免费下载链接】GitPython GitPython is a python library used to interact with Git repositories. 项目地址: https://gitcode.com/gh_mirrors/gi/GitPython GitPython是一个用于与Git仓库交互的Pytho…

作者头像 李华
网站建设 2026/4/23 22:19:18

终极指南:如何用svg-term-cli打造高清SVG终端动画

终极指南:如何用svg-term-cli打造高清SVG终端动画 【免费下载链接】svg-term-cli Share terminal sessions via SVG and CSS 项目地址: https://gitcode.com/gh_mirrors/sv/svg-term-cli svg-term-cli是一款强大的命令行工具,能够将终端会话转换为…

作者头像 李华