【Android 插件化】VirtualApp 源码分析 ( 安装应用源码分析 | HomePresenterImpl 添加应用 | AppRepository.addVirtualApp )
生活随笔
收集整理的這篇文章主要介紹了
【Android 插件化】VirtualApp 源码分析 ( 安装应用源码分析 | HomePresenterImpl 添加应用 | AppRepository.addVirtualApp )
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 一、安裝應用源碼分析
- 1、HomePresenterImpl 添加應用
- 2、AppRepository.addVirtualApp 安裝 SD 卡 APK 應用
一、安裝應用源碼分析
1、HomePresenterImpl 添加應用
mPresenter.addApp(info); 實際上調用的是 io.virtualapp.home.HomePresenterImpl 類的 addApp() 方法 , 安裝應用 , 傳入 AppInfoLite info 參數 , 封裝如下值 :
packageName : com.example.filepath , path : /storage/emulated/0/./app-debug.apk , fastOpen : false通過 VirtualCore.get().getInstalledAppInfo(info.packageName, 0); 代碼 , 獲取該應用是否安裝過 ,
- 如果應用安裝過 , 則該安裝操作是克隆應用 ;
- 如果應用沒有安裝過 , 則該安裝操作是從 SD 卡安裝 ; 如果是從 SD 卡安裝 , 則調用 InstallResult res = mRepo.addVirtualApp(info); 進行安裝操作 ;
2、AppRepository.addVirtualApp 安裝 SD 卡 APK 應用
InstallResult res = mRepo.addVirtualApp(info); 方法調用的是 AppRepository 類的 addVirtualApp 方法 ;
public class AppRepository implements AppDataSource {@Overridepublic InstallResult addVirtualApp(AppInfoLite info) {// int COMPARE_VERSION = 0X01 << 3;// int SKIP_DEX_OPT = 0x01 << 6;int flags = InstallStrategy.COMPARE_VERSION | InstallStrategy.SKIP_DEX_OPT;// fastOpen 值是 false , 該分支沒有命中if (info.fastOpen) {flags |= InstallStrategy.DEPEND_SYSTEM_IF_EXIST;}// 安裝 SD 卡中的 APK 文件return VirtualCore.get().installPackage(info.path, flags);} }原始數據 AppInfoLite info 如下 :
I/HSL: packageName : com.example.filepath , path : /storage/emulated/0/./app-debug.apk , fastOpen : false此處找到了可以直接調用的 API 方法 , 調用 VirtualCore.get().installPackage( SD卡絕對路徑 , 0X01 << 3 | 0x01 << 6); API 安裝某個路徑中中的 APK 文件 ;
flags 值參考 : 0X01 << 3 | 0x01 << 6 ;
// int COMPARE_VERSION = 0X01 << 3;// int SKIP_DEX_OPT = 0x01 << 6;int flags = InstallStrategy.COMPARE_VERSION | InstallStrategy.SKIP_DEX_OPT;InstallStrategy 常量類定義 :
public interface InstallStrategy {int TERMINATE_IF_EXIST = 0x01 << 1;int UPDATE_IF_EXIST = 0x01 << 2;int COMPARE_VERSION = 0X01 << 3;int IGNORE_NEW_VERSION = 0x01 << 4;int DEPEND_SYSTEM_IF_EXIST = 0x01 << 5;int SKIP_DEX_OPT = 0x01 << 6; }總結
以上是生活随笔為你收集整理的【Android 插件化】VirtualApp 源码分析 ( 安装应用源码分析 | HomePresenterImpl 添加应用 | AppRepository.addVirtualApp )的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Android 插件化】Virtual
- 下一篇: 【Android 插件化】Virtual