1. 安装应用源码分析
在 VirtualApp 中,应用的安装主要通过 PackageParserEx
类中的 parsePackage()
方法完成。具体流程如下:
- 获取 apk 文件路径,并利用 Android 系统中的
PackageParser
解析 apk 文件。
File apkFile = new File(appPath);
PackageParser.Package pkg = PackageParserEx.parsePackage(apkFile, PARSE_DEFAULT);
- 校验 apk 文件的合法性,如检查签名是否正确等。
PackageParserEx.collectCertificates(pkg, PARSE_DEFAULT);
- 创建
VirtualApk
对象,并将解析到的应用信息设置给VirtualApk
对象。
VirtualApk virtualApk = new VirtualApk();
virtualApk.setPackageName(pkg.packageName);
virtualApk.setAppPath(appPath);
virtualApk.setApplicationName(applicationName);
virtualApk.setDataPath(dataPath);
virtualApk.setSignature(signatures);
...
- 将
VirtualApk
对象添加到VirtualApp
中。
VirtualApp.getInstance().addVirtualApk(virtualApk);
2. HomePresenterImpl 添加应用
在 VirtualApp 中,添加应用主要是通过 HomePresenterImpl
类的 bindApp()
方法完成。具体流程如下:
- 获取
VirtualApp
实例,并获取VirtualApp
中已安装应用列表。
VirtualApp virtualApp = VirtualApp.getInstance();
List<VirtualApk> virtualApkList = virtualApp.getInstalledApps();
- 将新安装的应用添加到
VirtualApp
中。
VirtualApk virtualApk = new VirtualApk();
virtualApk.setPackageName(packageName);
virtualApk.setAppPath(appPath);
virtualApk.setDataPath(dataPath);
virtualApkList.add(virtualApk);
- 将更新后的应用列表保存到
VirtualApp
中。
virtualApp.updateInstalledApps(virtualApkList);
3. AppRepository.addVirtualApp
在 VirtualApp 中,添加虚拟应用主要是通过 AppRepository
类的 addVirtualApp()
方法完成。具体流程如下:
- 获取
VirtualApp
实例,并获取AppRepository
中已安装虚拟应用列表。
VirtualApp virtualApp = VirtualApp.getInstance();
List<VirtualApk> virtualApkList = virtualApp.getInstalledVirtualApps();
- 将新添加的虚拟应用信息添加到
AppRepository
中。
virtualApkList.add(virtualApk);
- 将更新后的虚拟应用列表保存到
AppRepository
中。
virtualApp.updateInstalledVirtualApps(virtualApkList);
以上即为 Android 插件化 VirtualApp 中关于安装应用、添加应用的源码分析。通过详细分析源码,我们可以更深入地了解 VirtualApp 的实现原理,并在实际开发中灵活运用。
注:本文源码分析基于 VirtualApp v1.0.9 版本。
本文来自极简博客,作者:墨色流年,转载请注明原文链接:Android 插件化VirtualApp 源码分析