如何不使用多项目架构实现Android Gradle单文件构建
单build.gradle文件Android项目构建操作步骤
前置清理
- 移除项目根目录下的
settings.gradle文件 - 删除默认
app模块目录下的build.gradle文件,仅保留根目录下的1个build.gradle文件作为唯一配置文件
编写build.gradle配置
Gradle 7.0+版本参考配置如下:
// 顶部声明插件 plugins { id 'com.android.application' version '7.4.2' apply false id 'org.jetbrains.kotlin.android' version '1.8.0' apply false } // 全局公共配置 ext { compileSdk = 33 minSdk = 21 targetSdk = 33 versionCode = 1 versionName = "1.0" } // 全局仓库配置 allprojects { repositories { google() mavenCentral() } } // 应用插件 apply plugin: 'com.android.application' apply plugin: 'org.jetbrains.kotlin.android' // Android项目配置 android { namespace "com.example.myapplication" compileSdk rootProject.ext.compileSdk defaultConfig { applicationId "com.example.myapplication" minSdk rootProject.ext.minSdk targetSdk rootProject.ext.targetSdk versionCode rootProject.ext.versionCode versionName rootProject.ext.versionName testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } kotlinOptions { jvmTarget = '1.8' } // 指定源码、资源路径,对应原app模块的目录结构 sourceSets { main { manifest.srcFile 'app/src/main/AndroidManifest.xml' java.srcDirs = ['app/src/main/java'] res.srcDirs = ['app/src/main/res'] assets.srcDirs = ['app/src/main/assets'] } test.srcDirs = ['app/src/test/java'] androidTest.srcDirs = ['app/src/androidTest/java'] } } // 依赖配置 dependencies { // 依赖写法和原模块级build.gradle完全一致 implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'com.google.android.material:material:1.8.0' testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test.ext:junit:1.1.5' }
如果使用Gradle 7.0以下版本,将顶部plugins块替换为传统buildscript配置即可:
buildscript { repositories { google() mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:4.2.2' classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.21' } }
可选调整
如果不想保留原app目录结构,可以把app/src下的所有文件移到根目录src文件夹下,同步修改sourceSets里的路径为对应根目录路径即可。
内容的提问来源于stack exchange,提问作者Gieted
相关产品推荐
相关产品推荐

