編輯:關於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、前言 等級信號狀態的View在現在的Android系統中非常的常見,比如手機右上角的電池狀態的圖標就非常的經典,有幾種狀態,到了快沒電的時候有些還會閃爍提示用戶充電;
關於事件你應該知道的是當一個事件產生後,他的傳遞過程遵循如下順序Activity > Window > View事件來源於activity,activity假
在Android開發和調試的過程中,Log的使用是非常頻繁的,一個好的Log工具可以幫你節省很多時間,所以凱子哥抽空寫了個這個開源項目KLog,希望可以幫助大家提高開發
1. Android Parcelable code generator顧名思義,這是個生成實現了Parcelable接口的代碼的插件。在你的類中