2012-12-05 23 views
43

मैं एंड्रॉइड 'Google मैप्स एंड्रॉइड एपीआई v2' के sample code प्राप्त करने की कोशिश कर रहा हूं। मुझे बिना किसी त्रुटि के निर्मित परियोजना मिलती है। हालांकि, जब मैं अपने गैलेक्सी नेक्सस (मेरे लैपटॉप पर यूएसबी से जुड़ा हुआ) पर ऐप चलाने की कोशिश करता हूं, तो ऐप तुरंत क्रैश हो जाता है।Google मानचित्र एंड्रॉइड एपीआई v2 - नमूना कोड क्रैश

  • मैं AndroidManifest.xml
  • मैं एंड्रॉयड 4.1.2

के खिलाफ बनाया पर अपने ही मैप्स एपीआई कुंजी में भरा यह लॉगिंग है:

Unable to resolve superclass of Lcom/example/mapdemo/BasicMapActivity; (66) 
Link of class 'Lcom/example/mapdemo/BasicMapActivity;' failed 
Could not find class 'com.example.mapdemo.BasicMapActivity', referenced from method com.example.mapdemo.MainActivity.<clinit> 
VFY: unable to resolve const-class 108 (Lcom/example/mapdemo/BasicMapActivity;) in Lcom/example/mapdemo/MainActivity; 
VFY: replacing opcode 0x1c at 0x000d 
Exception Ljava/lang/NoClassDefFoundError; thrown while initializing Lcom/example/mapdemo/MainActivity; 
Class init failed in newInstance call (Lcom/example/mapdemo/MainActivity;) 
Shutting down VM 
threadid=1: thread exiting with uncaught exception (group=0x41ac9930) 
FATAL EXCEPTION: main 
java.lang.ExceptionInInitializerError 
at java.lang.Class.newInstanceImpl(Native Method) 
at java.lang.Class.newInstance(Class.java:1319) 
at android.app.Instrumentation.newActivity(Instrumentation.java:1054) 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2097) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230) 
at android.app.ActivityThread.access$600(ActivityThread.java:141) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234) 
at android.os.Handler.dispatchMessage(Handler.java:99) 
at android.os.Looper.loop(Looper.java:137) 
at android.app.ActivityThread.main(ActivityThread.java:5039) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:511) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
at dalvik.system.NativeStart.main(Native Method) 
Caused by: java.lang.NoClassDefFoundError: com.example.mapdemo.BasicMapActivity 
at com.example.mapdemo.MainActivity.<clinit>(MainActivity.java:97) 
... 15 more 

किसी को भी है एक संकेत यह कैसे हल करें या मैं गलत क्या कर रहा हूं?

+0

में पहली पंक्ति पोस्ट किया गया स्टैकट्रैक: 'Lcom/example/mapdemo/BasicMapActivity' के सुपरक्लास को हल करने में असमर्थ। ऐसा लगता है कि आप 'BasicMapActivity' को गलत वर्ग का विस्तार करते हैं। –

उत्तर

78

बहुत, बहुत ध्यान से पालना शीट का पालन करें:
https://docs.google.com/document/pub?id=19nQzvKP-CVLd7_VrpwnHfl-AE9fjbJySowONZZtNHzw

विशेष रूप से, मुझे तुम्हारी जरूरत है सोचने के लिए:

  • आयात "google-प्ले-services_lib" परियोजना के लिए वास्तविक स्रोत और इसे एंड्रॉइड लाइब्रेरी के रूप में लिंक करें।
    • प्रोजेक्ट के माध्यम से ऐसा करें -> गुण -> एंड्रॉयड -> लाइब्रेरी, जोड़ें -> गूगल प्ले-services_lib (आप सही अपनी परियोजना पर क्लिक करें और गुण का चयन कर सकते हैं, तो Android चयन करें)।
    • अपनी परियोजना के लिए "पथ जावा बिल्ड" के माध्यम से एक आश्रित परियोजना, वह मेरे लिए काम नहीं किया के रूप में यह जोड़ नहीं करो।
  • जोड़ें गूगल प्ले-services.jar और नमूना परियोजना में एक "libs" फ़ोल्डर में एंड्रॉयड-support-v4.jar, और उन्हें "बाहरी बाहरी जार" के रूप में जोड़ने के "पथ में बिल्ड -> कॉन्फ़िगर बिल्ड पथ -> पुस्तकालय "।

मुझे पता चला कि यह दूसरा चरण आवश्यक था क्योंकि नमूना कोड का उपयोग करने की कोशिश करते समय मैं वही त्रुटि मार रहा था। मेरे असली प्रोजेक्ट में com.google.android.gms.R$styleable में NoClassDefFoundError से बचने के लिए पहला कदम आवश्यक था।

मुझे नमूना कोड काम करने से पहले डिवाइस को (पहले परीक्षण प्रयास से) से क्लीन बिल्ड करने और अनइंस्टॉल करने की भी आवश्यकता है।

+11

धन्यवाद! मुझे वास्तव में एंड्रॉइड-सपोर्ट-v4.jar को एक नए "libs" फ़ोल्डर में रखना पड़ा। (इससे पहले कि मैंने इस जार को बाहरी जार निर्भरता के रूप में जोड़ा।) अब ऐप अब क्रैश नहीं होता है। – alexx

+2

बहुत बहुत धन्यवाद, यह बहुत उपयोगी है –

+18

धन्यवाद, यह मेरे लिए काम करता है। बीटीडब्लू: क्या एंड्रॉइड पर कुछ ऐसा है जो वास्तव में काम करता है या आपको सबकुछ के लिए कामकाज की ज़रूरत है? – Ondra

26

Google द्वारा next sample code instructions का पालन करें।

"4" अनुभाग पर जाएं, और नीचे दिए गए निर्देशों का पालन करें:

  • नामित अपनी परियोजना के लिए नया फ़ोल्डर जोड़ें "libs"
  • कॉपी गूगल प्ले-services.jar प्रपत्र:

    "Android-SDK-फ़ोल्डर \ एक्स्ट्रा कलाकार \ Google \ google_play_services \ libproject \ गूगल प्ले-services_lib \ libs"

    करने के लिए "libs" फ़ोल्डर -> सही इस फ़ोल्डर में इस जार पर क्लिक करें -> पथ का निर्माण - > पथ बनाने के लिए जोड़ें।

  • कॉपी एंड्रॉइड-समर्थन-v4।जार प्रपत्र:

    "Android-SDK-फ़ोल्डर \ एक्स्ट्रा कलाकार \ एंड्रॉयड \ समर्थन \ v4"

    करने के लिए "libs" फ़ोल्डर -> सही इस फ़ोल्डर में इस जार पर क्लिक करें -> पथ का निर्माण -> पथ बनाने के लिए जोड़ें।

कहाँ "Android-SDK-फ़ोल्डर" आम तौर पर दिखाई देता है: "C: \ Users \ User_Name \ android-SDKs"

+1

इसने मेरे लिए त्रुटि हल की, मुझे लगता है कि यह सबसे अच्छा जवाब है – UmbySlipKnot

+1

मुझे नहीं पता कि क्यों। लेकिन यह एक काम करता है। –

14

मैं एक ही मुद्दा था, मैं इस समस्या को ठीक करने के लिए निम्न किया था।

  1. प्रोजेक्ट के "गुण" पर जाएं।
  2. का चयन करें "पथ जावा बिल्ड"
  3. चुनें "आदेश और निर्यात" टैब
  4. आप चयनित परियोजना के "src" और "जनरल" रास्तों और निर्भरता यहाँ देखना चाहिए।

क्रम में वे कैसे सूचीबद्ध पहले थे "src" और फिर "जनरल" पथ मैं उन्हें स्विच ताकि "जनरल" फ़ोल्डर "src"

तब से हर एक को "चेक" से पहले का निर्माण कर रहा है आइटम सूचीबद्ध

देखें: NoClassDefFoundError for code in an Java library on Android

+0

इसने मेरे लिए समस्या हल की। धन्यवाद –

0

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

2

यह परियोजनाओं को आयात करने के तरीके पर बहुत भ्रम की वजह से होता है। दस्तावेज़ https://developers.google.com/maps/documentation/android/intro#sample_code कहता है कि आपको किसी भी समय "परियोजनाओं को कार्यक्षेत्र में कॉपी करें" का चयन नहीं करना चाहिए और नमूने चलाने के लिए आपको यह देखना चाहिए कि आपको क्या करना है। नाटक सेवाओं और नमूने के लिए इस विकल्प का चयन न करें - उन्हें छोड़ दें जहां वे हैं।

के बाद आप दोनों निम्नलिखित की जाँच आयात:

  1. सही MainActivity परियोजना क्लिक करें और गुण
  2. एंड्रॉयड पर जाएं और सुनिश्चित करें कि आप एक हरे रंग की टिक गूगल प्ले-सेवाओं-लिब के बगल में दिखाई देता है (प्ले सेवाएं lib को कभी भी जार के रूप में नहीं जोड़ा जाना चाहिए - इसके बजाय इसे एंड्रॉइड लाइब्रेरी के रूप में जोड़ा जाना चाहिए)
  3. लाइब्रेरी अनुभाग पर जाएं और पुस्तकालय अनुभाग
  4. में बाहरी जार (एंड्रॉइड-सपोर्ट-वी 4.jar) आयात करें
  5. [महत्वपूर्ण] Orde पर जाएं जावा बिल्ड पथ में आर और निर्यात करें और सुनिश्चित करें कि एंड्रॉइड-सपोर्ट-v4.jar के पास एक टिक है (यह डिफ़ॉल्ट रूप से नहीं होगा और यही कारण है कि आप शीर्ष पर उल्लेख की गई त्रुटि को देख रहे हैं)
  6. सुनिश्चित करें कि आप परिवर्तन करने के बाद प्रोजेक्ट को साफ और बनाएं, ताकि आप काम करने वाली चीज़ों को ठीक करने की कोशिश नहीं कर सकें, लेकिन उन्हें धक्का नहीं दिया गया था।
1
  1. गूगल द्वारा sample code instructions का पालन करें।
  2. और सेट इस तरह जावा का निर्माण पथ: enter image description here
+0

यह मेरे लिए काम किया। धन्यवाद। – Felix

0

मैं ज्यादा एक ही समस्या थी। फ़ाइल 'import-summary.txt' का उत्तर था। मेरे मामले में मैंने ग्रहण परियोजना को पथनाम में एक स्थान के साथ पथ में आयात किया था। यह विज़ार्ड के साथ एक समस्या का कारण बनता है। नया पथ बनाया गया। पुन: आयातित परियोजना। फिर परियोजना बनाएं/पुनर्निर्माण करें। कोई समस्या नहीं है।

0
  1. नए कार्यक्षेत्र में एक ही नमूना कोड आज़माएं।

  2. यहां तक ​​कि आप कॉपी और नमूना मानचित्र परियोजना पेस्ट और Google Play सेवाएं-लिब परियोजना (/ अतिरिक्त/गूगल/google_play_services/libproject/google-प्ले-services_lib,) और पेस्ट है कि नए ताजा कार्यक्षेत्र में कर सकते हैं।

  3. एसडीके से आवश्यक जार फ़ाइल जोड़ने के बाद डोनॉट भूलने के बाद। ("Android-समर्थन-v4.jar" अपने "Android-SDK" drectory के तहत "/extras/android/compatibility/v4/android-support-v4.jar" में स्थित है।)
संबंधित मुद्दे