**部落格: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 類的資料庫檔案。
@database(entities = [post::class, user::class, comment::class], version = 1,exportschema = false)
abstract class postdb : roomdatabase()
但是,如上面提到的,我們的 entity 類是被定義在feature
模組中,而且core
模組不能去訪問它們。這是我碰到障礙的地方,經過一番思考後,你做了一件最棒的事,尋求 yigit 的幫助。
yigit 闡明了觀點,你必須要在每個feature
模組中都建立乙個新的 db 檔案,然後每個模組乙個資料庫。
這有幾個好處:
缺點:注意:為了 room 的註解能夠工作,不要忘記在你的feature
模組中增加下面依賴
kapt "android.arch.persistence.room:compiler:$"
你的 core 元件定義了它想要暴露給依賴元件的依賴關係
@singleton
inte***ce corecomponent
您的模組元件將corecomponent
定義為依賴項,並使用傳遞的依賴
@listscope
@component(dependencies = [corecomponent::class], modules = [listmodule::class])
inte***ce listcomponent
@module
@listscope
class listmodule
我為我的功能的所有元件建立了乙個單例 holder。這個 holder 用於建立,維護和銷毀我的 component 例項。
@singleton
object postdh
fun destroylistcomponent()
}
注意:為了 dagger 的註解能夠工作,不要忘記在你的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 載入外掛程...