Gradle配置文件
gradle配置文件是gradle.properties
分为全局和项目两个级别:
- 全局的配置文件位于gradle user home目录
- 项目级别位于项目根目录下
此处省略
下面介绍一下常见的gradle配置及其作用。
VM Options
- 常用配置项:
配置项 | 作用 | 示例 |
| 最大可占用内存 | |
| ||
| ||
| 设置栈帧的最大值,也可以说是递归调用方法,到递归到多少次,就会栈溢出SOF | |
| 整数包装类缓大小 | |
| 文件编码格式 | |
| ||
| 整数缓大小 |
配置示例:
org.gradle.jvmargs=-Xmx2048M -Dkotlin.daemon.jvm.options\="-Xmx2048M"
- GUI配置入口:
androidx
# 启用androidx
android.useAndroidX=true
# 编译时将依赖的三方库中support类自动替换成androidx对应类
android.enableJetifier=true
守护进程
开启daemon后不需要每次启动gradle进程(JVM实例),减少了初始化相关的工作,daemon可以缓存项目结构,文件,task等,尽可能复用之前的编译成果,缩短编译过程。守护进程最好是全局共享, 因此推荐在全局配置中开启,开启方式如下:
org.gradle.daemon=true
或者在启动gradle时指定参数:
./gradlew task --daemon
# 为了确保gradle配置生效,建议使用gradle —stop停止已有的daemon
./gradlew --stop
离线构建
开启offline之后,可以强制Gradle使用本地缓存的依赖,避免了网络读写操作。
- 命令行方式:
./gradlew --offline taskName
- GUI方式(推荐):
并行构建
多模块项目中,gradle默认是挨个按顺序处理,为了加快编译速度,多模块工程建议开启并行构建。
- 修改项目gradle.properties文件(推荐):
org.gradle.parallel=true
- 命令行方式:
./gradlew task --parallel
开启后,控制台在执行任务时会打印如下信息:
Parallel execution is an incubating feature.
.......
注意:发现在flutter项目中如果开启这个选项可能会导致编译失败
按需配置
还是多模块项目,project在编译时会执行configure流程,使用--configure-on-demand
会在执行任务时仅配置相关的modules,而不是所有modules,对于多模块的project来说使用起来会有不小的提升。
- 配置文件方式(推荐在全局配置):
org.gradle.configureondemand=true
- 命令行方式:
./gradlew taskName --configure-on-demand
性能分析
gradle提供了性能分析的功能,执行任务时带上对应参数即可。
--dry-run
参数
执行完整构建流程,但不执行具体任务,常用于构建性能分析。
--profile
参数
会生成gradle构建数据资料文件:
./gradlew assembleDebugRelease --profile
执行完毕会在project根目录下的build/reports/profile目录有对应的结果文件,如profile-2017-04-08-23-06-37.html,使用浏览器打开文件可以看到各个task的执行耗时情况从而进行有针对性的优化。
HTTP代理
内网开发环境下,gradle编译过程中出现下载远程依赖失败时,可以通过配置代理解决,配置方式分全局和当前项目3种:
全局配置
在AS设置中搜索proxy,配置相关代理参数:
配置完成后将在IDE gradle的工作目录下生成gradle.properties
配置文件,里面内容如下:
systemProp.http.nonProxyHosts=*.baidu.*
systemProp.http.proxyHost=127.0.0.1
systemProp.http.proxyPort=8080
systemProp.https.nonProxyHosts=*.baidu.*
systemProp.https.proxyHost=127.0.0.1
systemProp.https.proxyPort=8080
systemProp.http.proxyUser=user
systemProp.http.proxyPassword=password
systemProp.https.proxyUser=user
systemProp.https.proxyPassword=password
项目配置
有时候我们不希望代理在所有项目生效,而是仅在当前打开项目生效,受全局配置启发,找到当前项目的gradle.properties
,在其中把上述配置复制进去,实测有效。
模块配置
同样支持在gradle中配置对应模块的代理:
apply plugin: 'com.android.application'
android {
...
defaultConfig {
...
systemProp.http.proxyHost=proxy.company.com
systemProp.http.proxyPort=443
systemProp.http.proxyUser=userid
systemProp.http.proxyPassword=password
systemProp.http.auth.ntlm.domain=domain
}
...
}
缓存目录
gradle默认的缓存目录在:%USERPROFILE%\.gradle
,%USERPROFILE%
指向C盘用户账户目录,比如:C:\Users\Administrator。
针对Windows平台,由于C盘空间有限,建议将gradle默认的缓存目录修改到非C盘:
配置文件的作用和配置方法详见配置 Android Studio。
配置文件
studio.vmoptions
配置文件studio64.exe.vmoptions路径:
- AS4.1之前在:
%HOMEPATH%\.AndroidStudio4.0\config\studio64.exe.vmoptions
- AS4.1之后在:
%APPDATA%\Google\AndroidStudio4.1\studio64.exe.vmoptions
其中:
%HOMEPATH%
指向C盘用户账户目录,比如:C:\Users\Administrator%%USERPROFILE%%
同%HOMEPATH%
%LOCALAPPDATA%
指向用户本地应用数据,比如:C:\Users\Administrator\AppData\Local%APPDATA%
指向用户漫游应用数据,比如:C:\Users\Administrator\AppData\Roaming
若上述目录均不存在该文件,可通过下面2种方式创建:
- 双击shift,输入框中输入vmoption,回车即可;
- 依次点击Help > Edit VM Options,会提示创建文件;
该配置文件用于自定义Studio的Java虚拟机(JVM)选项,例如堆大小和缓存大小。请注意,在 Linux计算机上,此文件可能会命名为studio64.vmoptions,具体取决于AS版本。
idea.properties
配置文件路径与studio.vmoptions
相同。如果该文件不存在,在AS中依次点击Help > Edit Custom Properties,会提示创建一个idea.properties文件。
该配置用于自定义AS的属性,例如插件文件夹路径或支持的文件大小上限。
控制台中文乱码
找到studio64.exe.vmoptions
添加下述配置:
# custom Android Studio VM options, see https://developer.android.com/studio/intro/studio-config.html
-Dfile.encoding=UTF-8
迁移AS缓存文件
找到idea.properties
添加下述配置:
idea.system.path=c:/workfolder/studio/caches/trunk-system
代码提示大小写不敏感
默认是大小写敏感的,即首字母必须大写才有对应的提示,可以改为大小写不敏感:
代码换行
默认的代码换行太窄了,导致代码一对齐就换行,可以修改默认换行的字符数,推荐改为140:
文件编码格式
Setting->Editor->File Encoding 进行编码设置:
新旧版Layout Inspector切换
新版Layout Inspector支持实时更新,但是此功能在一些开发机器上运行非常卡顿,如果需要切换回旧版可以进行如下操作:
- File->Setting->Experimental中去掉勾选“Enable Live Layout Inspector”
- 打开tools菜单->“Legacy Layout Inspector”
Git工具栏不显示local changes
解决办法:Android Studio / Preferences / Version Control / commit - 取消Use non-modal commit interface勾选
来源:Android Studio中显示git的Local Changelist
安装命令行脚本以dart脚本为例:
- 打开设置界面,找到外部工具设置项 ( Tools -> ExternalTools ):
- 点击添加按钮,参考下图配置:
log tag过滤
隐藏指定tag:^(?!.*(SurfaceView)).*$