美文网首页
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