2017-02-27 73 views
0

我正在尋找重新設計基於庫的Android應用程序,以便在構建時不提供每個庫的功能(僅限於擴展給我),我只是提供一個基礎應用程序和SDK,它允許任何開發人員獨立編寫插件。基於APK和基於服務的插件

我找不到在Android上完成此操作的很多方法(與支持獨立DLL的.NET的Unity依賴注入框架不同)。我發現:基於

  1. APK方法:基於 http://blog.raffaeu.com/archive/2015/05/31/android-plugin-application.aspx

  2. 服務的方法: http://androidsrc.net/creating-android-app-plugin-architecture-tutorial/

我的問題是:有沒有實現這一點的其他方式? (注意:合法來自Google Play的ToS)

另外,在您看來,上面列出的兩種方法中的哪一種更爲優越?

+1

1和2是不可分的,只要您不能有沒有APK的服務。任何IPC選項(活動,服務,接收者,提供者)都可以構成插件系統的一部分。 – CommonsWare

+0

謝謝,但爲什麼downvote?這不是一個無知的人可以提出證明某種無知的問題的地方嗎? :)請發表您的評論作爲答案,我會接受它。謝謝。 –

+1

「但爲什麼downvote?」 - 我沒有倒下問題。如果我不得不猜測,那是因爲您引用了Play商店的ToS,並且[有關應用程序分銷渠道的問題被認爲是無關緊要的](http://meta.stackoverflow.com/questions/272165/are-developer-中心 - 問題 - 關於 - 應用商店上話題)。此外,「優越」意味着尋求意見,這也被認爲是無關緊要的。 – CommonsWare

回答

3

通常,如果應用程序會接受來自其他開發者的某種插件,則無論是通過Play商店還是其他渠道,這些插件都會以APK文件的形式分發。例如,這些插件可能需要與您的權限不同的權限,並且只有在Android設備上的頭等公民才能實現。

因此,一個插件僅僅是一些其他的應用程序,通過一些記錄和支持的IPC機制與您的交互。四大Android組件—活動,服務,接收者和提供者—都可能與插件相關。這真的取決於你想要插件做什麼以及插件需要從你的應用程序能夠做到這一點。在摘要中,我們不能告訴你哪些使用。就個人而言,如果我打算做這種事情,我會寫基本應用程序加上至少三個插件。在編寫這些插件時,「吃自己的狗食」的行爲將有助於指導您採用何種IPC機制。即使您最終將插件的功能直接發佈到主應用中,擁有「真實」插件將有助於塑造您的SDK和安全模型等。