android - एंड्रॉइड स्टूडियो में "प्रतीक आर को हल नहीं कर सकता"




android-studio r.java-file (20)

मेरे सभी वर्गों में प्रत्येक उदाहरण में जहां मैं R.id.something संदर्भ देता R.id.something , R लाल रंग में है और यह कहता है "प्रतीक आर को हल नहीं कर सकता"। इसके अलावा हर बार R.layout.something यह लाल रंग में रेखांकित होता है और कहता है "विधि सेट को हल नहीं कर सकता सामग्री (देखें)"। परियोजना हमेशा ठीक बनाता है। यह हर समय देखने के लिए परेशान है। मैंने यहां कुछ अन्य प्रश्नों के बारे में कुछ अन्य प्रश्न पढ़े हैं, लेकिन ग्रहण से परियोजनाओं को आयात करने में सबसे अधिक शामिल हैं। मैं एंड्रॉइड स्टूडियो का सबसे हालिया संस्करण मानता हूं और प्रोजेक्ट को एंड्रॉइड स्टूडियो के साथ बनाया गया था और बिना किसी समस्या के आर आर समस्याओं को हल नहीं कर सकता। मैं जानना चाहता हूं कि अगर कोई जानता है तो इसका क्या कारण है।

अद्यतन : समाधान: उस समय एंड्रॉइड स्टूडियो ब्रांड नया था और मैं भी एक नया डेवलपर था। मुझे एंड्रॉइड स्टूडियो का उपयोग कभी नहीं करना चाहिए था, मुझे कभी एहसास नहीं हुआ कि यह कितना अधूरा था। इस पोस्ट को पोस्ट करने के बाद से मदद करने के लिए हर किसी के लिए धन्यवाद। विडंबना यह है कि इस प्रश्न का वास्तविक उत्तर हटा दिया गया है और इसे हटाया नहीं जा सकता है। मुझे लगता है कि मेरा मूल जवाब इस समस्या का समाधान है।

मेरा मूल उत्तर जो हटा दिया गया था:

मुझे लगता है कि मैंने इस मुद्दे को समझ लिया है। यह मुद्दा एंड्रॉइड स्टूडियो के साथ है, हर बार जब मैंने एडमोब लाइब्रेरी को जोड़ा तो ये सभी त्रुटियां शुरू हुईं। विज्ञापनों के बिना मेरी सभी अन्य परियोजनाओं में समान समस्याएं नहीं हैं। अब मैं इंटेलिज का उपयोग कर रहा हूं और एंड्रॉइड स्टूडियो से दूर रह रहा हूं


  1. अपनी एक्सएमएल फाइलों की जांच करें।
  2. स्वच्छ परियोजना

यह बात है।

उदाहरण के लिए मेरे पास strings.xml में एक प्रविष्टि थी:

<string name="A">Some text</string>

और गतिविधि_main.xml में मैंने इस स्ट्रिंग एंट्री का इस्तेमाल किया

<TextView
android:id="@+id/textViewA"
android:text="@string/A"/>

परियोजना के साथ काम कर रहे थे, मैंने इसे हटा दिया

 <string name="A">Some text</string>

और इसके परिणामस्वरूप activity_main.xml मान्य नहीं हुआ। नतीजतन: आर को हल नहीं कर सकता

तो, अपनी *.xml फ़ाइलों और स्वच्छ परियोजना की जांच करें।


आपका कोड सिर्फ scrambled है। जवाब काफी सरल है।

Just go to **Build** --> **Clean Project**.

यह ट्रिक काम आना चाहिए।

मैं एंड्रॉइड स्टूडियो 3.0.1 का उपयोग कर वर्तमान हूं


इस मुद्दे के लिए कई कारण हैं। हाल ही में, मैंने न्यूएक्टिविटी नामक परीक्षण के लिए एक गतिविधि जोड़ा। इसने res/menu/new.xml नामक एक फ़ाइल बनाई और res/menu/new.xml उस नाम को पसंद नहीं आया क्योंकि नया एक आरक्षित शब्द है।

gradlew clean

या

"Tools" -> "Android" -> "Sync Project with Gradle Files"

कोशिश करने के लिए निश्चित रूप से अच्छी चीजें हैं, लेकिन आपके पास उन आदेशों को चलाने से पहले हल करने के लिए कुछ अन्य समस्याएं हो सकती हैं।


उपर्युक्त उत्तरों में से कोई भी मेरी मदद नहीं करता है। मुझे अंत में एहसास हुआ कि मुद्दा यह था कि एंड्रॉइड स्टूडियो से "बिल्ड" फ़ोल्डर गायब था। मुझे "बिल्ड / *" को छोड़कर परियोजनाओं "आईएमएल" फाइलों में कई पंक्तियां मिलीं। उनको हटाने के बाद, बिल्ड फ़ाइल दिखाई दी और त्रुटियां गायब हो गईं।


एंड्रॉइड स्टूडियो के नवीनतम संस्करणों में, कम से कम मेरे लिए, निम्न कार्य करता है:

"टूल्स" -> "एंड्रॉइड" -> "ग्रैडल फाइलों के साथ सिंक प्रोजेक्ट"


एक ही समस्या है। शुरू किया जब मैंने अपने खींचने योग्य फ़ोल्डर में कुछ छवियां जोड़ दीं और उन्हें एक्सेस करने का प्रयास किया। इसके अलावा जोड़े गए चित्र पूंजी अक्षरों के साथ विस्तार कर रहे थे। ऐसा लगता है कि निर्माण को दुर्घटनाग्रस्त हो गया है, भले ही मैंने उनका नाम बदल दिया हो, संदेश भी वही था और आर पहुंच योग्य नहीं था। मैंने जो किया है, .iml फ़ाइल में मैंने बहिष्कृत करने के लिए देखा और उन्हें हटा दिया (जैसे bellow):

  <excludeFolder url="file://$MODULE_DIR$/build/apk" />
  <excludeFolder url="file://$MODULE_DIR$/build/assets" />
  <excludeFolder url="file://$MODULE_DIR$/build/bundles" />
  <excludeFolder url="file://$MODULE_DIR$/build/classes" />
  <excludeFolder url="file://$MODULE_DIR$/build/dependency-cache" />
  <excludeFolder url="file://$MODULE_DIR$/build/incremental" />
  <excludeFolder url="file://$MODULE_DIR$/build/libs" />
  <excludeFolder url="file://$MODULE_DIR$/build/manifests" />
  <excludeFolder url="file://$MODULE_DIR$/build/res" />
  <excludeFolder url="file://$MODULE_DIR$/build/symbols" />
  <excludeFolder url="file://$MODULE_DIR$/build/tmp" />

इसके बाद मैंने परियोजना का पुनर्निर्माण किया और आर जादुई रूप से फिर से दिखाई दिया।


क्या आपने हाल ही में अपने एसडीके उपकरण अपडेट किए हैं? एंड्रॉइड एसडीके प्रबंधक लॉन्च करें और सुनिश्चित करें कि आपके पास नवीनतम एसडीके टूल्स हैं, जो अब प्लेटफ़ॉर्म टूल से अलग हैं। जब मैंने पहली बार अपना एसडीके मैनेजर अपडेट किया था, तो मुझे यह वही समस्या थी, जब तक मैंने एसडीके मैनेजर को बंद नहीं किया और फिर से खोल दिया, तब तक एसडीके बिल्ड टूल्स पैकेज इंस्टॉल / अपडेट के लिए नहीं दिखाया गया।


जब मैंने मैन्युअल रूप से मेरे ऐप के डोमेन फ़ोल्डर का नाम बदल दिया तो मुझे इस समस्या का सामना करना पड़ा। इस मुद्दे को ठीक करने के लिए, मुझे करना था

  1. AndroidManifest.xml में <manifest> की उचित package फ़ोल्डर संरचना सेट करें।
  2. android:name लिए नया पैकेज स्थान सेट करें android:name AndroidManifest.xml में <activity> का android:name
  3. द्वारा कैश साफ़ करें

फ़ाइल मेनू -> अमान्य कैश / पुनरारंभ करें ...

एंड्रॉइड स्टूडियो फिर से शुरू होने और ताजा इंडेक्स बनाने के बाद, यह मुद्दा समाप्त हो जाएगा।


नवीनतम एसडीके संस्करण बदलें, जो मेरे लिए काम था

1. फ़ाइल पर क्लिक करें और फिर परियोजना संरचना पर क्लिक करें 2. फिर "ऐप" का चयन करें, फिर ठीक क्लिक करें, यह मेरे लिए काम करता है।


बस अपनी परियोजना और सिडल परियोजना को ग्रेन फ़ाइल के साथ साफ़ करें।

और समस्या हल हो जाएगी।


भाई, आर। जावा फ़ाइल में एक्सएमएल और जावा पेज के बीच का लिंक है। "आर को हल नहीं किया जा सकता" केवल तभी उत्पन्न होता है जब आपकी कुछ संसाधन फ़ाइलों में कोई समस्या हो। तो सबसे अच्छा और प्रभावी तरीका अंतिम किया गया एक्सएमएल या res फ़ाइल में ड्रायबल को हटा देता है। और फिर एंड्रॉइड कोडिंग मानदंडों के अनुसार वहां से शुरू करें। यही एकमात्र रास्ता है। प्रभावी और सही तरीका।

कोड की उचित ट्रैकिंग के लिए गिट का भी उपयोग करें। ..

हैप्पी कोडिंग .. :)


मुझे एंड्रॉइड स्टूडियो में अपना R पैकेज आयात करना पड़ा। पूर्व के लिए: import com.example.<package name>.R


मुझे एक ही समस्या थी, और ऐसा तब होता है जब मैं एक नई परियोजना बनाता हूं।

मैं क्या करता हूं:

  • एसडीके अपडेट की जांच करें
  • फिर एंड्रॉइड स्टूडियो अपडेट,
  • फिर परियोजना को दोबारा खोलें
  • andoridmanifest.xml खोलें
  • एंड्रॉइड में "_>" के बीच एक जगह मिटाएं: लेबल और सहेजें।

ये मेरे लिए सही है।


मुझे एक ही समस्या है और मैंने यही किया है:

ग्रैडल के साथ स्वच्छ परियोजना और सिंक परियोजना,

मेरे एसडीके में buildTools संस्करण की जांच करें

बिल्ड ग्रेडल (मॉड्यूल) से 8 से 9 तक minSdkVersion बदलें

defaultConfig {
        applicationId "PackageName"
        minSdkVersion 9
        targetSdkVersion 22
        versionCode 1
        versionName "1.0"
    }

लेकिन यह सब मदद नहीं की।

अंत में मुझे जवाब मिला (यह मेरे मामले में काम किया)

Build.gradle से बदलें (मॉड्यूल: ऐप)

android {
    compileSdkVersion 21
    buildToolsVersion '21.0.1'
......
....
}

या

फ़ाइल का चयन करें | प्रोजेक्ट स्ट्रक्चर चेंज टूल्स वर्जन वर्जन 21.1.1


मुझे हाल ही में यह मुद्दा था और स्वच्छ / निर्माण इत्यादि ने इसे हल नहीं किया था। मैंने अनुमान लगाया कि मुझे कहीं कोई समस्या थी लेकिन मुझे यकीन नहीं था कि इसे कहां देखना है (क्या यह मैनिफेस्ट, संसाधन xml फाइल इत्यादि में था?)।

जब कुछ गलत होता है, तो आप यह पता लगा सकते हैं कि कोड विश्लेषण चलाने से क्या होता है।

शीर्ष पर मेनू से चुनें:

विश्लेषण -> कोड का निरीक्षण करें, 'डिफ़ॉल्ट' प्रोफ़ाइल का उपयोग कर पूरे प्रोजेक्ट को स्कैन करें।

आपके निरीक्षण परिणामों में 'एंड्रॉइड' नामक तत्व शामिल होगा। यहां आपको कुछ भी ऐसी सूची मिल जाएगी जो आपके संसाधनों और मैनिफेस्ट फ़ाइल में समस्याएं पैदा कर रही है। त्रुटियां आपके निर्माण से जेनरेट की गई XML फ़ाइलों को खोलेंगी जो लाल रंग में कोई भी त्रुटि दिखाएंगी।

मेरा सटीक मुद्दा इसलिए हुआ क्योंकि मैं स्वाद आधारित मेनिफेस्ट फाइलों का उपयोग कर रहा था और मैंने दुर्घटना से स्वाद में <application> टैग के अंदर कुछ अनुमतियों की प्रतिलिपि बनाई थी।

अद्यतन: मेरे पास एक समस्या थी जिसके बाद एंड्रॉइड स्टूडियो ने अभी भी ठीक होने के बाद त्रुटि दिखाई थी, भले ही मैं अभी भी त्रुटि बना रहा था, जबकि मैं अभी भी ठीक से चला सकता हूं और चला सकता हूं। (मैं एक कैनरी बिल्ड चला रहा हूं इसलिए इसे अभी तक नीचे डाल रहा हूं)


मेरे पास यह मुद्दा भी था। एक सरल 'gradlew clean' और 'gradlew build' चाल चल रही थी।

बिल्ड-> क्लीन प्रोजेक्ट पर क्लिक करें और वह एक ग्रेडल साफ़ करेगा


यदि आप जावा फ़ाइलों या निर्देशिकाओं को अन्य स्थानों पर ले जाने के बाद यह त्रुटि देखते हैं, तो आप गारंटी दे सकते हैं कि एंड्रॉइड स्टूडियो उलझन में आ गया है। और अंदाज लगाइये क्या? उन कार्यों को पूर्ववत करने से समस्या ठीक नहीं होती है।

तो आप एक साफ कोशिश करते हैं, लेकिन यह काम नहीं करता है।

और पुनरारंभ करना या तो काम नहीं करता है।

लेकिन फ़ाइल -> अमान्य कैश / पुनरारंभ करें ... -> अमान्य और पुनरारंभ करें।

एंड्रॉइड स्टूडियो इस बारे में जानकारी रखता है कि कौन सी फाइलें अन्य फाइलों पर निर्भर हैं। और चूंकि फ़ाइलों को चारों ओर ले जाना ठीक से लागू नहीं किया गया है, इसलिए चलती फाइलें त्रुटियों का कारण बनती हैं। और यह सब कुछ नहीं है: इन निर्भरताओं के कैश का निर्माण भवन को तेज करने के प्रयास में किया जाता है।

इसका मतलब है कि आपको न केवल पुनरारंभ करना होगा, लेकिन आपको उन कैशों को पुनर्स्थापित करने की आवश्यकता है (या अधिक सटीक, पुनर्निर्माण) स्वच्छता।


यह एक बहुत पुराना सवाल है, लेकिन यह अभी भी बहुत कुछ होता है और यहां कोई वास्तव में व्यापक उत्तर नहीं है।

मुझे यह समस्या अधिक बार मिल गई है जितनी मैं स्वीकार करना चाहता हूं। यह विभिन्न प्रकार के मुद्दों के कारण हो सकता है जो ज्यादातर को आपके प्रोजेक्ट स्ट्रक्चर के साथ करना पड़ता है जो कि अपेक्षित मिलान से मेल नहीं खाता है। यहां मेरी सभी समस्याओं की एक सूची दी गई है:

एक्लिप्स से एंड्रॉइड स्टूडियो में आयात करना हमेशा सुचारू रूप से काम नहीं करता है, खासकर एंड्रॉइड स्टूडियो के पुराने संस्करणों के साथ। सुनिश्चित करें कि आप सही निर्देशिका पेड़ का उपयोग कर रहे हैं। यह एक मामूली परिपक्व ऐप के लिए ऐसा दिखना चाहिए:

AppName/        // AppName is your app's name, obviously
    .gradle/    // This is a compiler created directory. You should normally leave it alone
    .idea/      // Ditto
    build/      // This too
    gradle/     // And this
    app/
        build/
        libs/
        src/
            androidTest/   // Tests based on the Android instrumentation runner should go here
            main/
                java/
                    fully/           // Typically com
                        qualified/   // the domain name. Longer package 
                                     // names may have deeper folder trees
                            AppName/ // All your java files go here
                res/
                    drawable-*/      // One of these for each resolution you support
                    layout/          // All of your general layouts
                    menu/            // All of your menu layouts
                    values/          // All of your resource xml files
                    xml/             // PreferenceScreen layouts go here
                AndroidManifest.xml
            debug/         
            test/          // Pure jUnit tests should go here
        .gitignore
        app.iml
        build.gradle   // This is the gradle file you should be making most changes to
        proguard-rules.pro
    .gitignore
    build.gradle       // This gradle file should mostly be left alone
    gradle.properties
    gradlew
    local.properties
    AppName.iml
    settings.gradle

यह आपके आईडीई में ऐसा नहीं दिख सकता है। फ़ाइल पेड़ के ऊपर एक ड्रॉप-डाउन है जो आपकी फ़ाइलों को विभिन्न तरीकों से प्रदर्शित करता है, और यह मेरे सिस्टम पर एंड्रॉइड नामक एक को डिफ़ॉल्ट करता है जो आपकी फ़ाइलों को उनके विभिन्न प्रकारों में विभाजित करता है। प्रोजेक्ट नामक इस तरह की समस्या को ठीक करना आसान है, और सीधे आपके ओएस की फाइल सिस्टम से भी आसान है, क्योंकि एंड्रॉइड स्टूडियो फ़ोल्डर्स को ध्वस्त करता है जिसमें केवल एक ही फ़ोल्डर में एक ही फ़ोल्डर होता है।

विशेष रूप से यदि आपने कभी भी अपने ऐप का नाम बदल दिया है, तो आपको यह सुनिश्चित करना होगा कि स्रोत पेड़ मुख्य / जावा / कॉम / डोमेन / ऐपनाम अपडेट किया गया हो। यह भी सुनिश्चित करें कि आपके AndroidManifest.xml में पैकेज टैग सही है।

यदि आपकी ग्रैडल फ़ाइलों या आपके AndroidManifest.xml में त्रुटियां हैं, तो यह एंड्रॉइड स्टूडियो को आपकी संसाधन फ़ाइलों को सही ढंग से बनाने से रोक देगा। कभी-कभी एंड्रॉइड स्टूडियो को अपग्रेड करके ग्रैडल फाइलों को तोड़ दिया जा सकता है, खासकर प्री-1.0 संस्करणों से। कभी-कभी ऐसा इसलिए होता है क्योंकि यह ग्रैडल प्लगइन के पुराने संस्करणों का समर्थन करना बंद कर देता है, इसलिए आपको अपने संस्करण संख्याओं को अपडेट करने की आवश्यकता है। कभी-कभी यह पता लगाना मुश्किल हो सकता है कि वर्तमान संस्करण क्या हैं। आज के रूप में, 7/17/15, मेरे ऐप्स com.android.tools.build:gradle:1.2.3 साथ ठीक संकलित कर रहे हैं। यह निर्भरता में है बाहरीतम gradle फ़ाइल में ब्लॉक,

यदि आपका AndroidManifest एक गैर-मौजूद ड्रॉइंग या स्ट्रिंग संसाधन या गतिविधि का संदर्भ देता है, तो यह टूट जाएगा और इस त्रुटि का कारण बन जाएगा। कभी-कभी यदि कुछ भी एक गैर-परिवर्तनीय ड्रॉइंग या स्ट्रिंग संसाधन का संदर्भ देता है तो आपको यह त्रुटि मिल जाएगी।

अगर आपके पास आपके संसाधनों में एक फ़ाइल है जो दूषित है, या एक अवैध xml फ़ाइल है, तो आपको यह त्रुटि मिल जाएगी।

मेरे अनुभव में, कभी-कभी एंड्रॉइड स्टूडियो किसी भी कारण से हिचकिचाहट नहीं करता है, और आपको इसे और / या अपने पीसी को पुनरारंभ करने की आवश्यकता होती है। मुझे नहीं पता क्यों, लेकिन कभी-कभी यह काम करता है।

यदि आपके पास एक ही नाम के साथ दो एक्सएमएल संसाधन हैं, तो निर्देशिकाओं में जो एक-दूसरे को ओवरराइड नहीं करते हैं, आपको यह समस्या हो सकती है। उदाहरण के लिए, आपके पास ड्रॉइंग-एमएचडीपीआई और ड्रॉएबल-एक्सएचडीपीआई में एक ही नाम हो सकता है क्योंकि वे लक्ष्य डिवाइस के आधार पर एक-दूसरे को ओवरराइड करते हैं, लेकिन यदि आपके पास लेआउट और मेनू में समान नाम है, तो इससे कोई समस्या होगी। फ़ाइलों में से एक का नाम बदलें या हटाएं।

अगर केवल कुछ संसाधनों को यह समस्या हो रही है, तो उन संसाधनों की गलत निर्देशिका में सबसे अधिक संभावना है।

एक मामले में मुझे एंड्रॉइड स्टूडियो को पूरी तरह से पुनर्स्थापित करना पड़ा। मुझे नहीं पता कि क्या गलत था, लेकिन यह काम किया।

एक मामले में मैंने अपनी पूरी परियोजना को एक अलग निर्देशिका में ले जाया और इसे एक नई परियोजना के रूप में फिर से आयात किया। मुझे नहीं पता कि क्या गलत था, लेकिन यह काम किया।

नामों के लिए आरक्षित शब्दों वाले एक्सएमएल फाइलें इस समस्या का कारण बन सकती हैं। उनका नाम बदलें या हटाएं।

आपके ग्रैडल फ़ाइल बिल्ड-टूल्स के एक संस्करण को संदर्भित करने के कुछ तरीके हैं जिन्हें आपने इंस्टॉल नहीं किया है। ग्रैडल को बदलकर या उपयुक्त बिल्ड-टूल्स डाउनलोड करके इसे ठीक करें।

अंत में, जो कुछ भी गलत है, उसे ठीक करने के बाद, आपको अपनी ग्रैडल परियोजना को साफ करने की आवश्यकता है। आप शीर्ष पर बिल्ड मेनू पर जाकर और स्वच्छ परियोजना का चयन करके ऐसा करते हैं।


यह संकेत ठीक काम करता प्रतीत होता है।

android:id="@+id/viewID"

एंड्रॉइड स्टूडियो का डिज़ाइन पैनल अच्छी तरह से काम नहीं कर रहा है।


स्पष्ट रूप से मेरे मामले में समस्या को अंत में "*" जोड़कर हल किया गया था

import android.R.*;




r.java-file