赞
踩
- //依赖其他gradle文件
- apply from: "config.gradle"
-
- plugins {
- //添加使用插件
- id 'com.android.application'
- id 'kotlin-android'
- id 'kotlin-kapt'
- }
-
- example = “this is a test message”
-
- android {
- compileSdkVersion 30
-
- //冲突文件处理
- packagingOptions {
- //jar or aar or .so ... ,如有冲突依次优先使用
- pickFirst 'lib/arm64-v8a/test_shared.so'
- pickFirst 'lib/x86/test_shared.so'
- pickFirst '**/test_shared.so' //匹配任意路径
-
- //合并处理
- merge ''
-
- //直接排除
- exclude ''
- }
-
- defaultConfig {
-
- //设置支持的手机架构
- ndk {
- abiFilters 'armeabi-v7a'
- }
-
- //设置java编译的一些参数
- javaCompileOptions {
- annotationProcessorOptions {
-
- }
- }
-
- //cmake 命令参数
- externalNativeBuild {
- cmake {
- // explicitly build libs
- targets 'mind'
- abiFilters "armeabi-v7a" // 编译出的so库要支持的手机架构
- cppFlags "-std=c++11 -fexceptions -frtti"
- arguments "-DMY_NAME=ZHOU" //注意:-D是命令,后面是参数的key-value,向cmakeLists传参
- }
-
- }
-
- //dex 分包
- multiDexEnabled true
- }
-
- signingConfigs {
- release {
- storeFile file("../keystore/test.keystore")
- keyAlias "test"
- storePassword "test!"
- keyPassword "test!"
- v1SigningEnabled true
- v2SigningEnabled true
- }
- }
- buildTypes {
- release {
- minifyEnabled false
- signingConfig signingConfigs.release
- proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
- // 可将gradle中的常量编译到BuildConfig.java,在java代码中使用如:BuildConfig.APP_EXAMPLE
- buildConfigField "String", "APP_EXAMPLE", "\"${example}\""
- }
- debug {
- signingConfig signingConfigs.debug
- buildConfigField "String", "APP_EXAMPLE", "\"${example}\""
- }
- }
-
- //开启viewBinding 和 dataBinding
- buildFeatures {
- viewBinding = true
- dataBinding = true
- }
-
- //设置java版本
- compileOptions {
- sourceCompatibility JavaVersion.VERSION_1_8
- targetCompatibility JavaVersion.VERSION_1_8
- }
-
- //设置kotlin版本
- kotlinOptions {
- jvmTarget = '1.8'
- }
-
- //c层编译参数设置
- externalNativeBuild {
- cmake {
- version '3.6.0' //cmake版本
- path 'src/main/cpp/CMakeLists.txt' //cmake编译文件的路径
- }
-
- }
-
- //源文件路径设置
- sourceSets {
- main {
- def javaPaths = ["src/main/java"]
- def assetsPaths = ["src/main/assets"]
-
- def javaPanda = "src/main/javaPanda"
- def javaLoin = "src/main/javaLoin"
- def javaMonkey = "src/main/javaMonkey"
-
- //根据条件加入源文件
- if ( true ) {
- javaPaths.add(javaPanda)
- }
- if (true) {
- javaPaths.add(javaLoin)
- }
- if (true) {
- javaPaths.add(javaMonkey)
- }
- java.srcDirs = javaPaths
- assets.srcDirs = assetsPaths
-
- //设置AndroidManifest.xml的路径,在组件化中经常用到
- manifest.srcFile(gradle.ext.isGroup != true ? 'src/main/demo/AndroidManifest.xml' : 'src/main/AndroidManifest.xml')
- }
-
- //设置so库的路径,不然的话so库不会打进包里
- debug {
- jniLibs.srcDirs = ['libs']
- }
- release {
- jniLibs.srcDirs = ['libs']
- }
-
- }
- }
-
- //清除编译生成的缓存文件
- task cleanFiles(type: Delete) {
- delete file("./build")
- delete file("./.externalNativeBuild")
- }
-
- //自定义任务
- task buildAStart() {
- //之前此任务前先执行cleanFiles
- dependsOn cleanFiles
- //上面任务执行完后执行
- doLast {
- exec {
- println("buildAStart")
- workingDir "../../" //脚本文件路径
- commandLine 'sh', 'build_start.sh' //执行脚本文件
- args('-t',tags) //向执行脚本传参,如:脚本需要此参数进行操作
- }
- }
- }
-
- //执行此gradle的构建任务之前先执行buildAStart任务
- preBuild.dependsOn(buildAStart)

2. Setting.gradle
- //全局(扩展)常量,在其他gradle文件中也能拿到,使用时:$gradle.testValue
- gradle.ext.testValue = true
- gradle.ext.testHello = 'Hello'
- gradle.ext.testInt = 1
- //相对于setting.gradle的路径,此为该路径下的一个module
- gradle.ext.mFilePath = '../Example/mine/demo1/app'
-
- //局部变量
- def max = 5
-
- def file = new File(gradle.ext.mFilePath)
- if (file.exists()) {
- include ':other-module' //引入一个名为other-module的module
- rootProject.name = 'myDemo' //设置根工程名称
- project(':other-module').projectDir = file //关联other-module这个module的工程路径
- }

3.自定义gradle,如config.gradle,将常用的配置抽取出来统一管理,在其他build.gradle中调用如:
rootProject.ext.android.targetSdkVersion
- ext{
- android = [
- compileSdkVersion: 30,
- buildToolsVersion: '30.0.2',
- minSdkVersion : 19,
- targetSdkVersion : 26,
- applicationId : "com.zz.example.testDemo",
- versionCode : 1,
- versionName : "1.0",
- ]
- //androidx支持库配置
- androidx = [
- "androidx.appcompat" : "androidx.appcompat:appcompat:1.1.0",
- "androidx.lifecycle" : "androidx.lifecycle:lifecycle-extensions:2.1.0",
- "androidx.recyclerview" : "androidx.recyclerview:recyclerview:1.1.0",
- "androidx.constraintlayout" : "androidx.constraintlayout:constraintlayout:1.1.3",
- "androidx.cardview" : "androidx.cardview:cardview:1.0.0",
- "android.material" : "com.google.android.material:material:1.0.0",
- "androidx.navigation-fragment" : "androidx.navigation:navigation-fragment:2.1.0",
- ]
-
- //依赖第三方配置
- dependencies = [
- "arouter-compiler" : "com.alibaba:arouter-compiler:1.5.1",
- "smartRefresh" : "com.scwang.smartrefresh:SmartRefreshLayout:1.1.2",
- "eventbus" : "org.greenrobot:eventbus:3.2.0",
- "imagepicker" : "com.github.HuanTanSheng:EasyPhotos:3.0.6",
- "immersionbar" : "com.gyf.immersionbar:immersionbar:3.0.0", //状态栏库
- "permissionx" : "com.permissionx.guolindev:permissionx:1.4.0",
- "rxbinding" : "com.jakewharton.rxbinding4:rxbinding:4.0.0",
- "okhttp" : "com.squareup.okhttp3:okhttp:4.9.0"
- ]
- }

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。