Miałem również ten problem z moją aplikacją na Androida w zależności od niektórych moich własnych bibliotek Androida (używając Android Studio 3.0 i 3.1.1).
Za każdym razem, gdy aktualizowałem bibliotekę i wracałem do aplikacji, uruchamiając Gradle Sync, Android Studio nie był w stanie wykryć zmian kodu, które wprowadziłem w bibliotece. Kompilacja działała dobrze, ale Android Studio wyświetlało czerwone linie błędów w niektórych kodach korzystających z lib.
Po zbadaniu sprawy odkryłem, że dzieje się tak, ponieważ gradle wskazuje na starą, skompilowaną wersję moich bibliotek. Jeśli przejdziesz do yourProject / .idea / libraries /, zobaczysz listę plików xml, które zawierają łącze do skompilowanej wersji twoich bibliotek. Pliki te zaczynają się od Gradle__artifacts _ *. Xml (gdzie * to nazwa twoich bibliotek).
Aby więc Android Studio pobrać najnowszą wersję twoich bibliotek, musisz usunąć te pliki Gradle__artifacts _ *. Xml, a Android Studio je zregeneruje, wskazując na najnowszą skompilowaną wersję twoich bibliotek.
Jeśli nie chcesz robić tego ręcznie za każdym razem, gdy klikniesz „Synchronizacja Gradle” (kto by chciał to zrobić…), możesz dodać to małe zadanie Gradle w pliku build.gradle swojej aplikacji.
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()
}
}
}
Aby aplikacja zawsze wykonywała to zadanie przed wykonaniem synchronizacji gradle, wystarczy przejść do okna Gradle, a następnie znaleźć zadanie „deleteArtifacts” w obszarze yourApp / Tasks / other /, kliknąć je prawym przyciskiem myszy i wybrać „Execute” Przed synchronizacją ”(patrz poniżej).
Teraz za każdym razem, gdy wykonujesz synchronizację Gradle, Android Studio będzie zmuszony do korzystania z najnowszej wersji twoich bibliotek.