7

मैं अपना ऐप रिलीज़ करने की कोशिश कर रहा हूं, लेकिन Google मानचित्र के साथ समस्या है। ऐप में एक गतिविधि (MapActivity) है जो एक मानचित्र प्रदर्शित करती है। डीबग मोड में चलते समय, नक्शा ठीक काम करता है। मैंने रिलीज मोड में अपने ऐप पर हस्ताक्षर किए, और SHA1 मिला। मैंने आवश्यकतानुसार Google कंसोल पर एक नई एंड्रॉइड कुंजी बनाई (SHA1; packageName)। एपीआई कुंजीGoogle मानचित्र रिलीज मोड में एंड्रॉइड पर नहीं दिख रहे हैं

मेरी ऐप में, मैंने आवश्यकतानुसार Google-play-services-lib की एक प्रति का संदर्भ दिया। मैं एडीटी का उपयोग कर रहा हूं।

map.xml

<?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" 
android:name="com.google.android.gms.maps.SupportMapFragment" /> 

MapActivity.java

public class MapActivity extends FragmentActivity { 

private GoogleMap map; 

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

    map = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)) 
         .getMap(); 
    } 

AndroidManifest.xml

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



<uses-sdk 
    android:minSdkVersion="8" 
    android:targetSdkVersion="16" /> 
<uses-permission android:name="android.permission.INTERNET"></uses-permission> 

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

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

<permission 
     android:name="com.example.rentalcar.permission.MAPS_RECEIVE" 
     android:protectionLevel="signature"/> 
    <uses-permission android:name="com.example.rentalcar.permission.MAPS_RECEIVE"/> 


<application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" 
    > 

    <activity 
     android:name="com.example.rentalcar.MainActivity" 
     android:label="@string/app_name" 
     android:screenOrientation="portrait" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

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

    <activity 
     android:name="com.example.rentalcar.MapActivity" 
     android:label="@string/title_activity_map" 
     android:screenOrientation="portrait" > 
    </activity> 

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

</application> 

</manifest> 

केवल अजीब बात यह है कि मैं जब मैं Keytool का उपयोग SHA1 प्राप्त करने के लिए " हस्ताक्षर एल्गोरिदम नाम: SHA256withRSA। क्या यह समस्या हो सकती है? यदि हां, तो मैं इसे कैसे बदल सकता हूं?

using keytool to get the certificate fingerprints

मैं एक तरह से यहां अटक कर रहा हूँ! हर प्रकार की सहायता के लिए आपका धन्यवाद!

+0

इससे मदद मिल सकती है http://stackoverflow.com/questions/13696620/google-maps-android-api-v2- प्राधिकरण- विफलता – Waqas

+0

अपनी रिलीज़ कुंजी फिर से उत्पन्न करने का प्रयास करें: http://chocotech.blogspot.com/2012 /10/get-debug-key-and-release-key-for.html – svlzx

+0

https://stackoverflow.com/a/46418176/2898708 –

उत्तर

10
मानचित्र एपीआई V2 में

, केवल बात यह है कि एक रिलीज़ संस्करण और एक डिबग संस्करण के बीच बदलने के लिए, कुंजी है कि आप यहाँ रजिस्टर https://code.google.com/apis/console/

डिबग काम कर रहा है और अंतिम रिलीज नहीं है, तो है कि यह केवल है आवश्यक परिवर्तन

तो मेरा सुझाव है कि आप अपने रिलीज कीस्टोर के हैश कोड को दोबारा जांचें और सुनिश्चित करें कि यह Google API कंसोल पर ठीक से इनपुट है।

+1

क्या यह हो सकता है कि हस्ताक्षर एल्गोरिदम SHA256withRSA के बजाय SHA1withRSA होना चाहिए? – user1851212

+0

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

0

बस डेटा साफ़ करें (सेटिंग-> ऐप-ऐप-साफ़ डेटा-> अनइंस्टॉल करें) और कोशिश करें। यह मेरे लिए काम किया। सुनिश्चित करें कि पैकेज नाम Google डेवलपर कंसोल में समान है। यदि आप कस्टम कीस्टोर से SHA1 कोड बनाए गए हैं तो रिलीज़ मोड में इसका उपयोग करें। या उसी कुंजीस्टोर के साथ हस्ताक्षर करके एपीके उत्पन्न करें।

0

1- अपनी परियोजना के "एंड्रॉइड मैनिफेस्ट" फ़ाइल में "निर्यात विज़ार्ड का उपयोग करें" का उपयोग करके एपीके फ़ाइल बनाएं।

2- कुंजी डालने के बाद और समाप्त करने से पहले, MD5 और SHA1 कुंजी दिखाया गया है इस

3 नई SHA1 के लिए Android परियोजना जो बिंदु 2.

में लिया गया है के लिए नए एपीआई कुंजी बनाएं pic- दिया जाता है दिखाए जाते हैं

4- नीचे के रूप में

5- दिखाया मैनिफ़ेस्ट फ़ाइल में है कि API कुंजी का प्रयोग कर अपनी परियोजना को साफ और APK फिर से फाइल का निर्माण।

6- आप उस एपीके में अब Google मानचित्र देख सकते हैं।

10

आप पहले से ही @Budius जवाब करने की कोशिश की है और अभी भी इस त्रुटि का सामना करना पड़, यह निम्न स्थिति के कारण हो सकती है, तो:

आप अपने MapFragment जोड़ते हैं, एंड्रॉयड स्टूडियो 2 फ़ाइलें google_maps_api पैदा करते हैं।एक्सएमएल: एक अंदर src/डीबग/res/मान फ़ोल्डर और अन्य अंदर src/release/res/values।

लेकिन किसी कारण से केवल एंड्रॉइड स्टूडियो पर डीबग फ़ोल्डर फ़ाइल दिखाई देती है। इसलिए, जब आप APIkey मान बदलते हैं, तो यह केवल डीबग फ़ोल्डर फ़ाइल पर किया जाता है।

तो फ़ोल्डर को रिलीज़ करने के लिए google_maps_api.xml फ़ाइल कॉपी करें और यह सुनिश्चित करें कि दोनों एक ही APIKey के साथ हैं।

यह अन्य सभी प्रयासों के बाद मेरे लिए काम किया।

+1

धन्यवाद! मेरी समस्या को ठीक करें – user3722523

+0

धन्यवाद ... मैं इसे हल करने के लिए 48 घंटे काम कर रहा हूं। नहीं मुझे समाधान मिला। –

संबंधित मुद्दे