Android.gms.maps.MapFragment को झटपट असमर्थ करें


82

मैं बहुत सरल गतिविधि के साथ Google मैप्स एंड्रॉइड v2 के साथ एक डेमो करने की कोशिश करता हूं, बस Google पृष्ठ से कोड कॉपी करें : https://developers.google.com/maps/documentation/android/start#adding_the_api_key_to_yat_application

गतिविधि के लिए:

package com.example.mapdemo;

import android.app.Activity;
import android.os.Bundle;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
}

लेआउट के लिए:

<?xml version="1.0" encoding="utf-8"?>
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
  android:id="@+id/map"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  class="com.google.android.gms.maps.MapFragment"/>

मैंने पृष्ठ के अनुसार एक एपी कुंजी के लिए आवेदन किया था और अपनी androidmanifest.xml फ़ाइल को संशोधित किया, बस इस तरह:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.wenhai.driverschool"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="15" />

    <uses-permission android:name="android.permission.INTERNET" />

    <!-- add for map2 -->
    <permission
        android:name="com.example.mapdemo.permission.MAPS_RECEIVE"
        android:protectionLevel="signature" />

    <uses-permission android:name="com.example.mapdemo.permission.MAPS_RECEIVE" />
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
    <!-- External storage for caching. -->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

    <!-- Maps API needs OpenGL ES 2.0. -->
    <uses-feature
        android:glEsVersion="0x00020000"
        android:required="true" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <meta-data
            android:name="com.google.android.maps.v2.API_KEY"
            android:value="AIzaSyDVAF4WaVSVRDKJx87It8OSFP5txQcPabc" />

        <activity
            android:name=".MainActivity"
            android:label="@string/title_activity_main" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

मैं अपने ऐप को ग्रहण में Google-play-services_lib के लिए भी संदर्भित करता हूं।

लेकिन हर बार, इस तरह logcat में त्रुटि रिपोर्ट:

2-05 16:22:53.609: E/AndroidRuntime(21623): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.wenhai.driverschool/com.wenhai.driverschool.MainActivity}: android.view.InflateException: Binary XML file line #2: Error inflating class fragment
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1967)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1992)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.app.ActivityThread.access$600(ActivityThread.java:127)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1158)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.os.Handler.dispatchMessage(Handler.java:99)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.os.Looper.loop(Looper.java:137)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.app.ActivityThread.main(ActivityThread.java:4441)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at java.lang.reflect.Method.invokeNative(Native Method)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at java.lang.reflect.Method.invoke(Method.java:511)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:823)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:590)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at dalvik.system.NativeStart.main(Native Method)
12-05 16:22:53.609: E/AndroidRuntime(21623): Caused by: android.view.InflateException: Binary XML file line #2: Error inflating class fragment
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:697)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.view.LayoutInflater.inflate(LayoutInflater.java:466)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:255)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.app.Activity.setContentView(Activity.java:1835)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at com.wenhai.driverschool.MainActivity.onCreate(MainActivity.java:11)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.app.Activity.performCreate(Activity.java:4465)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1931)
12-05 16:22:53.609: E/AndroidRuntime(21623):    ... 11 more
12-05 16:22:53.609: E/AndroidRuntime(21623): Caused by: android.app.Fragment$InstantiationException: Unable to instantiate fragment com.google.android.gms.maps.MapFragment: make sure class name exists, is public, and has an empty constructor that is public
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.app.Fragment.instantiate(Fragment.java:581)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.app.Fragment.instantiate(Fragment.java:549)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.app.Activity.onCreateView(Activity.java:4235)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:673)
12-05 16:22:53.609: E/AndroidRuntime(21623):    ... 20 more
12-05 16:22:53.609: E/AndroidRuntime(21623): Caused by: java.lang.ClassNotFoundException: com.google.android.gms.maps.MapFragment
12-05 16:22:53.609: E/AndroidRuntime(21623):    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.app.Fragment.instantiate(Fragment.java:571)
12-05 16:22:53.609: E/AndroidRuntime(21623):    ... 23 more

मैं इसका कारण नहीं जानता।

अगर मैं अपने प्रोजेक्ट में google-play-services.jar जोड़ता हूं, तो यह एक और त्रुटि की सूचना देगा:

12-05 16:34:23.269: E/AndroidRuntime(22638): FATAL EXCEPTION: main
12-05 16:34:23.269: E/AndroidRuntime(22638): java.lang.NoClassDefFoundError: com.google.android.gms.R$styleable
12-05 16:34:23.269: E/AndroidRuntime(22638):    at com.google.android.gms.maps.GoogleMapOptions.createFromAttributes(Unknown Source)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at com.google.android.gms.maps.MapFragment.onInflate(Unknown Source)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at android.app.Activity.onCreateView(Activity.java:4242)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:673)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at android.view.LayoutInflater.inflate(LayoutInflater.java:466)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:255)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at android.app.Activity.setContentView(Activity.java:1835)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at com.wenhai.driverschool.MainActivity.onCreate(MainActivity.java:11)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at android.app.Activity.performCreate(Activity.java:4465)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1931)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1992)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at android.app.ActivityThread.access$600(ActivityThread.java:127)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1158)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at android.os.Handler.dispatchMessage(Handler.java:99)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at android.os.Looper.loop(Looper.java:137)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at android.app.ActivityThread.main(ActivityThread.java:4441)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at java.lang.reflect.Method.invokeNative(Native Method)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at java.lang.reflect.Method.invoke(Method.java:511)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:823)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:590)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at dalvik.system.NativeStart.main(Native Method)

कोई भी इस बारे में मेरी मदद कर सकता है?


2
मैं MapView के साथ एक ही त्रुटि प्राप्त कर रहा हूं। मैंने लाइब्रेरी को जोड़ा और मैंने इस पेज के डेवलपर्स के रूप में वर्णित सब कुछ किया । URLmaps/documentation/android/start लेकिन यह सब मेरे लिए बेकार था।
जम्पर0

1
वही त्रुटि .. किसी भी समाधान ...
nilkash

1
मैं एक ही त्रुटि कर रहा हूं और अभी तक कोई अच्छा समाधान नहीं खोज सका :(
रिकार्डो ओटेरो

इन चरणों को देखने के लिए जैसा कि मुझे लगता है कि इसके अनसुलझे अभी तक techhomeblog.wordpress.com/2013/02/23/…
Tofeeq Ahmad

ग्रहण में अपनी परियोजना पर राइट-क्लिक करने का प्रयास करें, Android उपकरण> समर्थन लाइब्रेरी जोड़ें चुनें। मेरे मामले में यह ActionBarSherlock से लिया गया एक बासी संस्करण था।
इगोरगानापोलस्की 19

जवाबों:


86

IntelliJ IDEA (IntelliJ 12 के लिए अद्यतन) में:

  1. ~/android-sdk/extras/google/google_play_services/libproject/google-play-services_lib/src/dummy.javaयुक्त फ़ाइल बनाएँ class dummy {}
  2. फ़ाइल-> आयात मॉड्यूल-> ~/android-sdk/extras/google/google_play_services/libproject/google-play-services_lib
  3. मौजूदा स्रोतों से मॉड्यूल बनाएं
  4. अगली> अगली> अगली> अगली> समाप्त
  5. फ़ाइल-> प्रोजेक्ट संरचना-> मॉड्यूल-> YourApp
  6. +-> मॉड्यूल निर्भरता-> Google-play-services_lib ( +बटन संवाद के ऊपरी दाएं कोने में है।)
  7. +-> जार या निर्देशिका->~/android-sdk/extras/google/google_play_services/libproject/google-play-services_lib/libs/google-play-services.jar
  8. सूची के निचले भाग में जाने के लिए up/ downतीरों का उपयोग करें <Module source>

आप चाहें dummy.javaतो डिलीट कर सकते हैं।

संपादित करें: थोड़ी देर के लिए इसका उपयोग करने के बाद मैंने पाया है कि एक छोटी सी खराबी / बग है। आईडीईए कभी-कभी निर्देशिका .imlमें एक परियोजना फ़ाइल खोलने में सक्षम नहीं होने के बारे में शिकायत करेगा google-play-services_lib, इस तथ्य के बावजूद कि आपने कभी नहीं बताया कि वहां एक परियोजना थी। यदि ऐसा होता है, तो परियोजना का पुनर्निर्माण समस्या को हल करता है, कम से कम जब तक यह वापस नहीं आता है।


मेरे लिये कार्य करता है। धन्यवाद!
3

3
नमस्ते, मैं File > Import Moduleअपने में विकल्प नहीं ढूँढ सकता Eclipse IDE। कृपया मेरी मदद करें ...
रहमतुल्लाह एम

यह बेहतर IDE "IntelliJ IDEA" के लिए है।
टिम्मम

2
आपके उत्तर के लिए धन्यवाद! लेकिन मेरे लिए प्रोजेक्ट में मॉड्यूल और जार निर्भरता को जोड़ना और सब कुछ काम करना काफी था!
लोमेज़ा

3
आपको अब डमी फ़ाइल को जोड़ने की आवश्यकता नहीं है क्योंकि "कुछ आईडीई" का समर्थन करने के लिए Google Play Services लाइब्रेरी को "आधिकारिक डमी फ़ाइल" के साथ अपडेट किया गया है (यानी उन्होंने IntelliJ और Android Studio के लिए एक फिक्स बनाया है)।
गार्डियस

33

अपडेट करें

बेहतर समझ पाने के लिए कृपया Commonsware MapV2 कोड स्निपेट्स का पालन करें।

(यह ओम्निबस संस्करण में मौजूद है)

https://github.com/commonsguy/cw-omnibus/tree/master/MapsV2

निम्नलिखित स्निपेट मेरे अंत में ठीक काम कर रहा है। मैं उपयोग करना चाहता हूं SupportMapFragment

अपने प्रोजेक्ट में जोड़ना मत भूलना google-play-services.jar

MainActivity.java

package com.example.newmapview;

import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import com.google.android.gms.maps.SupportMapFragment;

public class MainActivity extends FragmentActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        SupportMapFragment fragment = new SupportMapFragment();
        getSupportFragmentManager().beginTransaction()
                .add(android.R.id.content, fragment).commit();
    }
}

Manifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.newmapview"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="16" />

    <permission
        android:name="com.example.newmapview.permission.MAPS_RECEIVE"
        android:protectionLevel="signature" />

    <uses-permission android:name="com.example.newmapview.permission.MAPS_RECEIVE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.newmapview.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <meta-data
            android:name="com.google.android.maps.v2.API_KEY"
            android:value="XXXXX" />
    </application>

    <uses-feature
        android:glEsVersion="0x00020000"
        android:required="true" />

</manifest>

यहाँ परिणाम है

यहाँ छवि विवरण दर्ज करें आशा है कि यह मदद करेगा।


हाय, विपुल शाह, धन्यवाद। मैं कॉन्कोल से संदेश देता हूं: [2012-12-06 10:20:26 - google-play-services_lib] Google-play-services_lib.apk नहीं खोज सका! मुझे नहीं पता कि क्या इस apk को मेरी त्रुटि का सामना करना पड़ा है। क्या आप मुझे बता सकते हैं कि Google-play-services.jar को कैसे संदर्भित किया जाए। बस इसे नीचे दिए गए लिंक की तरह जोड़ें: developer.android.com/intl/zh-CN/tools/projects/… । या इसे नीचे की तरह ग्रहण में जोड़ें: संपत्ति-> जावा बिल्ड पाथ-> प्रोजेक्ट, google-play-services_lib प्रोजेक्ट जोड़ें। कौन सा आपके पक्ष में है? धन्यवाद।
mmm2006

@ mmm2006 मुझे डर है कि आप इस एप्लिकेशन को एंड्रॉइड एमुलेटर पर चला सकते हैं। मुझे यकीन नहीं है लेकिन आपको इस त्रुटि का सामना करना पड़ सकता है क्योंकि एमुलेटर पर कोई प्ले स्टोर ऐप नहीं है। इसे वास्तविक डिवाइस पर लें।
विपुल

वास्तव में, मैं इसे अपने फोन में चलाता हूं। एक सोनी फोन।
mmm2006

हाय विपुल, क्या आप मुझे बता सकते हैं, मैं MapFragment का उपयोग करके मानचित्र पर अपने मार्कर कैसे दिखा सकता हूं? मेरे पास अक्षांश और देशांतरों की एक सूची है, मैं उन्हें मानचित्र पर दिखाना चाहता हूं, मैंने MapView की कोशिश की लेकिन मेरे लिए काम नहीं किया, इसलिए मैं ItemizedOverlay का उपयोग नहीं कर सकता, MapFragment ने काम किया, इसलिए MapFitment पर कई मार्कर कैसे दिखाएं। यदि संभव हो, तो मुझे एक लिंक प्रदान करें जिसमें वर्किंग कोड हो।
श्रीकांत

@VipulShah: आप रॉक हैं। आप मुझे बताएं कि यह त्रुटि क्यों आई क्योंकि कुछ समय पहले यह काम करता है कि मैंने कुछ ट्यूटियल विकसित किए हैं ---> dj-android.blogspot.in/2013/02// अब एक ही कोड काम नहीं कर रहा है।
धवल परमार

23

बस अपने लेआउट को बदलने की कोशिश करें:

<?xml version="1.0" encoding="utf-8"?>
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
      android:id="@+id/map"
       android:name="com.google.android.gms.maps.SupportMapFragment"
       android:layout_width="wrap_content"
       android:layout_height="match_parent" />

आपको 11 के तहत API के लिए SupportMapFragment का उपयोग करने की आवश्यकता है!

ऑरेल


3
इसके लिए खेद है, लेकिन यह मेरे स्थान पर भी काम नहीं कर सकता। इस बार त्रुटि रिपोर्ट: इसके कारण: android.app.Fragment $ InstantiationException: फ़्रेग्मेंट करने में असमर्थ com.google.android.gms.maps.SupportMapFragment: सुनिश्चित करें कि वर्ग का नाम मौजूद है, सार्वजनिक है, और एक खाली निर्माता है जो सार्वजनिक है। मैं जार में SupportMapFragment पा सकते हैं, लेकिन यह काम नहीं कर सकता। मुझे इसका कारण नहीं पता।
mmm2006

Hum, ऐसा लगता है कि आपको कुछ ऐसा करने की आवश्यकता है: 1. Android SDK Mananger पर Google Play Services SDK डाउनलोड करें। 2. ग्रहण में परियोजना पुस्तकालय आयात करें। 3. अपनी परियोजना में पुस्तकालय जोड़ें। 4. अपने प्रोजेक्ट में Android-support-v4.jar अवश्य रखें (Android SDK प्रबंधक में भी उपलब्ध)। 5. एक खंड बनाएं और SDK> = 11 और 'class = "com.google.android.gms.maps.apFragment के लिए नाम (' class =" com.google.android.gms.maps.MapFragment "/>" जोड़ें। एसडीके <11 के लिए "/> '। 6. एक डिवाइस में सैंपल कोड को आज़माना न भूलें (आपके ऐप को Google Play की ज़रूरत है!)
Aurel

ठीक है। मैंने पाया कि मुझे Google Play सेवा को संदर्भित करने के लिए इस मार्गदर्शिका का पालन करना चाहिए। डेवलपर .android.com/intl/zh-CN/tools/projects/… । लेकिन गूगल द्वारा साबित किया गया बहिष्कार अब तक काम कर सकता है। :(
mmm2006

किसी भी विचार क्या टुकड़े के बराबर समरूप xml फ़ाइल के अंदर डालने के लिए समतुल्य देखें?
हर्षा एमवी

1
@ mmm2006: आपको "FragmentActivity" का विस्तार करने की आवश्यकता है और "गतिविधि" नहीं है तो इसे काम करना चाहिए और अपवाद नहीं फेंकना चाहिए ..
वीर

17

मुझे उसी समस्या का सामना करना पड़ा, जो मेरे लिए काम करने वाले समाधान का पता लगाने में टो दिनों में लगी:

  1. प्रोजेक्ट हटाएं google-play-services_lib(प्रोजेक्ट डिलीट पर राइट क्लिक करें)
  2. MainActivityयदि आपके पास एक है तो Google मानचित्र डेमो वाली परियोजना ( मेरे मामले में) को हटा दें
  3. अपने कार्यक्षेत्र में प्रोजेक्ट google-play-services_lib (अतिरिक्त \ google \ google_play_services \ libproject \ google-play-services_lib) की प्रतिलिपि बनाएँ, फिर इसे सामान्य प्रोजेक्ट के रूप में आयात करें (फ़ाइल-> आयात-> कार्यस्थल पर मौजूदा प्रोजेक्ट)
  4. अपने प्रोजेक्ट पर राइट-क्लिक करें (जिसमें आप मैप लोड करना चाहते हैं) -> Android -> add (लाइब्रेरी के नीचे) google-play-services__ib

आपको कुछ इस तरह से देखना चाहिए:

ध्यान दें

नोट: आपके पास ऐसा कुछ नहीं होना चाहिए (परियोजना को आपके कार्यक्षेत्र से संदर्भित किया जाना चाहिए):

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

मुझे लगता है कि समस्या यह है कि टो प्रोजेक्ट्स उसी लाइब्रेरी को संदर्भित कर रहे हैं


मैं एक जावा बिल्ड पाथ लाइब्रेरी के रूप में गूगल प्ले सेवाओं को जोड़ रहा था, लेकिन इसे एंड्रॉइड / लाइब्रेरी के तहत जोड़ने की आवश्यकता थी
marimaf

10

इसे इस्तेमाल करे

http://developer.android.com/tools/projects/projects-eclipse.html#ReferencingLibraryProject

मैंने अभी Google सेवाओं की परियोजना को जोड़ा और अपनी परियोजना संपत्ति-> Android में एक संदर्भ जोड़ा


2
यह मेरे लिए महत्वपूर्ण फिक्स था, ऊपर दिए गए अन्य जवाबों में से किसी ने भी मदद नहीं की। यहां अंतर वास्तव में बहुत सूक्ष्म है - मैं इसे "जावा बिल्ड पाथ" के माध्यम से एक आश्रित परियोजना के रूप में जोड़ रहा था, जब वास्तव में मुझे इसे "एंड्रॉइड" मेनू के माध्यम से करना चाहिए था। मैंने उस जानकारी को अपने अन्य उत्तरों में से एक में जोड़ा है: stackoverflow.com/questions/13733911/…
Dan J

8
  1. अब तक, डेमो इस लिंक पर काम कर सकता है :
  2. उदाहरण के लिए डेमो, यह भी काम कर सकता है:

अपनी परियोजना में lib निर्देशिका में दो जार जोड़ें। जानकारी के नीचे का पालन करें। विशेष रूप से, मुझे लगता है कि आपको इसकी आवश्यकता है:

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

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

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

आपकी मदद के लिए बहुत बहुत धन्यवाद।


3

शायद आपको इस पर प्रकाश डालना चाहिए:

नोट: Google Play सेवाओं को एंड्रॉइड एमुलेटर पर समर्थित नहीं है - एपीआई का उपयोग करने के लिए, आपको एंड्रॉइड फोन या टैबलेट जैसे विकास उपकरण प्रदान करने की आवश्यकता है।

http://developer.android.com/google/play-services/setup.html

आपको एक भौतिक विकास उपकरण प्रदान करना होगा, जिस पर आप अपना ऐप चला सकते हैं और डीबग कर सकते हैं। एमुलेटर का उपयोग न करें। काम नहीं करेगा।


3
हे भगवान! मुख्य पृष्ठ पर यह नोट इतना कम क्यों है और हर पृष्ठ पर बड़ा लाल नहीं है? मैं सिर्फ एफ * एड लगभग पूरे दिन कोशिश कर रहा हूँ कि चल रहा है !!!!
शमौला

Play सेवाएं अब Android v4.2.2 या इससे ऊपर के इम्यूलेटर पर उपलब्ध हैं।
ब्रायन व्हाइट

2

अपने MainActivity(या प्रत्येक गतिविधि में आप v2 मानचित्र रखना चाहते हैं) आपको विस्तारित करना चाहिए FragmentActivityया Activityतो आप उपयोग करना चाहते हैं SupportMapFragmentया बस MapFragmentMapFragmentयदि आप एपीआई 12 और उससे ऊपर के लक्ष्य कर रहे हैं तो ही कक्षा का उपयोग करें । अन्यथा, उपयोग करें SupportMapFragment। यह एक सूक्ष्म अंतर है लेकिन यह त्रुटि करता है।


2

जैसा कि Google मानचित्र अब Fragments के अंतर्गत आता है, FragmetActivity से अपनी गतिविधि का विस्तार करें न कि केवल गतिविधि और सुनिश्चित करें कि यदि आप " supporrtMapFragment " का उपयोग करते हैं तो आप केवल समर्थन पैकेज से ही Fragment आयात कर रहे हैं ।


Google को इसका उपयोग करने के लिए वास्तव में मूल उदाहरण को ठीक करना चाहिए SupportMapFragment। इसके बिना काम नहीं करता ...
मुज़िकांत

1

मेरे Intellij Idea प्रोजेक्ट में मुझे दोनों को जोड़ना था: प्रोजेक्ट के लिए google-play-services_lib और google-play-services.jar। और google-play-services_lib प्रोजेक्ट में google-play-services.jar भी जोड़ें। उसके बाद, यदि आपने सभी चीजें कीं, जो कि यहां वर्णित है , तो ठीक है, आपका आवेदन काम करना चाहिए।


निर्देशिका (वर्ग, जार निर्देशिका, स्रोत, आदि) के लिए आप किस श्रेणी का उपयोग करते हैं?
13

1
Intellij Idea में मैं एक मॉड्यूल की तरह google-play-services_lib जोड़ रहा हूं। क्या अधिक है, Intellij Idea इसे एक मॉड्यूल की तरह नहीं पहचानता है, क्योंकि src फ़ोल्डर खाली है। आपको src फ़ोल्डर में किसी भी कोड के साथ एक जावा फाइल को जोड़ना चाहिए, उसके बाद मौजूदा स्रोतों से मॉड्यूल बनाएं और प्रोजेक्ट संरचना में प्रोजेक्ट में जोड़ें। फिर जावा फ़ाइल को साफ़ करें।
jumper0k

1

यह थोड़ा मुश्किल था क्योंकि यह पिछले एपीआई में अलग था, लेकिन मुझे एक समाधान मिला। Google कहता है कि यहां क्या करना है ; प्रश्न के अनुसार हमें com.google.android.gmsकक्षाओं की आवश्यकता है इसलिए इसे सेटअप करना आवश्यक है google play services, जो सिर्फ एक पुस्तकालय है जिसे हमें इस लिंक की तरह अपनी परियोजना में जोड़ना होगा । प्रोजेक्ट लाइब्रेरी की कॉपी आयात करना बहुत महत्वपूर्ण है google-play-services_libजो कि sdk फ़ोल्डर में नहीं है। एक बार ऐसा करने के बाद, Google का ट्यूटोरियल पूरी तरह से चला जाता है।


यह भी महत्वपूर्ण है कि आप किस एपीआई का उपयोग कर रहे हैं, एपी 10 या उससे कम की जरूरत है पुस्तकालय डेवलपर का समर्थन करें ।android.com/tools/extras/support-library.html वास्तव में क्या आप त्रुटि है?
joseph.dev89

1

मुझसे पहले बताई गई कई बातों के अलावा, .jar को ऑर्डर और एक्सपोर्ट में भी चिह्नित करना महत्वपूर्ण था। जहां तक ​​मैं बता सकता हूं, आमतौर पर इसका उल्लेख नहीं किया गया है और मेरे लिए यह महत्वपूर्ण था।

ऑर्डर और एक्सपोर्ट में काम को चिह्नित करें


1

इस सुझाव से संबंधित: https://stackoverflow.com/a/20215481/3080835

Applicationमैनिफेस्ट में भी मुझे इस तत्व को जोड़ना था :

<meta-data 
           android:name="com.google.android.gms.version" 
           android:value="@integer/google_play_services_version" />

और इसने पूरी तरह से काम किया।


1

इस निर्भरता को build.gradle में जोड़ें

compile 'com.google.android.gms:play-services:6.5.87'

अब यह काम करता है

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <fragment
        android:id="@+id/map"
        android:name="com.google.android.gms.maps.MapFragment"
        android:layout_width="match_parent"
        android:layout_height="388dp"
        android:layout_weight="0.40" />
</LinearLayout>

0

ड्राइव से संबंधित आयातों की देखभाल करने के लिए, आपको कुछ जार की आवश्यकता होगी Google Drive SDK। कुछ बड़े हैं, इसलिए आप उन्हें अपने ऐप के अनुरूप व्यक्तिगत रूप से जोड़ना चाह सकते हैं।

अगर वह हल नहीं करता है com.google.android.gms.* imports,the Google Play Services add-on needs to be installed (from Extras -> Google Play Services in the SDK Manager) and google-play-services.jar needs to be added to your build path.

संपादित करें:

इस मामले में, निम्नलिखित जार की आवश्यकता थी:

google-api-services-drive-v2-rev1-1.7.2-beta.jar

google-http-client-1.10.3-beta.jar

google-http-client-android2-1.10.3-beta.jar

google-oauth-client-1.10.1-beta.jar

google-api-client-android2-1.10.3-beta.jar

google-api-client-1.10.3-beta.jar


0

मुझे 2.3.4 एंड्रॉइड के साथ अपने एलजी-ई 730 पर समान समस्या थी। Google Play सेवा को अपने फ़ोन पर अपडेट करने से पहले त्रुटि दिखाई देती है।


0

वास्तव में google-play-services_lib बनाने के लिए मत भूलना !! इसलिए यह दिखाता है कि "Google-play नहीं ढूँढ सका .... apk"। मेरे लिए, एक्लिप्स पर, किसी अन्य हैक की आवश्यकता नहीं थी, लेकिन एंड्रॉइड सबमेनू से प्रोजेक्ट को संदर्भित करने के लिए, जावा बिल्ड पथ से, या प्रोजेक्ट संदर्भ या अन्य कुछ भी नहीं। मैन्युअल रूप से रखे गए जार नहीं, वास्तव में मेरे लिए कुछ भी आवश्यक नहीं था।


0

एक्लिप्स में, Google Play सेवाओं के लिए एक अलग प्रोजेक्ट बनाना आवश्यक है और इसे अपने एंड्रॉइड प्रोजेक्ट से केवल एक जार जोड़ने के बजाय इसे एक लिबास के रूप में संदर्भित करें। अपने कंप्यूटर में मैंने Google play services का ग्रहण प्रोजेक्ट D से सीधे आयात किया है: \ adt-bundle-windows-x86-20130219 \ sdk \ extras \ google \ google_play_services \ libproject \ google-play-services_lib और इसे Lib प्रोजेक्ट में सेट करें ताकि मैं मेरे Android प्रोजेक्ट से इसे संदर्भित कर सकता है।


0

यह उसी ट्यूटोरियल पर कहा गया है

कृपया ध्यान दें कि Android API 12 या उसके बाद के लक्ष्यीकरण में आपकी सेटिंग्स का परीक्षण करने के लिए नीचे दिया गया कोड ही उपयोगी है

बस अपने मिन एसडीके संस्करण को 12 में बदलें और यह काम करेगा

<uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="15" />

हेवन ने एपीआई के पुराने संस्करणों के लिए ऑरेल के वर्कअराउंड की कोशिश की।


0

मुझे लगता है कि यह ध्यान देने योग्य है (जब मैंने अपने बालों को बाहर निकालने में एक घंटे से अधिक का समय बिताया) तो अगर आप MapFragment का उपयोग कर रहे हैं तो आप FragmentActivity (SupportMapFragment इस वातावरण में ठीक काम करेंगे) का उपयोग नहीं कर सकते। मैं बस उस पर हार मानने को तैयार था।


0

पहला कदम http://developer.android.com/tools/projects/projects-eclipse.html#ReferencingLibraryProject दूसरा चरण http://developer.android.com/google/play-services/setup.html उस पर ध्यान दें, लेकिन हमने ध्यान नहीं दिया

नोट: आपको लाइब्रेरी की एक प्रति संदर्भित करनी चाहिए जिसे आपने अपने स्रोत ट्री में कॉपी किया है - आपको एंड्रॉइड एसडीके निर्देशिका से लाइब्रेरी का संदर्भ नहीं देना चाहिए।

लेकिन मुझे लगता है कि यह प्रलेखन का अच्छा तरीका नहीं है :)


0

यह कुछ के लिए मदद की हो सकती है। मेरे पास दो प्रोजेक्ट थे, एक जो Google से डेमो की कॉपी था और उसने ठीक काम किया। एक और मैं एक मौजूदा प्रोजेक्ट में कॉपी किया गया और मुझे इसे चलाने के लिए बिल्कुल नहीं मिला। और दूसरी असफलता में मुझे ऊपर वर्णित त्रुटि संदेश मिल रहा था।

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

एक बार जब मैंने इसे सक्षम किया तो परियोजना ठीक काम कर गई।


0

मेरे पास सब कुछ था जो ऊपर वाला सब कह रहा था और super.onCreate(savedInstanceState);ऑन्क्रीट विधि में पहले निर्देश के रूप में कॉल करके त्रुटि को हल किया ; इससे पहले कि यह विधि में अंतिम पंक्ति थी। : | पूरा दिन बर्बाद हो गया।


0

मेरे पास यह मुद्दा है कि मैं केवल Google Play सेवाओं को अपडेट करता हूं और सुनिश्चित करता हूं कि आप google-play-service-lib प्रोजेक्ट को निर्भरता के रूप में जोड़ रहे हैं, यह अब बिना किसी कोड परिवर्तन के काम कर रहा है, लेकिन मुझे अभी भी "Google Play सेवाओं के संसाधन नहीं मिले थे" यह सुनिश्चित करने के लिए अपने प्रोजेक्ट कॉन्फ़िगरेशन की जाँच करें कि संसाधन शामिल हैं। " लेकिन यह केवल तब होता है जब आपके पास सेटलाइकेशन सक्षम (सत्य) हो, कोई भी जानता है कि क्यों?


0

मुझे इन चीजों को करने के बाद इसका सही समाधान नहीं मिलता है, लेकिन मैं इसे हल करता हूं:
- Google-play-services_lib को आयात करते समय 'प्रोजेक्ट प्रोजेक्ट्स को कार्यक्षेत्र में कॉपी करें'
- 13 से नीचे minSdkVersion सेट न करें
- यदि आपको थीम के साथ त्रुटि मिलती है, तो प्रयास करें अपने लेआउट थीम को किसी भी सिस्टम थीम में बदलना
- अपने प्रोजेक्ट को स्क्रैच से फिर से बनाएं या कहीं से भी प्राप्त होने पर सब कुछ वापस कर दें


0

मुझे वही समस्या मिली और एसडीके से सिर्फ इंस्टॉल प्ले सर्विसेज और सभी समस्याएं दूर हो गईं।


0

मैंने गतिविधि में लिखा था
import com.google.android.gms.maps.SupportMapFragment;

और ग्रहण ने मुझे लाल आइकन दिया> क्लिक> फिक्स प्रेजेक सेटअप ..> संग्रह google-play-services.jar जोड़ें

और फाइनली यह काम किया !!



0

विंडोज 7 64-बिट मशीन में x86 के लिए एंड्रॉइड एसडीके का उपयोग करते समय मुझे इस मुद्दे का सामना करना पड़ा। मैंने एंड्रॉइड एसडीके 64-बिट संस्करण डाउनलोड किया, जिससे ग्रहण ने इसे विंडो> वरीयताएँ> एंड्रॉइड> एसडीके स्थान में देखा और मुद्दा बनना बंद हो गया।


0

ध्यानपूर्वक पढ़ें

अगर सबकुछ गूगल कोड जैसा ही हो रहा है तो कृपया मेरे मामले में मैनिफ़ेस्ट फ़ाइल की जाँच करें मैंने जियो की और मैप की को जोड़ा है, इसीलिए यह अपवाद होता है,

नोट - मेनिफ़ेस्ट फ़ाइल निकालें मैप की में दो कुंजियाँ न जोड़ें

meta-data
        android:name="com.google.android.maps.v2.API_KEY"
        android:value="@string/google_maps_key"/>

इस कोड को जोड़ें।

 <meta-data
        android:name="com.google.android.geo.API_KEY"
        android:value="@string/auto_location"/>

 <meta-data
        android:name="com.google.android.gms.version"
        android:value="@integer/google_play_services_version"/>
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.