У меня также была эта проблема с моим 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» (кто захочет это сделать ...), вы можете добавить эту небольшую задачу 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, затем найти задачу «deleteArtifacts» в вашем приложении / Tasks / other /, щелкнуть ее правой кнопкой мыши и выбрать «Выполнить» Перед синхронизацией »(см. Ниже).
Теперь каждый раз, когда вы выполняете синхронизацию Gradle, Android Studio будет вынуждена использовать последнюю версию ваших библиотек.