手把手教你搭建android模块化项目框架(一)选择篇

2023-08-23  本文已影响0人  支离破碎_SuperLee

本系列旨在帮助android新人搭建属于自己的项目框架。由于篇幅较长,本人时间有限,因此更新系列可能周期较长。
本篇搭建框架适用于中大型项目。

经典框架选取

下面开始引入:
创建android项目这一步不多说,但是为了引入项目的一致性,我们创建deps.gradle文件,将项目中所有引入的库都放在该文件下,避免各个模块引入的库版本不一致。

rootProject.ext.compileSdkVersion = 33
rootProject.ext.targetSdkVersion = 33

rootProject.ext.minSdkVersion = 21

rootProject.ext.GLIDE_VERSION = "4.13.2"
rootProject.ext.lifecycle_version = "2.5.1"
rootProject.ext.roomVersion = '2.5.2'

rootProject.ext.deps = [

        /////////////////////////// Android官方库  //////////////////////////////////////////////////
        // android
        androidCoreKtx          : 'androidx.core:core-ktx:1.9.0',
        androidAnnotations      : 'androidx.annotation:annotation:1.6.0',
        androidAppCompat        : 'androidx.appcompat:appcompat:1.6.1',
        androidFragmentKtx      : 'androidx.fragment:fragment-ktx:1.5.5',
        androidActivityKtx      : "androidx.activity:activity-ktx:1.6.1",

        androidLifecycleViewModel : "androidx.lifecycle:lifecycle-viewmodel-ktx:$rootProject.ext.lifecycle_version",
        androidLifecycleRuntime   : "androidx.lifecycle:lifecycle-runtime-ktx:$rootProject.ext.lifecycle_version",


        // widget
        androidCardView         : 'androidx.cardview:cardview:1.0.0',
        androidRecyclerView     : 'androidx.recyclerview:recyclerview:1.2.1',
        androidPercent          : 'androidx.percentlayout:percentlayout:1.0.0',
        androidGridLayout       : 'androidx.gridlayout:gridlayout:1.0.0',
        androidConstraintLayout : 'androidx.constraintlayout:constraintlayout:2.0.4',
        androidPalette          : 'androidx.palette:palette-ktx:1.0.0',
        androidSwipe            : 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0',

        androidDesignLibrary    : 'com.google.android.material:material:1.4.0',
        androidFlexbox          : "com.google.android.flexbox:flexbox:3.0.0",

        // emoji2
        emoji2                  : "androidx.emoji2:emoji2:1.1.0",
        emoji2_views            : "androidx.emoji2:emoji2-views:1.1.0",
        emoji2_helper           : "androidx.emoji2:emoji2-views-helper:1.1.0",

        /////////////////////////// 第三方开源库  ///////////////////////////////////////////////////
        // di 依赖注入
        dagger                  : "com.google.dagger:dagger:2.44.2",
        daggerCompiler          : "com.google.dagger:dagger-compiler:2.44.2",

        // http
        okhttp                  : "com.squareup.okhttp3:okhttp:3.12.13",
        okio                    : "com.squareup.okio:okio:1.17.4",
        okhttpLoggingInterceptor: "com.squareup.okhttp3:logging-interceptor:3.12.13",
        networkConnectionClass  : "com.facebook.network.connectionclass:connectionclass:1.0.1",
        retrofit2AdapterRxJava  : "com.squareup.retrofit2:adapter-rxjava2:2.6.4",
        retrofit                : "com.squareup.retrofit2:retrofit:2.6.4",
        converter_gson          : "com.squareup.retrofit2:converter-gson:2.6.4",

        //json
        gson                    : "com.google.code.gson:gson:2.8.0",

        // glide
        glide                   : "com.github.bumptech.glide:glide:$rootProject.ext.GLIDE_VERSION",
        glideCompiler           : "com.github.bumptech.glide:compiler:$rootProject.ext.GLIDE_VERSION",

        // kv store
        tencentMmkv             : "com.tencent:mmkv-static:1.2.16",
]

由于是粘贴至其他项目的,版本可能不是最新的。
然后将该文件引入至gradle入口处,这样就可以在其他模块引用了。文件如下图


新建 BMP 图像.png

插入代码

plugins {
id 'com.android.application' version '8.1.0' apply false
    id 'org.jetbrains.kotlin.android' version '1.8.0' apply false
}
//引入该文件
apply from: "$rootDir/deps.gradle"

至此,就可以在其他模块中引入了,例如app.gradle中引入

dependencies {
    implementation rootProject.ext.deps.androidCoreKtx
    implementation rootProject.ext.deps.androidAppCompat
    implementation rootProject.ext.deps.androidDesignLibrary
}

本篇至此就结束了,至于gradle的更高级配置会在后续逐步说明。
项目地址
项目持续更新,每个步骤请查询tag

上一篇下一篇

猜你喜欢

热点阅读