解决Android Studio缓存导致的编译或运行失败

问题

我的Android项目依赖一个aar,比如’com.xxx:XXX:1.0.2’,如果我这个aar作了一些修改,但是不想发布新版本,就撤回1.0.2,修改代码后重新发布1.0.2。此时我Android项目肯定不会下载最新的aar,这其中会有许多的坑的。

踩坑

  • 删除.gradle下缓存的aar,比如我电脑上路径是C:\Users\e.gradle\caches\modules-2\files-2.1\com.xxx
    删除里面的1.0.2版本的aar。
    80%的情况下删除这个缓存后去编译你的项目就已经可以拉到最新的aar了。
    但有时候同步的时候报错:
    报错为:Could not find xxx.aar Searched in the following locations:http://xxxxxxxxxxxxx/xxx-1.0.2.aar。
    打开这个http链接,是可以下载aar的,说明marven里有aar。这个问题纠结了我好久,解决办法在下面。

  • 删除.gradle下对应的源代码。这个其实不是用来解决这个依赖不上的缓存问题的,只是用来解决依赖正确后你的Android Studio上显示的是老的源代码的问题。比如我删除的路径是C:\Users\e.gradle\caches\transforms-1\files-1.1

  • Android Studio里invalidate caches/Restart,这个有时候能解决一些问题,但是这个问题不能解决的。

  • 在项目的.idea里libraries找到aar对应的xml,对应地址找到文件,删除。举个栗子,我在libraries里找到Gradle__com_android_support_support_media_compat_27_1_1.xml这个文件,打开后看到

 <root url="jar://D:/Android/sdk/.android/build-cache/aa334d64a09130503e3810b5aff6904bc0267f98/output/jars/classes.jar!/" />
      <root url="file://D:/Android/sdk/.android/build-cache/aa334d64a09130503e3810b5aff6904bc0267f98/output/res" />

找到D:/Android/sdk/.android/build-cache/aa334d64a09130503e3810b5aff6904bc0267f98删除。
然后把.idea里Gradle__com_android_support_support_media_compat_27_1_1.xml也删了。

  • 运行gradlew build –refresh-dependencies ,这个方法很有用。

总结

因为要拉最新aar,首先删除.gradle\caches\modules-2\files-2.1下的aar缓存,同步,大多情况下是ok的了。如果不ok,报错找不到xxx.aar,就打开.idea,删除/Android/sdk/.android/build-cache缓存,最后运行gradlew build –refresh-dependencies,再同步应该就ok了。

你可能感兴趣的:(android,移动平台)