Android ------ ARouter實現項目組件化+插件化

前段時間學習JetPack的時候,寫了一個項目,順便把項目的結構分享一下,案例包含了以下內容

  1. 集成開發模式(每個模塊都是一個組件(Module),最終是單獨的apk)
  2. 組件開發模式(每個模塊都是一個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 進行組件化改造的框架 —— 支持模塊間的路由、通信、解耦

基礎功能

  1. 添加依賴和配置

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

Android ------ 阿里ARouter的使用

Android Jetpack簡介和使用

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章