Eu também tive esse problema com meu aplicativo Android dependendo de algumas de minhas próprias bibliotecas Android (usando o Android Studio 3.0 e 3.1.1).
Sempre que atualizo uma biblioteca e volto para o aplicativo, acionando um Gradle Sync, o Android Studio não consegue detectar as alterações de código que fiz na biblioteca. A compilação funcionou bem, mas o Android Studio mostrou linhas de erro vermelhas em alguns códigos que usam a lib.
Depois de investigar, descobri que é porque o gradle continua apontando para uma versão compilada de minhas bibliotecas. Se você acessar yourProject / .idea / libraries /, verá uma lista de arquivos xml que contém o link para a versão compilada de suas bibliotecas. Esses arquivos começam com Gradle__artifacts _ *. Xml (onde * é o nome de suas bibliotecas).
Portanto, para que o Android Studio obtenha a versão mais recente de suas libs, você precisa excluir esses arquivos Gradle__artifacts _ *. Xml e o Android Studio os regenerará, apontando para a última versão compilada de suas libs.
Se você não quiser fazer isso manualmente toda vez que clicar em "Gradle sync" (quem gostaria de fazer isso ...), você pode adicionar esta pequena tarefa do Gradle no arquivo build.gradle do seu aplicativo.
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()
}
}
}
E para que seu aplicativo sempre execute essa tarefa antes de fazer uma sincronização do Gradle, você só precisa ir para a janela do Gradle, encontrar a tarefa "deleteArtifacts" em yourApp / Tasks / other /, clicar com o botão direito e selecionar "Execute Antes de sincronizar "(veja abaixo).
Agora, sempre que você fizer uma sincronização do Gradle, o Android Studio será forçado a usar a versão mais recente de suas bibliotecas.