前段時間學習JetPack的時候,寫了一個項目,順便把項目的結構分享一下,案例包含了以下內容
- 集成開發模式(每個模塊都是一個組件(Module),最終是單獨的apk)
- 組件開發模式(每個模塊都是一個apk)
“集成開發模式” 和 "組件開發模式"的切換開關 true表示組件獨立運行,false表示一個library
gradle.properties中
isRunModule = false
一個用於幫助 Android App 進行組件化改造的框架 —— 支持模塊間的路由、通信、解耦
組件化開發就是將一個app分成多個模塊,每個模塊都是一個組件(Module),開發的過程中我們可以讓這些組件相互依賴或者單獨調試部分組件等,但是最終發布的時候是將這些組件合並統一成一個apk,這就是組件化開發。
插件化開發和組件化開發略有不用,插件化開發時將整個app拆分成很多模塊,這些模塊包括一個宿主和多個插件,每個模塊都是一個apk(組件化的每個模塊是個lib),最終打包的時候將宿主apk和插件apk分開或者聯合打包。
Room出現錯誤 Android UserDataBase. UserDataBase_Impl does not exist
是使用Kotlin版本導致的
Java Room
/* implementation 'androidx.room:room-runtime:2.2.1' annotationProcessor "androidx.room:room-compiler:2.2.1"*/
//Kotlin Room
implementation 'android.arch.persistence.room:runtime:1.0.0' annotationProcessor 'android.arch.persistence.room:compiler:1.0.0' kapt 'android.arch.persistence.room:compiler:1.0.0'
一個用於幫助 Android App 進行組件化改造的框架 —— 支持模塊間的路由、通信、解耦
基礎功能
-
添加依賴和配置
android { defaultConfig { ... javaCompileOptions { annotationProcessorOptions { arguments = [AROUTER_MODULE_NAME: project.getName()] } } } } dependencies { // 替換成最新版本, 需要注意的是api // 要與compiler匹配使用,均使用最新版可以保證兼容 compile 'com.alibaba:arouter-api:x.x.x' annotationProcessor 'com.alibaba:arouter-compiler:x.x.x' ... }
Kotlin項目中的配置方式
// 可以參考 module-kotlin 模塊中的寫法 apply plugin: 'kotlin-kapt' kapt { arguments { arg("AROUTER_MODULE_NAME", project.getName()) } } dependencies { compile 'com.alibaba:arouter-api:x.x.x' kapt 'com.alibaba:arouter-compiler:x.x.x' ... } ```
初始化SDK
if (isDebug()) { // 這兩行必須寫在init之前,否則這些配置在init過程中將無效 ARouter.openLog(); // 打印日志 ARouter.openDebug(); // 開啟調試模式(如果在InstantRun模式下運行,必須開啟調試模式!線上版本需要關閉,否則有安全風險) } ARouter.init(mApplication); // 盡可能早,推薦在Application中初始化
APP build.gradle配置
if (!isRunModule.toBoolean()) { implementation project(':module-home') implementation project(':module-project') implementation project(':module-public') implementation project(':module-mine') }
Module build.gradle配置:
if (isRunModule.toBoolean()) { apply plugin: 'com.android.application' }else { apply plugin: 'com.android.library' }
代碼地址:https://github.com/DickyQie/android-jetpack