日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

【Android 插件化】“ 插桩式 “ 插件化框架 ( 原理与实现思路 )

發布時間:2025/6/17 Android 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Android 插件化】“ 插桩式 “ 插件化框架 ( 原理与实现思路 ) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Android 插件化系列文章目錄

【Android 插件化】插件化簡介 ( 組件化與插件化 )
【Android 插件化】插件化原理 ( JVM 內存數據 | 類加載流程 )
【Android 插件化】插件化原理 ( 類加載器 )
【Android 插件化】“ 插樁式 “ 插件化框架 ( 原理與實現思路 )
【Android 插件化】“ 插樁式 “ 插件化框架 ( 類加載器創建 | 資源加載 )
【Android 插件化】“ 插樁式 “ 插件化框架 ( 注入上下文的使用 )
【Android 插件化】“ 插樁式 “ 插件化框架 ( 獲取插件入口 Activity 組件 | 加載插件 Resources 資源 )
【Android 插件化】“ 插樁式 “ 插件化框架 ( 運行應用 | 代碼整理 )


文章目錄

  • Android 插件化系列文章目錄
  • 一、" 插樁式 " 插件化
  • 二、插件包中的組件類 與 應用中的組件類 區別
  • 三、" 代理 " 組件 與 " 插件 " 組件
  • 四、" 插樁式 " 插件化框架實現思路





一、" 插樁式 " 插件化



" 插件 " 模塊 編譯打包成 apk 文件 , 該文件包含 classes.dex 文件 , 被打包在了 apk 壓縮包中 ;

只要拿到了 apk 文件 , 就可以將其解壓 , 獲取到其中的 classes.dex 文件 , 可以自己實現一個 DexClassLoader 加載該 dex 文件 , 進而調用其中封裝的字節碼類對象 ;


" 插樁式 " 插件化 :" 宿主 " 模塊 應用中 , 將 " 插件 " 模塊 apk 插入到程序中 , 可以調用這些 apk 安裝包中的功能 ; " 宿主 " 模塊中需要提前預留好 插件組件 對應的 代理組件 接口 ;

類似于電腦主板 , 提前預制好插槽 , 可以插入內存條 , 顯卡等硬件設備 , 主板運行時調用這些設備 ;





二、插件包中的組件類 與 應用中的組件類 區別



應用中的組件 :

應用運行時 , 插件包 apk 是 運行后才加載的 , 將該 apk 文件中的 dex 加載到內存之后 , 其中的 Activity , Service 等組件類 , 與 當前應用運行的組件 是有區別的 , 這些新加入的組件類沒有上下文 ;

應用中的 Activity , Service 等組件初始化 , 不需要開發者干預 , 都是由系統完成的 , 這些組件都在清單文件中注冊過了 , 系統按照清單初始化相關組件 ;


插件包中的組件 :

插件包 apk 中的類 , 是通過 DexClassLoader 加載到內存中的 , 僅僅是加載了 字節碼數據 , 組件的初始化 , 賦予上下文等 , 必須 由開發者手動完成 , 應用系統是不管的 ;

加載的插件中的 Activity 并不是 Activity 組件 , 只是 有 Activity 方法 , 成員 , 繼承關系的字節碼類 ;

插件 Activity 類沒有生命周期 , 不在 ActivityManagerService 管理范疇內 ;

這些通過插件包加載進來的組件類的生命周期 , 需要開發者進行管理 ;





三、" 代理 " 組件 與 " 插件 " 組件



代理 Activity ( ProxyActivity ) 與 插件 Activity ( PluginActivity ) :

將加載進來的 Activity 類 ( PluginActivity ) 當做普通類 , 構造一個 代理 Activity , 命名為 ProxyActivity , 在 ProxyActivity 中 持有從 apk 插件包中加載的 PluginActivity 類對象 ;


ProxyActivity 是空的 Activity , 沒有任何實際的業務邏輯 , 只是作為一個 生命周期的轉接代理接口 ; 但是 ProxyActivity 有著完整的生命周期回調機制 , 在進入該界面時會回調 onCreate , onStart , onResume 生命周期方法 , 在退出該界面時會回調 onPause , onStop , onDestroy 生命周期方法 ;


在 ProxyActivity 中的生命周期方法中, 調用 PluginActivity 相應的生命周期方法即可 ;

ProxyActivity 運行時會有上下文 , PluginActivity 使用上下文時調用 ProxyActivity 的上下文 ;





四、" 插樁式 " 插件化框架實現思路



" 插樁式 " 插件化框架 實現思路 : 如果要加載 " 插件 " 模塊 編譯的 apk 插件包中的 Activity 類 , 需要執行如下流程 ;

① 加載類對象 : 使用 DexClassLoader 加載 Activity 對應的 Class 字節碼類對象 ;

② 管理生命周期 : 處理加載進來的 Activity 類的生命周期 , 創建 ProxyActivity , 通過其生命周期回調 , 代理管理 插件包中加載的未納入應用管理的組件 Activity 類 ;

③ 注入上下文 : 為加載進來的 Activity 類注入 上下文 ;

④ 加載資源 : 使用 AssetManager 將插件包 apk 中的資源主動加載進來 ;



總結

以上是生活随笔為你收集整理的【Android 插件化】“ 插桩式 “ 插件化框架 ( 原理与实现思路 )的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。