android gradle 语法,Android_Gradle语法及配置记录

组件化的gradle配置,也包括基础的配置,多数都写了备注,仅做记录

app.gradle

apply plugin: 'com.android.application'

def androidId = rootProject.ext.androidId

def appId = rootProject.ext.appId

def supportDependencies = rootProject.ext.dependencies

def baseUrl = rootProject.ext.baseUrl

android {

compileSdkVersion androidId.compileSdkVersion

buildToolsVersion androidId.buildToolsVersion

defaultConfig {

applicationId appId.applicationId

minSdkVersion androidId.minSdkVersion

targetSdkVersion androidId.targetSdkVersion

versionCode androidId.versionCode

versionName androidId.versionName

testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"

// 开启分包

multiDexEnabled true

// 设置分包配置

// multiDexKeepFile file('multidex-config.txt')

// 将svg图片生成 指定维度的png图片

// vectorDrawables.generatedDensities('xhdpi','xxhdpi')

// 使用support-v7兼容(5.0版本以上)

vectorDrawables.useSupportLibrary = true

// 只保留指定和默认资源

resConfigs('zh-rCN')

// 配置so库CPU架构(真机:arm,模拟器:x86)

// x86 x86_64 mips mips64

ndk {

abiFilters('armeabi', 'armeabi-v7a')

// 为了模拟器启动

// abiFilters('x86', 'x86_64')

}

// 源集 - 设置源集的属性,更改源集的 Java 目录或者自由目录等

sourceSets {

main {

if (!isRelease) {

// 如果是组件化模式,需要单独运行时

manifest.srcFile 'src/main/AndroidManifest.xml'

java.srcDirs = ['src/main/java']

res.srcDirs = ['src/main/res']

resources.srcDirs = ['src/main/resources']

aidl.srcDirs = ['src/main/aidl']

assets.srcDirs = ['src/main/assets']

} else {

// 集成化模式,整个项目打包

manifest.srcFile 'src/main/AndroidManifest.xml'

}

}

}

}

// 签名配置(隐形坑:必须写在buildTypes之前)

signingConfigs {

debug {

// 坑!!!!:填错了,编译不通过还找不到问题

storeFile file('C:/Users/tpson/.android/debug.keystore')

storePassword "android"

keyAlias "androiddebugkey"

keyPassword "android"

}

release {

// 签名证书文件

storeFile file('D:/Frizzle/frizzle.jks')

// 签名证书的类型

storeType "frizzle"

// 签名证书文件的密码

storePassword "frizzle123"

// 签名证书中密钥别名

keyAlias "frizzle"

// 签名证书中该密钥的密码

keyPassword "frizzle123"

// 是否开启V2打包

v2SigningEnabled true

}

}

buildTypes {

debug {

signingConfig signingConfigs.debug

//编译之后在BuildConfig类中多生成一个字段

buildConfigField("String", "BaseUrl", "\"${baseUrl.debug}\"")

}

release {

signingConfig signingConfigs.release

buildConfigField("String", "BaseUrl", "\"${baseUrl.release}\"")

minifyEnabled false

proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'

}

}

// AdbOptions 可以对 adb 操作选项添加配置

adbOptions {

// 配置操作超时时间,单位毫秒

timeOutInMs = 5 * 1000_0

// adb install 命令的选项配置

installOptions '-r', '-s'

}

// 对 dx 操作的配置,接受一个 DexOptions 类型的闭包,配置由 DexOptions 提供

dexOptions {

// 配置执行 dx 命令是为其分配的最大堆内存

javaMaxHeapSize "4g"

// 配置是否预执行 dex Libraries 工程,开启后会提高增量构建速度,不过会影响 clean 构建的速度,默认 true

preDexLibraries = false

// 配置是否开启 jumbo 模式,代码方法是超过 65535 需要强制开启才能构建成功

jumboMode true

// 配置 Gradle 运行 dx 命令时使用的线程数量

threadCount 8

// 配置multidex参数

additionalParameters = [

'--multi-dex', // 多dex分包

'--set-max-idx-number=50000', // 每个包内方法数上限

// '--main-dex-list=' + '/multidex-config.txt', // 打包到主classes.dex的文件列表

'--minimal-main-dex'

]

}

// 执行 gradle lint 命令即可运行 lint 检查,默认生成的报告在 outputs/lint-results.html 中

lintOptions {

// 遇到 lint 检查错误会终止构建,一般设置为 false

abortOnError false

// 将警告当作错误来处理(老版本:warningAsErros)

warningsAsErrors false

// 检查新 API

check 'NewApi'

}

}

dependencies {

implementation fileTree(dir: "libs", include: ["*.jar"])

// //标准写法

// implementation group:'androidx.appcompat',name:'appcompat',version:'1.2.0'

// //简写

// implementation 'androidx.appcompat:appcompat:1.2.0'

//依赖库library

implementation project(":GradleConfigLibrary")

//相当于将三方库都加入到了一个Map里面 grdle中加字典

// HashMap map = new HashMap<>();

// implementation map.get("appcompat");

//可以按下面的方式写

// implementation supportDependencies.appcompat

// implementation supportDependencies.recyclerview

// implementation supportDependencies.constraint

//最简洁的方式

supportDependencies.each { k, v -> implementation v }

}

module.gradle

apply plugin: 'com.android.library'

def androidId = rootProject.ext.androidId

def supportDependencies = rootProject.ext.dependencies

android {

compileSdkVersion androidId.compileSdkVersion

buildToolsVersion androidId.buildToolsVersion

defaultConfig {

minSdkVersion androidId.minSdkVersion

minSdkVersion androidId.minSdkVersion

versionCode androidId.versionCode

versionName androidId.versionName

testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"

consumerProguardFiles "consumer-rules.pro"

}

buildTypes {

release {

minifyEnabled false

proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'

}

}

}

dependencies {

implementation fileTree(dir: "libs", include: ["*.jar"])

supportDependencies.each { k, v -> implementation v }

}

project.gradle

// Top-level build file where you can add configuration options common to all sub-projects/modules.

apply from:"config.gradle"

buildscript {

repositories {

google()

jcenter()

}

dependencies {

classpath "com.android.tools.build:gradle:3.2.1"

// NOTE: Do not place your application dependencies here; they belong

// in the individual module build.gradle files

}

}

allprojects {

repositories {

google()

jcenter()

}

}

task clean(type: Delete) {

delete rootProject.buildDir

}

build.config

ext {

isRelease = true;

androidId = [

compileSdkVersion: 30,

buildToolsVersion: "30.0.1",

minSdkVersion : 21,

targetSdkVersion : 30,

versionCode : 1,

versionName : "1.0"

]

appId = [

applicationId : "com.frizzle.gradleconfig",

library : "com.frizzle.library"

]

//开发测试环境

baseUrl = [

"debug" : "http://10.0.0.1:8080/debug",

"release" : "http://10.0.0.1:8080/release"

]

//三方库

supportLibrary = "1.2.0"

dependencies =[

//这里的key尽量不要加-v7之类的,比如appcompat-v7

"appcompat" : "androidx.appcompat:appcompat:${supportLibrary}",

"recyclerview" : "androidx.recyclerview:recyclerview:1.1.0",

"constraint" : "com.android.support.constraint:constraint-layout:1.1.3"

]

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值