这两天由于公司网速慢,每次要下载v4 和 v7 包非常耗时。把gradle 改成离线模式就好多了。据说离线模式不再重新下载依赖。但是很好奇,AndroidStudio的gradle 引入的第三方库到底缓存到本地的什么位置了。

可以在app目录下的build.gradle的文件的最后添加:

1
2
3
4
task showMeCache << {
configurations.compile.each { println it }
}

然后,在命令行切换到你的项目根目录下运行:

./gradlew showMeCache

这时候控制台就好打印出依赖库的缓存位置(下面是我显示的环信一个demo的所有的依赖库,包括lib引入,和在gradle的maven库引入的。):

1
2
3
4
5
6
7
8
9
10
11
12
liuqiangs-MacBook-Pro:TestHx liuqiang$ ./gradlew showMeCache
Incremental java compilation is an incubating feature.
:app:showMeCache
/Users/liuqiang/Workspace/meiliwu/TestHx/app/libs/hyphenatechat_3.1.3.jar
/Users/liuqiang/Development/android-sdk-macosx/extras/android/m2repository/com/android/support/appcompat-v7/23.4.0/appcompat-v7-23.4.0.aar
/Users/liuqiang/.gradle/caches/modules-2/files-2.1/com.jakewharton/butterknife/7.0.1/d5d13ea991eab0252e3710e5df3d6a9d4b21d461/butterknife-7.0.1.jar
/Users/liuqiang/Development/android-sdk-macosx/extras/android/m2repository/com/android/support/design/23.4.0/design-23.4.0.aar
/Users/liuqiang/Development/android-sdk-macosx/extras/android/m2repository/com/android/support/animated-vector-drawable/23.4.0/animated-vector-drawable-23.4.0.aar
/Users/liuqiang/Development/android-sdk-macosx/extras/android/m2repository/com/android/support/support-v4/23.4.0/support-v4-23.4.0.aar
/Users/liuqiang/Development/android-sdk-macosx/extras/android/m2repository/com/android/support/support-vector-drawable/23.4.0/support-vector-drawable-23.4.0.aar
/Users/liuqiang/Development/android-sdk-macosx/extras/android/m2repository/com/android/support/recyclerview-v7/23.4.0/recyclerview-v7-23.4.0.aar
/Users/liuqiang/Development/android-sdk-macosx/extras/android/m2repository/com/android/support/support-annotations/23.4.0/support-annotations-23.4.0.jar

我们可以看到,v4 和 v7的支持包,是下载下来放到你本地Android sdk的extras 目录下的,所以,我猜测,可以直接从别人电脑拷贝这个文件夹的内容,然后使用gradle的离线模式编译。这样就不会再网速差的情况下去下载 v4 和 v7 。这种想法仅仅是用于 v4和v7 其他的第三方依赖库可以看到是放到 ~/.gradle/cache 目录下的。

【参考文献】

在AndroidStudio中如何利用一个task显示出依赖库的本地存储路径