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


136

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

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

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

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

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

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

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

कमांड चलाने में विफल: (...) C: \ Users \ xxxx \ AndroidStudioProjects \ xxxxxxProject \ xxxxxxx \ src \ main \ aidl \ IInAppBillingService.aidl: 45 इंटरफ़ेस IISAppBillingService को com \ xxxxxxxx \ बिलिंग \ IInAppBillingService नामक फ़ाइल में घोषित किया जाना चाहिए। .aidl।

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

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

यहां छवि विवरण दर्ज करें

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


सवाल यह है ... क्या यह सहायता फ़ाइल में नहीं होनी चाहिए /src/main/aidl/com/android/vending/billing?
— सेल्विन

1
ग्रेडेल: कार्य के लिए निष्पादन विफल रहा ': MyProject: compileDebugAidl'। > कमांड चलाने में विफल: 45 इंटरफ़ेस IInAppBillingService को एक फ़ाइल में घोषित किया जाना चाहिए जिसे com \ android \ वेंडिंग \ बिलिंग \ IInAppBillingService.aidl कहा जाता है।
— वजा_नए

1
कुछ बताता है कि आप अभी भी इसे फ़ोल्डर में नहीं डाल रहे हैं जो सेल्विन और मैं कह रहे हैं ...?
— सैम डोजर

बस एक नया स्क्रीनशॉट जोड़ा गया है, मुझे लगता है कि मैंने इसे आपके द्वारा बताए गए फ़ोल्डर में डाल दिया है
— Waza_Be

selvin.pl/TrivialDriveProject.Gradle.zip (local.properties में परिवर्तन एसडीके dir) ... gradlew.bat assembleऔर यह एक आकर्षण की तरह काम करता ... हैं आप फ़ोल्डर / src / मुख्य / AIDL / com / एंड्रॉयड / वेंडिंग / बिलिंग है सुनिश्चित करें कि नहीं /src/main/aidl/com.android.vending.billing? 0.2.1 के रूप में? ग्रैडल 0.5। +
— सेल्विन

जवाबों:


162

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

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


5
जब मैं ऐसा करता हूं, मुझे मिलता है: ग्रेड: त्रुटि: प्रतीक वर्ग IInAppBillingService नहीं मिल सकता है
— Waza_Be

9
तो यह / src / main / aidl / com / android / वेंडिंग / बिलिंग में है? आप निर्माण करने के लिए ढाल का उपयोग कर रहे हैं? यदि ऐसा है, तो एंड्रॉइड स्टूडियो के शीर्ष दाईं ओर थोड़ा सा ग्रेड बटन दबाएं, ग्रेडिंग रीलोड कॉन्फ़िगरेशन, या एंड्रॉइड स्टूडियो को बंद / खोलें।
— सैम डोज़ोर

80
केवल स्पष्ट करने हेतु। एक निर्देशिका सहायता src / main / के तहत बनाएँ। फिर एक नया पैकेज com.android.vending.billing जोड़ें। फिर नए पैकेज में सहायता फ़ाइल की प्रतिलिपि बनाएँ। देखें code.google.com/p/android/issues/detail?id=56755
— kalel वेड

2
@Kalel वेड यह मेरे लिए समाधान था, आपको इसे उत्तर के रूप में जोड़ना चाहिए।
— एसके

3
यदि आपके पास src / main नहीं है, तो कहीं भी सहायता निर्देशिका बनाएँ और build.gradle में निर्दिष्ट करें: android {sourceSets {main {सहायता {{आर्केड "वास्तविक_पथ .. '
— aleb

221

यह एक जवाब के रूप में जोड़ना क्योंकि यह काफी कुछ लोगों की मदद करने के लिए लग रहा था।

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

परिणाम का स्क्रीनशॉट

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

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

import com.android.vending.billing.IInAppBillingService;

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

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

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


1
बस स्पष्ट होने के लिए: इसे अच्छी तरह से पढ़ें! मैंने नहीं किया ... फिर से जोर देने के लिए: यह एक अच्छा इसके अलावा है ... नई 'मुख्य / सहायता' निर्देशिका में com.android.vending.billing!
— लड़का

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

यह काम किया है, लेकिन जब आप मॉड्यूल जोड़ना चाहते हैं तो यह सब स्वचालित क्यों नहीं है?
— एंड्रॉइड डेवलपर

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

4
20 मिनट तक इस समस्या को हल करने की कोशिश की, जब तक कि मैं आपके जवाब पर नहीं आया। तब मैंने इसे प्राप्त करने के लिए इसे उभारने की कोशिश की "आपने आखिरी बार इस जवाब पर वोट दिया था ..." मुझे लगता है कि कुछ लोग कभी नहीं सीखते हैं :)
— बीट्री

10

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

यहां छवि विवरण दर्ज करें


9
  • नई निर्देशिका बनाने के तहत src/mainकहा जाता हैaidl
  • डायरेक्टरी पर राइट क्लिक करें aidl, सेलेक्ट करेंnew->add package
  • पैकेज का नाम दर्ज करें com.android.vending.billing

  • IInAppBillingService.aidlनिर्देशिका Android/Sdk/extras/google/play_billingसे निर्देशिका की प्रतिलिपि बनाएँApp_name/app/src/main/aidl/com/android/vending/billing

  • अब InApp बिलिंग कोडिंग के साथ आगे बढ़ें और InApp संबंधित सेवाओं को परिभाषित करते समय आपको एक त्रुटि मिलेगी can not resolve symbol IInAppBillingXXXXXX
  • अब Buildandroid स्टूडियो मेनू से गोटो , पर क्लिक करें Rebuild Project। यह IInAppBillingService.javaअंदर फ़ाइल उत्पन्न करेगा App_Name/app/build/generated/source/aidl/debug/com/android/vending/billing। इससे समस्या सुलझ जाएगी।

@MOHSENNAVABI कोई समस्या नहीं :-)
— प्रवीना

"IInAppBillingService.aidl" फ़ाइल की प्रतिलिपि बनाने के बाद, क्या इस फ़ाइल की किसी भी पंक्ति को बदलना आवश्यक है? मैंने कुछ नोटों को पैकेज के नाम को बदलने के लिए कहा है क्योंकि यह त्रुटि से बचने के लिए एक नमूने से आ रहा है "गैर-शून्य निकास मूल्य 1" के साथ समाप्त हो गया। ऐसा करने के लिए विशिष्ट निर्देश क्या हैं?
— पाब्लो अल्फोंसो

7

इस कोड को build.gradle में जोड़ें

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

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


2

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

 import com.android.vending.billing.IInAppBillingService;

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

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


1

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

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

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

अब प्रोजेक्ट को साफ़ करें, प्रोजेक्ट को फिर से बनाएँ - हम ऐप्प में निर्मित सहायता के लिए संबंधित जावा फाइल को बना सकते हैं \ बिल्ड \ जेनरेट किया गया \ _


1

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

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

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

परियोजना सहायता में कॉपी किया गया (मैंने Android स्टूडियो में प्रोजेक्ट दृश्य सेट किया था)

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


0

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


0

एंड्रॉइड स्टूडियो को पुनरारंभ करना मेरे लिए काम करता है

एक दूसरी मूर्खतापूर्ण बात जो मुझे थोड़ी देर लगी। मैंने उसे फ़ाइल बनाने की अनुमति देने के लिए एंड्रॉइड स्टूडियो पर कोड को गिरा दिया, लेकिन उसने मेरे बजाय बेवकूफ जीजी के बजाय एक .java (जैसा कि अपेक्षित था) बनाया।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.