1.什么是Gradle?
Gradle 是一个开源构建自动化工具,其设计足够灵活,可以构建几乎任何类型的软件。
2.什么是gradle.properties?
在Android中,
1.在使用Android Studio新建Android项目之后,在项目根目录下会默认生成一个gradle.properties文件,它是由IDE自动生成的gradle.properties文件。
2.他是项目级别的Gradle配置文件,gradle.properties里面定义的属性是全局的,可以在各个模块的build.gradle里面直接引用.我们可以在里面做一些Gradle文件的全局性的配置,也可以将比较私密的信息放在里面,防止泄露。
点击android项目里的gradle.properties,他是这样子的
1、gradle.properties常用功能配置
org.gradle.jvmargs=-Xmx5120m -XX:MaxPermSize=1280m -Dfile.encoding=UTF-8 #(JVM堆内存大小,要是想运行的快一些,就改大点,整个8192m啥的) org.gradle.daemon=true #通过开启守护进程,下一次构建的时候,将会连接这个守护进程进行构建, #而不是重新 fork 一个 gradle构建进程 org.gradle.configureondemand=true #按需加载 org.gradle.parallel=true #并行编译 org.gradle.caching=true #开启 gradle 缓存 android.enableBuildCache=true #开启依赖缓存,这个设置可以让Android Studio 会把依赖的 jar 或 arr 缓存到本地,并且把模块名称设置为 hash 值。每次编译生成的缓存在 $HOME/.android/build-cache android.useAndroidX=true # 标识当前 module 启用 Androidx ,当把android项目自动迁移到androidX, AS会自动在这个文件加上这句 android.enableJetifier=true # 表示将项目中使用的第三方库也迁移到 Androidx android.injected.testOnly=false #解决真机无法安装测试包的报错,因为国内一些安卓手机制作商定制的 #Android 系统不允许安装含带这个属性的测试包。哪怕你使用 -t 参数通过 adb 安装也是不行的,这个很常见 android.useNewApkCreator=false #声明使用旧的打包器解决 Android Studio 升级 3.6 之后, #报错 Entry name 'AndroidManifest.xml' collided, #因此禁用新版本打包工具,使用旧的打包工具 kotlin.incremental=true kotlin.incremental.java=true kotlin.incremental.js=true #kotlin 增量编译 kotlin.caching.enabled=true #kotlin 编译缓存 kotlin.parallel.tasks.in.project=true #kotlin 并行编译 kotlin.code.style=official # Kotlin code style for this project: "official" or "obsolete" # 优化kapt # 并行运行kapt1.2.60版本以上支持 kapt.use.worker.api=true # 增量编译 kapt1.3.30版本以上支持 kapt.incremental.apt=true # kapt avoiding 如果用kapt依赖的内容没有变化,会完全重用编译内容,省掉#`app:kaptGenerateStubsDebugKotlin`的时间 kapt.include.compile.classpath=false
2、gradle.properties的全局配置
gradle.properties里面定义的属性是全局的,可以在各个模块的build.gradle里面直接引用.当有一些数据我们传到git又不想给别人看的时候,就可以配置到gradle.properties,然后不传这个文件上去,也可以在项目中对一些属性进行统一配置,提高开发效率
1.在app/build.gradle文件中引用
注意:在gradle.properties中定义的属性默认是String类型的,如果需要int类型,需要添加XXX as int后缀。
1.我现在gradle.properties定义好下面新增的四个属性
2.然后在我某一个module的build.gradle里就可以调用,可以看到,在第一行通过isModule来让这个模块是作为库还是app运行,在下面的compileSdkVersion那一行的后面加了句 as int 确定他的sdk版本
2.在java代码或者XML文件中使用
1.现在gradle.properties里添加配置
2、在app/build.gradle中读取属性,对这些属性进行转化: 上述代码中的
1.buildConfigField方法的是BuildType#buildConfigField,包含三个参数:类型、变量名、变量值。 Java调用时使用BuildConfig.defaultNickName就可以获得其中的值,
例如:
System.out.println("defaultNickName:" + BuildConfig.defaultNickName);
2.resValue方法定义在BuildType#resValue中,也包含三个参数:类型、变量名、变量值。
这是相当于是作为资源来进行调用,string代表的是字符串,对应于res文件下的这些东西:
在xml中的调用:
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/user_name" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" android:textSize="@dimen/text_size" android:textColor="@color/text_color" />