一、配置 Gradle 命令行环境变量(MAC)
1、找到 Gradle 命令位置
如果 Android Studio 正常安装,Gradle 路径一般在 /Applications/Android\ Studio.app/Contents/gradle/gradle-[version]
目录下([version]是你安装的gradle版本,下同)
2、给 Gradle 命令添加执行权限
//给 gradle 添加执行权限
chmod 755 /Applications/Android\ Studio.app/Contents/gradle/gradle-[version]/gradle
//给 gradle.bat 添加执行权限
chmod 755 /Applications/Android\ Studio.app/Contents/gradle/gradle-[version]/gradle.bat
3、添加路径到 ~/.bash_profile 文件中
打开 ~/.bash_profile 文件(如果没有就创建一个),在文件末尾另起一行,添加如下内容并保存:
//...
export GRADLE_HOME=/Applications/Android\ Studio.app/Contents/gradle/gradle-[version]
export PATH=${PATH}:${GRADLE_HOME}/bin
4、更新 ~/.bash_profile 文件
在终端上执行 source ~/.bash_profile
命令,更新.bash_profile文件
5、验证是否配置好
重新打开终端,运行命令 gradle -v
,如果配置成功会显示如下内容:
$ gradle -v
------------------------------------------------------------
Gradle 4.6
------------------------------------------------------------
Build time: 2018-02-28 13:36:36 UTC
Revision: 8fa6ce7945b640e6168488e4417f9bb96e4ab46c
Groovy: 2.4.12
Ant: Apache Ant(TM) version 1.9.9 compiled on February 2 2017
JVM: 1.8.0_171 (Oracle Corporation 25.171-b11)
OS: Mac OS X 10.13.6 x86_64
二、用 gradle dependencies 查找依赖
进入 Android 工程根目录(或在 Android Studio 中的 Terminal 窗口),执行 gradle dependencies
命令:
假如 Android 工程的 dependencies 配置如下:
dependencies {
compile 'com.android.support:appcompat-v7:22.2.1'
compile ('com.android.support:design:22.2.1')
compile 'com.shamanland:fonticon:0.1.8'
androidTestCompile 'com.android.support:support-annotations:22.2.1'
androidTestCompile 'com.android.support.test:runner:0.3'
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2')
}
会得到如下输出:
_debugAndroidTestApk - ## Internal use, do not manually configure ##
+--- com.android.support:support-annotations:22.2.1
+--- com.android.support.test:runner:0.3
| +--- com.android.support.test:exposed-instrumentation-api-publish:0.3
| +--- junit:junit:4.12
| | \--- org.hamcrest:hamcrest-core:1.3
| \--- com.android.support:support-annotations:22.2.0 -> 22.2.1
\--- com.android.support.test.espresso:espresso-core:2.2
+--- com.android.support.test.espresso:espresso-idling-resource:2.2
+--- com.squareup:javawriter:2.1.1
+--- javax.inject:javax.inject:1
+--- org.hamcrest:hamcrest-library:1.3
| \--- org.hamcrest:hamcrest-core:1.3
+--- com.android.support.test:rules:0.3
| \--- com.android.support.test:runner:0.3 (*)
+--- org.hamcrest:hamcrest-integration:1.3
| \--- org.hamcrest:hamcrest-library:1.3 (*)
+--- com.google.code.findbugs:jsr305:2.0.1
+--- javax.annotation:javax.annotation-api:1.2
\--- com.android.support.test:runner:0.3 (*)
...
上面输出内容即包含依赖关系
三、解决依赖
1、从依赖项中排除冲突的模块/库
当声明一个依赖,我们可以指定我们不需要的模块,例如:
compile('junit:junit:4.12'){
exclude group : 'org.hamcrest',module:'hamcrest-core'
}
2、在build.gradle中显示定义冲突的库
另一种解决冲突的方式是我们直接明确引入我们想要包含的版本,如:
compile 'junit:junit:4.12' //依赖 org.hamcrest:hamcrest-core:1.3
androidTestCompile 'org.mockito:mockito-core:1.10.19' //依赖 org.hamcrest:hamcrest-core:1.1
androidTestCompile 'org.hamcrest:hamcrest-core:1.3' //直接在这里引入1.3
3、强制库的解析
第三种解决冲突的方式,不是声明一个配置,而是强制这个库用于所有配置。
android{
configurations.all{
resolutionStrategy.force 'org.hamcrest:hamcrest-core:1.1'
}
}
四、两个小问题
1、版本冲突时,gradle会下载多个版本的依赖库吗?
A:不会,会用最新版依赖库
2、当多个模块依赖同一个库时,每个模块都会去下载该依赖库吗?
A:不会,下载第一个,之后的会忽略