目前最受用戶關注的智能手機手機操作系統是安卓手機操作系統,獲得了70%.1的關注比例,ios和阿裡雲的“山寨安卓“分別為15.9%和2.9%。對於這款剛剛推出就深受廣大開發者喜愛的產品。一般的,一個Android應用在開發到了一定階段以後,功能模塊將會越來越多,APK安裝包也越來越大,用戶在使用過程中也沒有辦法選擇性的加載自己需要的功能模塊。此時可能就需要考慮如何分拆整個應用了,因此android插件開發的需求也不斷的增大。
有人可能會想到,是否可以像其他平台那樣,下載一個類似於dll文件,或者jar包,就能自動識別並且加載該功能?可惜的是,在Android平台上是不允許直接動態加載jar包的,作者也沒有想到類似辦法。所以,想實現這種功能,還是要以獨立APK的方式來加載。和第一種方式不同的是,從設計的角度,具體的插件是沒有獨立運行的入口的,也不允許有桌面圖標存在,必須從主應用中打開,關閉後回到主應用。從用戶的角度看,可以在應用中加載需要的功能並且使用,也就類似於其他平台插件的方式了。
為了實現這種方式,從插件開發的角度,就需要考慮清楚哪些功能作為獨立的插件提供給用戶,這裡不再詳述。下面從開發的角度說明大致需要做的工作。
1、主應用中需要開發的框架功能:
識別具體的插件是否已經安裝(根據插件的package名)
如果已經安裝要判斷是否需要升級(服務器端獲取最新的版本和本地的比較)
下載並且安裝(或者升級)插件
卸載該插件
2、插件APK開發中需要注意的事項:
Manifest文件中不要提供啟動的入口。
3、主應用和插件之間交互的提示:
最好是使用相同的android:sharedUserId,插件可以方便的獲取主應用的資源、數據庫等等。
主應用可以以Intent方式啟動具體的插件,同時帶入Map類型參數或者json串參數,在android插件開發APK中解析具體參數,實現業務邏輯。