我也遇到了这个问题,我的Android应用程序依赖于一些自己的Android库(使用Android Studio 3.0和3.1.1)。
每当我更新库并返回应用程序时,触发Gradle Sync时,Android Studio无法检测我对库所做的代码更改。编译工作正常,但Android Studio在使用该库的某些代码上显示红色错误线。
经过调查,我发现这是因为gradle继续指向我的库的旧编译版本。
如果您转到yourProject / .idea / libraries /,您将看到包含链接到库已编译版本的xml文件列表。这些文件以Gradle__artifacts_ *.xml开头(其中*是您的库名称)。
因此,为了使Android Studio使用最新版本的库,您需要删除这些Gradle__artifacts_ * .xml文件,然后Android Studio将重新生成它们,指向您的库的最新编译版本。
如果您不想每次单击“Gradle sync”时都手动执行此操作(谁会想这样做...),则可以在应用程序的build.gradle文件中添加此小的gradle任务。
task deleteArtifacts {
doFirst {
File librariesFolderPath = file(getProjectDir().absolutePath + "/../.idea/libraries/")
File[] files = librariesFolderPath.listFiles({ File file -> file.name.startsWith("Gradle__artifacts_") } as FileFilter)
for (int i = 0; i < files.length; i++) {
files[i].delete()
}
}
}
为了让你的应用在执行gradle同步之前始终执行此任务,你只需要进入Gradle窗口,然后找到yourApp/Tasks/other/下的“deleteArtifacts”任务,在其上右键单击并选择“Execute Before Sync”(如下所示)。
![Gradle window to configure task execution](https://istack.dev59.com/GYKaX.webp)
现在,每次进行Gradle同步时,Android Studio都会强制使用你的libs的最新版本。