我的Android应用程序也遇到了这个问题,具体取决于我自己的一些Android库(使用Android Studio 3.0和3.1.1)。
每当我更新一个库并返回到应用程序,触发Gradle Sync时,Android Studio就无法检测到我对该库进行的代码更改。编译工作正常,但是Android Studio使用lib在某些代码上显示了红色错误行。
经过调查,我发现这是因为gradle一直指向我的库的旧编译版本。如果转到yourProject / .idea / libraries /,您将看到xml文件列表,其中包含指向库的编译版本的链接。这些文件以Gradle__artifacts _ *。xml(其中*是您的库的名称)开头。
因此,为了使Android Studio能够获取您的库的最新版本,您需要删除这些Gradle__artifacts _ *。xml文件,然后Android Studio会重新生成它们,指向您库的最新编译版本。
如果您不想每次单击“ Gradle sync”(谁愿意这样做...)时都手动执行此操作,则可以将此小gradle任务添加到应用程序的build.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”任务,右键单击它,然后选择“执行同步之前”(请参见下文)。
现在,每次执行Gradle同步时,Android Studio都将被迫使用您的库的最新版本。