android मैं एंड्रॉइड स्टूडियो में सहायता फ़ाइल कैसे जोड़ सकता हूं(इन-ऐप बिलिंग उदाहरण से)




android-studio gradle (8)

मैं वर्तमान में एंड्रॉइड स्टूडियो में एक ग्रहण ऐप माइग्रेट कर रहा हूं। यह ऐप ऐप बिलिंग में उपयोग कर रहा था।

मेरी मुख्य समस्या प्रोजेक्ट और एग्रीएल फ़ाइल को संकलित करना है (मुझे लगता है कि आप सभी इस फ़ाइल का उपयोग करते हैं )

मुझे यह त्रुटि संदेश मिलता है:

Gradle: error: cannot find symbol class IInAppBillingService
Gradle: error: package IInAppBillingService does not exist

तो, कुछ ट्यूटोरियल्स के बाद, मैं इस फ़ाइल को com.mypackage.billing से src / main / aidl पर ले जाता हूं ( यह संदर्भ देखें)

लेकिन जैसे ही, मैं ऐसा करता हूं, मुझे यह संदेश मिलता है:

ग्रैडल: कार्य के लिए निष्पादन विफल: 'xxxxxxxxxxx: compileDebugAidl'।

आदेश चलाने में विफल: (...) सी: \ उपयोगकर्ता \ xxxx \ AndroidStudioProjects \ xxxxxx प्रोजेक्ट \ xxxxxxx \ src \ main \ aidl \ IInAppBillingService.aidl: 45 इंटरफ़ेस IInAppBillingService को com \ xxxxxxxx \ बिलिंग \ IInAppBillingService नामक फ़ाइल में घोषित किया जाना चाहिए .aidl।

संदेश स्पष्ट रूप से ऊपर दिए गए Google बग पेज से पोस्ट के साथ एक विरोधाभास है।

इस सहायता फ़ाइल को काम करने के लिए कोई भी सफल रहा है और मेरी मदद कर सकता है?

बस सूचित करने के लिए, मैंने कुछ लिंक का पालन किया:


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


Build.gradle में यह कोड जोड़ें

android {
    sourceSets {
        main {
            aidl.srcDirs = ['src']
        }
    }
}

पुनर्निर्माण और आयात सहायता वर्ग


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

 import com.android.vending.billing.IInAppBillingService;

एक बार मैंने यह जोड़ा कि इस त्रुटि संदेश को हल किया गया है।

किसी भी Google बिलिंग दस्तावेज़ में इस आयात का उल्लेख नहीं किया गया है या मुझे मिले किसी भी कोड उदाहरण में शामिल किया गया है। हालांकि यह अनुभवी जावा डेवलपर्स के लिए स्पष्ट हो सकता है, शुरुआती बस अपनी पहली परियोजना सीखने की कोशिश कर सकते हैं, इसे स्पष्ट रूप से इंगित करने की आवश्यकता हो सकती है।


हमें जोड़ने की जरूरत है

  1. इसके तहत फ़ोल्डर - src / main / aidl / packagename और place aidl फ़ाइल बनाएं।

  2. सहायता फ़ाइल में - पैकेज नाम का उल्लेख करें। पैकेज पैकेजगेम

अब प्रोजेक्ट को साफ करें, प्रोजेक्ट का पुनर्निर्माण करें - हम एप \ बिल्ड \ जेनरेट \ स्रोत \ aidl \ debug \ packagename \ youraidl.java में उत्पन्न सहायता के लिए संबंधित जावा फ़ाइल कर सकते हैं


इसे एक उत्तर के रूप में जोड़ना क्योंकि यह बहुत से लोगों की मदद करना प्रतीत होता था।

  1. 'Src / main /' के अंतर्गत 'aidl' नाम की एक नई निर्देशिका बनाएं । यह ' src / main / aidl ' जैसा दिखना चाहिए।
  2. एक नया पैकेज नाम ' com.android.vending.billing ' निर्देशिका में जोड़ें ' src / main / aidl '
  3. अपने एसडीके स्थान का पता लगाएँ और "sdk \ extras \ google \ play_billing" पर जाएं। एसडीके के लिए डिफ़ॉल्ट स्थान "सी: \ प्रोग्राम फ़ाइलें (x86) \ एंड्रॉइड \ android-sdk है"। यदि आपने कस्टम इसे बदल दिया है, तो आपको एसडीके प्रबंधक के माध्यम से स्थान का पता लगाना होगा।
  4. ऊपर बनाए गए पैकेज में 'IInAppBillingService.aidl' की प्रतिलिपि बनाएँ । अंत में, यह नीचे दी गई छवि के समान दिखना चाहिए।

  1. परियोजना को पुनर्निर्माण करें और इसे जाने के लिए अच्छा होना चाहिए।

नोट: यदि आपका संदर्भ काम नहीं कर रहा है तो सुनिश्चित करें कि आप आवश्यक आयात शामिल करते हैं

import com.android.vending.billing.IInAppBillingService;

https://issuetracker.google.com/issues/36973270

टिप्पणी से संपादित करें

ऐसा करने के बाद, मेरे कोड में IInAppBillingService के संदर्भ अभी भी त्रुटियों के रूप में हाइलाइट किए गए थे, लेकिन ऐप के पुनर्निर्माण के बाद, कक्षा को पहचाना गया था


मुझे पता है कि यह इतना आसान लगता है, लेकिन मैं Google नमूना से सभी फ़ोल्डर पेस्ट कॉपी करता हूं

https://github.com/googlesamples/android-play-billing/tree/master/TrivialDrive/app/src/main

AIDL / com / एंड्रॉयड / वेंडिंग / बिलिंग

प्रोजेक्ट एडीएल में कॉपी किया गया (मैंने एंड्रॉइड स्टूडियो में प्रोजेक्ट व्यू सेट किया था)

और अगले मैं परियोजना को साफ और पुनर्निर्माण और इसे एक संदर्भ मिला।


यहां तक ​​कि बाकी पोस्ट्स मेरे लिए तब तक काम नहीं करती जब तक कि मैंने यहां दिखाए गए एक नए फ़ोल्डर को नहीं बनाया।


जैसे ही त्रुटि संदेश कहता है, आपको इसके पैकेज (com.android.vending.billing) द्वारा निर्धारित सही निर्देशिका में IInAppBillingService.aidl डालना IInAppBillingService.aidl

आपके पास पहले से मौजूद src/main/aidl/ फ़ोल्डर के भीतर, .aidl फ़ाइल को com/android/vending/billing/ में डाल .aidl





aidl