मेरे पास अपने कुछ एंड्रॉइड लाइब्रेरी (एंड्रॉइड स्टूडियो 3.0 और 3.1.1 का उपयोग करके) के आधार पर मेरे एंड्रॉइड ऐप के साथ भी यह समस्या थी।
जब भी मैंने एक लीब को अपडेट किया और ऐप पर वापस जाता हूं, तो ग्रैडल सिंक को ट्रिगर करते हुए, एंड्रॉइड स्टूडियो उस कोड परिवर्तन का पता लगाने में सक्षम नहीं था जो मैंने काम के लिए किया था। संकलन ने ठीक काम किया, लेकिन एंड्रॉइड स्टूडियो ने काम का उपयोग करते हुए कुछ कोड पर लाल त्रुटि लाइनें दिखाईं।
जांच करने के बाद, मैंने पाया कि यह इसलिए है क्योंकि ग्रेडेल मेरे कामों के पुराने संकलित संस्करण की ओर इशारा करता है। यदि आप yourProject / / .idea / पुस्तकालयों में जाते हैं / आपको xml फ़ाइलों की एक सूची दिखाई देगी, जिसमें आपके लिबास के संकलित संस्करण का लिंक होगा। ये फाइलें Gradle__artifacts _ * से शुरू होती हैं। xml (जहां * आपके कामों का नाम है)।
इसलिए एंड्रॉइड स्टूडियो को अपने कामों के नवीनतम संस्करण को लेने के लिए, आपको इन Gradle__artifacts _ *। Xml फ़ाइलों को हटाने की आवश्यकता है, और एंड्रॉइड स्टूडियो उन्हें पुनर्जीवित करेगा, जो आपके कामों के नवीनतम संकलित संस्करण की ओर इशारा करता है।
यदि आप हर बार मैन्युअल रूप से "ग्रैडल सिंक" (जो करना चाहते हैं ...) पर क्लिक करते हैं, तो आप अपने ऐप के बिल्ड.ग्रेड फ़ाइल में इस छोटे से ग्रेडल कार्य को जोड़ सकते हैं।
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()
}
}
}
और आपके ऐप के लिए हमेशा एक सिंक सिंक करने से पहले इस कार्य को अंजाम देने के लिए, आपको बस ग्रैडल विंडो पर जाने की आवश्यकता है, फिर "AppArtifacts "कार्य को अपने एप / टास्क / अन्य / के तहत ढूंढें, उस पर राइट क्लिक करें और एक्सक्यूट का चयन करें। सिंक से पहले ”(नीचे देखें)।
अब, हर बार जब आप एक ग्रैडल सिंक करते हैं, तो एंड्रॉइड स्टूडियो आपके काम के नवीनतम संस्करण का उपयोग करने के लिए मजबूर हो जाएगा।