本系列旨在帮助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入口处,这样就可以在其他模块引用了。文件如下图
插入代码
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