美文网首页
Android Studio常用 gradle 配置项(备查)

Android Studio常用 gradle 配置项(备查)

作者: Aegis | 来源:发表于2021-08-30 10:28 被阅读0次
    //plugins { // 新版本gradle 默认是这种插件引入方式
    //    id 'com.android.application'
    //}
    
    // 在 rootProject 的 build.gradle 或 单独定义config.gradle配置文件 中定义 isRunAloneMode 即可使用:
    /*
     buildscript {
        ext {
            isRunAloneMode = true
        }
     }
    */
    if (isRunAloneMode){
        apply plugin: 'com.android.application' // 应用程序模块
    }else {
        apply plugin: 'com.android.library' // 依赖库模块
    }
    
    apply plugin: 'kotlin-android'  // 依赖Android Kotlin支持插件
    
    android {
        compileSdkVersion 30    // 编译版本
        buildToolsVersion "30.0.3"  // 编译工具版本
    
    //    useLibrary 'org.apache.http.legacy' // 开启 Apache HTTP client
    
        defaultConfig {
            if (isRunAloneMode){
                applicationId "com.aegis.module_search" // 应用程序标识
            }
    
            minSdkVersion 16    // 最小支持版本
            targetSdkVersion 30 // 期望Android SDK版本
            versionCode 1   // 版本号(程序使用)
            versionName "1.0.0"   // 版本名称(给用户展示)
            // flavorDimensions 详见:https://blog.csdn.net/chen_xi_hao/article/details/80526049
            flavorDimensions "default"
    
            testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" // 使用 AndroidJUnitRunner 进行单元测试
    
            // resourcePrefix "${project.name}_"   也可以用这个定义为模块名
            resourcePrefix "search_"     // 限定资源文件命名前缀为 search_  只能限定Xml资源,并不能限定图片资源,图片资源扔需要自身注意设置前缀名
    
    //        configurations.all {
    //            resolutionStrategy {
    //                failOnVersionConflict() // 发现依赖冲突,就报错
    
    //                force 'com.github.bumptech.glide:glide:4.9.0'   // 强制指定 Glide 依赖版本为 4.9.0
    //            }
    //        }
    
            resConfigs "zh-rCN", "zh-rHK", "zh-rTW", "en"   // 只打包指定的语言包进apk
    //      multiDexEnabled true    // 是否开启分包
    
            ndk {
                abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86'    // ndk so 包只打包对应版本支持
            }
        }
    
        ndkVersion '21.4.7075529'  // 指定 ndk 版本
    
        packagingOptions {
            pickFirsts = ['META-INFO/LICENSE']   // 当 LICENSE 出现重复时,打包自动选择第一个
            merge 'META-INFO/LICENSE'   // 合并打包,会自动忽略 pickFirst 配置
    //        exclude 'META-INF/DEPENDENCIES.txt'   // 排除指定文件
    //        exclude 'META-INF/NOTICE'
    //        exclude 'META-INF/NOTICE.txt'
    //        exclude 'META-INF/LICENSE'
    //        exclude 'META-INF/LICENSE.txt'
        }
    
        lintOptions {
            abortOnError false // 出错后,是否中断打包
            checkReleaseBuilds false // 打正式包时,是否进行编译检查
            disable 'HardcodedText' // 禁用文本硬编码警告
        }
    
        signingConfigs {   // 签名信息
            debug { // 调试版本签名配置
    //            keyAlias 'keyalisa' // 签名别名
    //            keyPassword '123456'  // 别名密码
    //            storeFile file('keystore.jks')  // 签名文件,目录对应项目根目录
    //            storePassword '123456'    // 签名密码
            }
    
            release {   // 正式发布版本签名配置
    //            keyAlias 'keyalisa' // 签名别名
    //            keyPassword '123456'  // 别名密码
    //            storeFile file('keystore.jks')  // 签名文件
    //            storePassword '123456'    // 签名密码
            }
        }
    
        buildTypes {
            debug {
                // 日志打印开关 定义了一个:BuildConfig.LOG_ENABLE 字段,可供Java代码调用
                buildConfigField('boolean', 'LOG_ENABLE', 'true')
                // 测试服务器的主机地址 定义了一个:BuildConfig.HOST_URL 字段,可供Java代码调用
                buildConfigField('String', 'HOST_URL', '"https://debug.host.com"')
    
                minifyEnabled false // 是否开启代码混淆
                zipAlignEnabled true    // 开发开启zip包对齐优化,可降低apk提交,提高运行效率
                signingConfig signingConfigs.debug
    
                applicationIdSuffix ".debug"    // 为applicationId添加后缀 如:com.aegis.module_search.debug
                versionNameSuffix '_debug'  // 在版本号后面添加后缀 如:1.0.0_debug
            }
    
            release {
                // 日志打印开关
                buildConfigField('boolean', 'LOG_ENABLE', 'false')
                // 测试服务器的主机地址
                buildConfigField('String', 'HOST_URL', '"https://release.host.com"')
    
                minifyEnabled true
                proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' // 混淆文件
                signingConfig signingConfigs.release
    
                debuggable false    // 是否开启断点调试
                jniDebuggable false // 是否开启ndk调试
                renderscriptDebuggable false    // 是否开启高级渲染调试
                zipAlignEnabled true    // 是否开启zip包对齐
            }
        }
    
        compileOptions {
            sourceCompatibility JavaVersion.VERSION_1_8
            targetCompatibility JavaVersion.VERSION_1_8
        }
        kotlinOptions {
            jvmTarget = '1.8'
        }
    
        buildFeatures {
            viewBinding true    // 开启 ViewBinding
    //        dataBinding true    // 开始 DataBinding
        }
    
        sourceSets { // 源代码文件目录指向
            main {
                jniLibs.srcDirs = ['libs']  // so 文件目录指向 libs
                if (isRunAloneMode) {
                    manifest.srcFile 'src/main/AndroidManifest.xml' // 清单文件指向 src/main/AndroidManifest.xml
                    java.srcDir 'src/main/module'   // 开启 src/main/module 为Java源代码目录
                } else {
                    manifest.srcFile 'src/main/manifest/AndroidManifest.xml'
                    java {
                        exclude 'src/main/module'   // 排除 src/main/module 目录编译打包
                    }
                }
            }
        }
    
        productFlavors {    // 多渠道配置
            wandoujia {}
            _360 {}
            xiaomi {}
            baidu {}
        }
    
        productFlavors.all {    // 遍历多渠道版本
            // 配置示例: <meta-data android:name="UMENG_CHANNEL_NAME" android:value="${UMENG_CHANNEL_NAME}" />
            flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_NAME: name]  // 设置清单文件 UMENG_CHANNEL_NAME 占位符值 为对应渠道的 name
        }
    }
    
    // 此配置会报此⚠️:Using flatDir should be avoided because it doesn't support any meta-data formats
    // 解决办法:发布aar到一个本地或远程仓库,然后进行aar的依赖
    //repositories {
    //    flatDir {
    //        dirs 'libs'   // 当项目有 aar包依赖时使用,但是官方已不推荐此配置
    //    }
    //}
    
    dependencies {
        implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
        implementation 'androidx.core:core-ktx:1.6.0'
        implementation 'androidx.appcompat:appcompat:1.3.1'
        implementation 'com.google.android.material:material:1.4.0'
        implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
        implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.3.1'
        implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1'
        testImplementation 'junit:junit:4.+'
        androidTestImplementation 'androidx.test.ext:junit:1.1.3'
        androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
    }
    

    相关文章

      网友评论

          本文标题:Android Studio常用 gradle 配置项(备查)

          本文链接:https://www.haomeiwen.com/subject/rimbiltx.html