Android外掛程式化架構

來源:互聯網
上載者:User

標籤:廠商   子類   按需載入   tac   兩種   運用   通訊   hub   nbsp   

  1. 1.   dynamic-load-apk/DL動態載入架構

  是基於代理的方式實現外掛程式架構,對 App 的表層做了處理,通過在 Manifest 中註冊代理組件,當啟動外掛程式組件時,首先啟動一個代理組件,然後通過這個代理組件來構建,啟動外掛程式組件。 需要按照一定的規則來開發外掛程式 APK,外掛程式中的組件需要實現經過改造後的 Activity、FragmentActivity、Service 等的子類。

優點如下:

  • 動態升級,
  •  高效並行開發(編譯速度更快)
  •  按需載入,記憶體佔用更低等等DynamicLoadApk 提供了 3 種開發方式,讓開發人員在無需理解其工作原理的情況下快速的整合外掛程式化功能。
  • 外掛程式需要遵循一定的規則,因此安全方面可控制。
  • 方案簡單,適用於自身少量代碼的外掛程式化改造。
  • plugin 無需安裝即可由宿主調起。
  • 支援用 R 訪問 plugin 資源
  • plugin 支援 Activity 和 FragmentActivity(未來還將支援其他組件)
  • 基本無反射調用
  • 外掛程式安裝後仍可獨立運行從而便於調試
  • 支援 3 種 plugin 對 host 的調用模式:

(1)無調用(但仍然可以用反射調用)。

(2)部分調用,host 可公開部分介面供 plugin 調用。 這前兩種模式適用於 plugin 開發人員無法獲得 host 代碼的情況。

(3)完全調用,plugin 可以完全調用 host 內容。這種模式適用於 plugin 開發人員能獲得 host 代碼的情況。

  • 只需引入 DL 的一個 jar 包即可高效開發外掛程式,DL 的工作過程對開發人員完全透明
  • 支援 android2.x 版本

 

缺點如下:

  • 不支援通過 This 調用組件的方法,需要通過 that 去調用。
  • 由於 APK 中的 Activity 沒有註冊,不支援隱式調用 APK 內部的 Activity。
  • 外掛程式編寫和改造過程中,需要考慮相容性問題比較多,聯調起來會比較費時費力。
  1. 2.      DroidPlugin

DroidPlugin 是 360 手機小幫手實現的一種外掛程式化架構,它可以直接運行第三方的獨立 APK 檔案,完全不需要對 APK 進行修改或安裝。一種新的外掛程式機制,一種免安裝的運行機制,是一個沙箱(但是不完全的沙箱。就是對於使用者來說,並不知道他會把 apk 怎麼樣), 是模組化的基礎。

優點如下:

  • 支援 Android 四大組件,而且外掛程式中的組件不需要在宿主 APK 中註冊。
  • 支援 Android 2.3 及以上系統,支援所有的系統 API。
  • 外掛程式與外掛程式之間,外掛程式與宿主之間的代碼和資源完全隔閡。
  • 實現了進程管理,外掛程式的空進程會被及時回收,佔用記憶體低。

缺點如下:

  • 外掛程式 APK 中不支援自訂資源的 Notification,通知欄限制。
  • 外掛程式 APK 中無法註冊具有特殊的 IntentFilter 的四大組件。
  • 由於外掛程式與外掛程式,外掛程式與宿主之間的代碼完全隔離,因此,外掛程式與外掛程式,外掛程式與宿主之間的通訊只能通過 Android 系統層級的通訊方式。
  • 安全性擔憂(可以修改,hook一些重要訊息)。
  • 機型適配(不是所有機器上都能行,因為大量用反射相關,如果rom廠商深度定製了framework層,反射的方法或者類不在,容易外掛程式運用失敗)

1.3. Small架構

Small 是一種實現輕巧的跨平台外掛程式化架構,基於“輕量、透明、極小化、跨平台”的理念,更傾向於組件化。跳轉外掛程式的介面都是通過uri來指定的.

優點如下:

  • 所有外掛程式支援內建宿主包中。
  • 外掛程式的編碼和資源檔的使用與普通開發應用沒有差別。
  • 通過設定 URI ,宿主以及 Native 應用外掛程式,Web 外掛程式,線上網頁等能夠方便進行通訊。
  • 支援 Android 、 iOS 、和 Html5 ,三者可以通過同一套 Javascript 介面實現通訊。

缺點如下:

  • 暫不支援 Service 的動態註冊,不過這個可以通過將 Service 預先註冊在宿主的 AndroidManifest.xml 檔案中進行規避,因為 Service 的更新頻率通常非常低。
  1. 4.   DynamicAPK(攜程)

組件化架構,目前已停止維護

  1. 5.   AndroidDynamicLoader

通過fragment實現,限制太多。

  1. 6.   ACCD阿里

ACDDCore Android動態部署架構(你可以認為是外掛程式,但又與外掛程式不一樣),與傳統意義上的外掛程式不一樣,用過代理的應該知道,代理方式會有各種莫名其妙的問題。

   

 

 

 

Android外掛程式化架構

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.