VOOZH about

URL: https://read01.com/zh-mo/mQ5Ny6.html

⇱ Android插件開發初探——分析篇 - 壹讀


Saturday, Apr 11, 2026

Android插件開發初探——分析篇

2015/05/12 來源:CSDN博客

我們通過使用DexClassLoader能夠將classes.dex中的類動態的加載進入當前進程。當然,也就可以預先定一些代理的接口完成四大組件的功能。

整體功能如下圖所示:
👁 Image
...

當然,對於一個Android的應用程式而言,只是動態的加載類與聲明四大組件是不夠的。如下圖所示,使我們常見到的一個APK文件解壓縮後的文件內容。

👁 Image
...

有過Android項目開發的同學看到此目錄應該不會特別的陌生,因為與我們開發Android應用程式時候的開發環境極為相似。但是,解壓出來的文件畢竟不是源碼,我們是無法直接閱讀和修改的。對於其中的每個文件夾與文件,說明如下:

- assets 聲音、字體、網頁...資源, - org 帶三方庫,如org.apache.http庫 - com 帶三方庫,不解釋 - lib 應用中使用到的native庫 - armeabi .so文件,c/c++代碼庫文件 - META-INF APK的簽名文件【***.RSA、***.SF、***.MF三個文件 】 - res 應用中使用到的資源目錄 - AndroidManifest.xml 應用的屬性定義文件 - classes.dex Java源碼編譯後的代碼文件 - resources.arsc 編譯後的資源文件

這個對於我們的插件安裝也是一樣的,從目錄中我們能夠看出,如果我們需要做一個插件框架。除了使用ClassDexLoader解析加載classes.dex之外,從一個正常的APK安裝流程中

我們還需要處理幾個問題:
  • 插件簽名校驗

  • 安裝native library,即完成Java Class與C/C++的調用

  • 處理AndroidManifest.xml,動態聲明不同的組件/權限/廣播/服務/Theme

  • 存儲ShreadPreference/SQLite/cache等文件

  • 插件卸載

  • 宿主調用插件的功能、插件回調宿主的代碼

  • 多個插件間功能的相互調用

只有完成了上述的幾個問題,我們才能將此框架認為是一個較為合理的插件框架,不然也只能算是一個動態啟動Activity的過程。

/*

* @author zhoushengtao(周聖韜)

* @since 2015年1月27日 上午14:02:22

* @weixin stchou_zst

* @blog

* @交流學習QQ群:341989536

* @私人QQ:445914891

/

您可能感興趣
免責聲明:本文內容來源于CSDN博客,文章觀點不代表壹讀立場,如若侵犯到您的權益,或涉不實謠言,敬請向我們提出檢舉
最新文章 / 服務條款 / 私隱保護 / DMCA / 聯絡我們

壹讀/READ01.COM