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