本文共 5283 字,大约阅读时间需要 17 分钟。
Android Gradle 项目采用模块化设计,核心文件包括:
buildscript { repositories { google() jcenter() } dependencies { // 第三方插件版本控制 classpath "com.android.tools.build:gradle:4.1.2" }}allprojects { repositories { google() jcenter() }}// 定义清理任务task clean(type: Delete) { delete rootProject.buildDir} plugins { id 'com.android.application'}android { compileSdkVersion 30 buildToolsVersion "30.0.3" defaultConfig { applicationId "com.example.myapplication" minSdkVersion 21 targetSdkVersion 30 versionCode 1 versionName "1.0" } signingConfigs { release { storeFile file('./key.jks') storePassword "111111" keyAlias "app" keyPassword "123456" } debug { storeFile file('./key.jks') storePassword "111111" keyAlias "app" keyPassword "123456" } } buildTypes { release { signingConfig signingConfigs.release minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' shrinkResources true zipAlignEnabled true } debug { signingConfig signingConfigs.debug minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' applicationIdSuffix '.debug' versionNameSuffix "_debug" } } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 }}dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') implementation 'androidx.appcompat:appcompat:1.2.0' implementation 'com.google.android.material:material:1.2.1' implementation 'androidx.constraintlayout:constraintlayout:2.0.4' testImplementation 'junit:junit:4.+' androidTestImplementation 'androidx.test.ext:junit:1.1.2' androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'} configurations { all*.exclude group: 'com.android.support', module: 'support-annotations'} all*.exclude group: 'com.android.support', module: 'support-annotations'
ext { isModule = false android = [ compileSdkVersion: 30, applicationId: "com.example.myapplication", minSdkVersion: 21, targetSdkVersion: 30, versionCode: 1, versionName: "1.0" ] dependencies = [ "appcompat": 'androidx.appcompat:appcompat:1.2.0', "material": 'com.google.android.material:material:1.2.1', "circleimageview": 'de.hdodenhof:circleimageview:3.0.0' ]} apply from: "config.gradle"
android { compileSdkVersion rootProject.ext.android["compileSdkVersion"] defaultConfig { applicationId rootProject.ext.android["applicationId"] minSdkVersion rootProject.ext.android["minSdkVersion"] targetSdkVersion rootProject.ext.android["targetSdkVersion"] versionCode rootProject.ext.android["versionCode"] versionName rootProject.ext.android["versionName"] }}dependencies { implementation rootProject.ext.dependencies["appcompat"] implementation rootProject.ext.dependencies["material"] implementation rootProject.ext.dependencies["circleimageview"]} flavorDimensions 'channel'productFlavors { xiaomi { applicationId 'com.test.appid_xiaomi' buildConfigField "String", "baseUrl", '"www.xiaomi.com"' resValue "string", "tip", "hello 小米" manifestPlaceholders = [CHANNEL_VALUE: "xiaomi", APP_NAME: "小米"] } huawei { applicationId 'com.test.appid_huawei' buildConfigField "String", "baseUrl", '"www.huawei.com"' resValue "string", "tip", "hello 华为" manifestPlaceholders = [CHANNEL_VALUE: "huawei", APP_NAME: "华为"] }} flavorDimensions 'channel', 'app'productFlavors { v1 { dimension "app" applicationId 'com.test.appid_v1' } v2 { dimension "app" applicationId 'com.test.appid_v2' } xiaomi { dimension "channel" applicationId 'com.test.appid_xiaomi' manifestPlaceholders = [CHANNEL_VALUE: "xiaomi", APP_NAME: "小米"] buildConfigField "String", "baseUrl", '"www.xiaomi.com"' } huawei { dimension "channel" applicationId 'com.test.appid_huawei' manifestPlaceholders = [CHANNEL_VALUE: "huawei", APP_NAME: "华为"] buildConfigField "String", "baseUrl", '"www.huawei.com"' }} applicationVariants.all { variant -> variant.outputs.all { output -> def outputFile = output.outputFile if (outputFile != null && outputFile.name.endsWith(".apk")) { def flavorsName = variant.productFlavors[0].name outputFileName = "app_${flavorsName}.apk" } }} 通过以上配置,开发者可以高效管理Android项目的构建过程,实现代码复用和依赖管理,同时支持多渠道构建和版本控制。
转载地址:http://zrqxz.baihongyu.com/