Tôi cũng gặp sự cố này với ứng dụng Android của mình tùy thuộc vào một số thư viện Android của riêng tôi (sử dụng Android Studio 3.0 và 3.1.1).
Bất cứ khi nào tôi cập nhật lib và quay lại ứng dụng, kích hoạt Gradle Sync, Android Studio không thể phát hiện các thay đổi mã mà tôi đã thực hiện đối với lib. Quá trình biên dịch hoạt động tốt, nhưng Android Studio hiển thị các dòng lỗi màu đỏ trên một số mã sử dụng lib.
Sau khi điều tra, tôi phát hiện ra rằng đó là do gradle liên tục trỏ đến phiên bản đã biên dịch cũ của libs của tôi. Nếu bạn truy cập yourProject / .idea / architects /, bạn sẽ thấy danh sách các tệp xml có chứa liên kết đến phiên bản đã biên dịch của libs của bạn. Các tệp này bắt đầu bằng Gradle__artifacts _ *. Xml (trong đó * là tên của lib của bạn).
Vì vậy, để Android Studio lấy phiên bản libs mới nhất của bạn, bạn cần xóa các tệp Gradle__artifacts _ *. Xml này và Android Studio sẽ tạo lại chúng, trỏ đến phiên bản libs được biên dịch mới nhất của bạn.
Nếu bạn không muốn làm điều đó theo cách thủ công mỗi khi bạn nhấp vào "Đồng bộ hóa Gradle" (ai muốn làm điều đó ...), bạn có thể thêm nhiệm vụ gradle nhỏ này trong tệp build.gradle của ứng dụng.
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()
}
}
}
Và để ứng dụng của bạn luôn thực thi tác vụ này trước khi thực hiện đồng bộ hóa gradle, bạn chỉ cần vào cửa sổ Gradle, sau đó tìm tác vụ "deleteArtifacts" trong yourApp / Tasks / other /, nhấp chuột phải vào nó và chọn "Execute Trước khi đồng bộ hóa "(xem bên dưới).
Giờ đây, mỗi khi bạn thực hiện đồng bộ hóa Gradle, Android Studio sẽ buộc phải sử dụng phiên bản libs mới nhất của bạn.