Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android插件開發初探——分析篇

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

編輯:關於Android編程

 


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

整體功能如下圖所示:

這裡寫圖片描述

當然,對於一個Android的應用程序而言,只是動態的加載類與聲明四大組件是不夠的。如下圖所示,使我們常見到的一個APK文件解壓縮後的文件內容。<喎?/kf/ware/vc/" target="_blank" class="keylink">vcD4NCjxwPjxpbWcgYWx0PQ=="這裡寫圖片描述" src="/uploadfile/Collfiles/20150513/2015051308365838.png" title="\" />


有過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的過程。

 
 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved