**部落格:wang jie's blog
原文:要解決這個問題,複雜的應用程式,如 uber 決定對它們的應用程式進行模組化並從中獲得了很多。下面是試用模組化專案的一些優勢:
由於上述優勢,當我剛開始posts這個應用時,我就在始終堅持使用模組化方法。對此,android 團隊已經給我們提供了一些工具,但是我確實遇到了一些障礙,一下是我學習到的內容:
你的應用會包含多個類似流程的模組,有authentication
,settings
,on-boarding
等等。當然還有一些不需要ui元素呈現的模組如 ——notifications
,analytics
,first-fetch
等等。這些模組包含與流程有關的 activities, repositories, entities和依賴注入相關東西。
但是這些模組中總是有一些共同的功能和工具。這就是為什麼你需要乙個 core 模組。
core
模組是乙個你專案中簡單的 module 庫。core 庫可以(除其它外),
核心(core
)模組的其中乙個職責是為你的功能(feature
)模組提供外部依賴。這使得很容易實現在你的feature
模組中共享相同版本的庫。只需要在你的core
模組的 dependencies 中使用api
,這樣你就能在所有feature
模組中使用它們。
dependencies
這個困擾我挺久的時間。我們希望把我們的資料庫定義到core
模組中,因為它是我們應用程式要共享的通用的功能。為了讓 room 工作,你需要乙個包含了所有 entity 類的資料庫檔案。
但是,如上面提到的,我們的 entity 類是被定義在@database(entities = [post::class, user::class, comment::class], version = 1,exportschema = false)
abstract class postdb : roomdatabase()
feature
模組中,而且core
模組不能去訪問它們。這是我碰到障礙的地方,經過一番思考後,你做了一件最棒的事,尋求 yigit 的幫助。
yigit 闡明了觀點,你必須要在每個feature
模組中都建立乙個新的 db 檔案,然後每個模組乙個資料庫。
這有幾個好處:
缺點:注意:為了 room 的註解能夠工作,不要忘記在你的feature
模組中增加下面依賴
kapt "android.arch.persistence.room:compiler:$"
你的 core 元件定義了它想要暴露給依賴元件的依賴關係
您的模組元件將@singleton
inte***ce corecomponent
corecomponent
定義為依賴項,並使用傳遞的依賴
我為我的功能的所有元件建立了乙個單例 holder。這個 holder 用於建立,維護和銷毀我的 component 例項。@listscope
@component(dependencies = [corecomponent::class], modules = [listmodule::class])
inte***ce listcomponent
@module
@listscope
class listmodule
注意:為了 dagger 的註解能夠工作,不要忘記在你的@singleton
object postdh
fun destroylistcomponent()
}
feature
模組中增加下面依賴
kapt "com.google.dagger:dagger-compiler:$"
謝謝。 Android元件化模組化在移動應用開發中
在移動應用上由於應用本身與使用者相貼近,日常開發中難免的需求變更朝令夕改 朝三暮四,尤其遇到沒啥規範流程的或者形式主義流程 關於元件化模組化是什麼及其優點不再贅述,在此補充點優點而已 減少名言的聯想 linus read the ing source code 我們的終極目標不僅是解耦。簡化框架,減...
模組化InnoSetup依賴項安裝
原文在這裡 說明 源 是模組化的,結構如下 你需要把所需的模組在頂部使用 include命令包含在源 中,例如 include scripts products dotnetfx11.iss 然後你只需要在 code 段呼叫它們的main函式,如 dotnetfx11 你很可能需要調整setup.i...
android 程式開發的外掛程式化 模組化方法 之二
public class andoirdpluginactivity extends activitygroup implements onclicklistener onscrollcompletelistener override public void onclick view v 載入外掛程...