android - डिबग मोड के लिए एंड्रॉइड स्टूडियो में SHA-1 फिंगरप्रिंट प्रमाणपत्र कैसे प्राप्त करें?




google-maps android-studio (20)

मैंने खुद को Eclipse से एंड्रॉइड स्टूडियो में स्थानांतरित कर लिया है। अब मैं अपने मैप ऐप पर काम करने की कोशिश कर रहा हूं। इसलिए मुझे अपना SHA-1 फिंगरप्रिंट प्रमाणपत्र नंबर चाहिए।

जब मैं ग्रहण का उपयोग कर रहा था तो यह विंडोज के तहत सही था -> प्राथमिकताएं -> एंड्रॉइड -> बिल्ड । लेकिन एंड्रॉइड स्टूडियो में मुझे इस तरह का कोई विकल्प नहीं मिला, ताकि मुझे आसानी से फिंगरप्रिंट मिल सके। मैं विंडोज का इस्तेमाल कर रहा हूं। मैंने इस link से पढ़ा है कि:

जब आप IDE से अपना प्रोजेक्ट चलाते हैं या डीबग करते हैं, तो Android Studio आपके ऐप को डिबग मोड में स्वचालित रूप से साइन करता है।

इसलिए मैंने इस लिंक से अपने जावा बिन पथ को सेट करने के बाद इसे कमांड लाइन में चलाने की कोशिश की और दुर्भाग्य से मेरा फिंगरप्रिंट नहीं मिल सका। यह कह रहा है कि यह एक अवैध विकल्प है

keytool -list -v -keystore "%USERPROFILE%\.android\debug.keystore" -alias androiddebugkey -storepass android -keypass android

क्या एंड्रॉइड स्टूडियो से SHA-1 फिंगरप्रिंट खोजने का एक तरीका है जैसे कि ग्रहण में बहुत आसान था? जैसा कि मैं एंड्रॉइड स्टूडियो में नौसिखिया हूं, इसे खोजने के लिए पूरी प्रक्रिया क्या है?

एक और बात जो मैं जोड़ना चाहता हूं वह यह है कि मेरे पास मेरा ग्रहण SHA-1 फ़िंगरप्रिंट उत्पन्न करता है और पहले मेरे पास Google डेवलपर कंसोल में उस फ़िंगरप्रिंट पर पंजीकृत मेरा ऐप है, और मैंने उस API कुंजी द्वारा ग्रहण में उस ऐप पर काम किया था। क्या एंड्रॉइड स्टूडियो में इस प्रोजेक्ट पर एक ही एपीआई कुंजी पर काम किया जा सकता है?


मैंने आपको एंड्रॉइड स्टूडियो का उपयोग करके एमडी 5, एसएचए -1 फिंगरप्रिंट खोजने के लिए एक बहुत ही आसान प्रक्रिया मिली।

  1. अपना प्रोजेक्ट चलाएं
  2. ग्रेड मेनू (मेनू: देखें -> टूल विंडोज -> ग्रेडल) पर जाएं
  3. ग्रैडल विंडो में 'साइनिंग रीपोर्ट' पर जाएं। (आपकी परियोजना -> कार्य -> ​​Android -> साइनिंगपोर्ट)
  4. चलाओ। (डबल-क्लिक या Ctrl + Shift + F10 का उपयोग करके)
  5. रन विंडो में आपको सारी जानकारी मिल जाएगी।

यह केवल डिबग मोड के लिए काम करता है। Realease मोड में मैं sha-1 नहीं देख सकता। यहाँ gradlew signingReport परिणाम है

Variant: release
Config: none
----------
Variant: releaseUnitTest
Config: none
----------
Variant: debug
Config: debug
Store: path\Android\avd\.android\debug.keystore
Alias: AndroidDebugKey
MD5: xx:xx:xx:62:86:B7:9C:BC:FB:AD:C8:C6:64:69:xx:xx
SHA1: xx:xx:xx:xx:0F:B0:82:86:1D:14:0D:AF:67:99:58:1A:01:xx:xx:xx
Valid until: Friday, July 19, 2047
----------

इसलिए मुझे sha-1 प्राप्त करने के लिए keytool का उपयोग करना चाहिए। यहां आधिकारिक फायरबेस डॉक:

Get_sha-1_for_release


  1. राइट पेन में ग्रेड आइकॉन पर क्लिक करें।
  2. Root Project Name पर क्लिक करें।
  3. कार्य पर क्लिक करें
  4. Android पर क्लिक करें
  5. SignReport पर क्लिक करें
  6. नीचे फलक में जहां आप रन रिपोर्ट देखते हैं
  7. "टास्क टास्क एक्साइटिस / टेक्स्ट मोड टॉगल करें" पर क्लिक करें
  8. आप sha-1 देख सकते हैं


Android Studio V 1.5.1 में एक नया "Google मैप्स प्रोजेक्ट" बनाते समय, अंतिम स्क्रीन google_maps_api.xml फ़ाइल को खोलता है और निम्नानुसार निर्देशों के साथ स्क्रीन प्रदर्शित करता है:

संसाधन:

TODO: अपना एप्लिकेशन चलाने से पहले, आपको Google मानचित्र API कुंजी की आवश्यकता होगी।

एक पाने के लिए, इस लिंक का अनुसरण करें, निर्देशों का पालन करें और अंत में "बनाएँ" दबाएं:

https://console.developers.google.com/flows/enableapi?apiid=maps_android_backend&keyType=CLIENT_SIDE_ANDROID&r= आपका SHA-1 + आपका पैकेज नाम

आप इस लाइन का उपयोग करके किसी मौजूदा कुंजी में अपने क्रेडेंशियल्स भी जोड़ सकते हैं:
आपका SHA-1: आपका पैकेज नाम

वैकल्पिक रूप से, यहां दिए गए निर्देशों का पालन करें:
https://developers.google.com/maps/documentation/android/start#get-key

एक बार जब आपके पास आपकी कुंजी (यह "एआईजा" से शुरू होती है), इस फाइल में "google_maps_key" स्ट्रिंग को बदलें।
<string name="google_maps_key" templateMergeStrategy="preserve" translatable="false">YOUR GOOGLE MAPS KEY</string>

अपना GOOGLE MAPS कुंजी प्राप्त करने के लिए बस अपने ब्राउज़र में दिए गए URL लिंक को काटें और चिपकाएँ और नए एप्लिकेशन को बनाते समय ऊपर दिए गए निर्देशों का पालन करें। SHA-1 और Package names पहले से दिए गए लिंक में हैं, इसलिए आपको उन्हें जानने की आवश्यकता नहीं है। हालाँकि वे resources>Values>google_maps_api.xml फ़ाइल में आपके प्रोजेक्ट में resources>Values>google_maps_api.xml जो प्रोजेक्ट बनाते समय दिए गए निर्देशों का पालन करने पर पूरा हो जाता है।


Android के लिए SHA-1 कुंजी बनाने का सबसे अच्छा समाधान एंड्रॉइड स्टूडियो से है

सबसे दाईं ओर ग्रेड पर क्लिक करें:

रिफ्रेश आइकन पर क्लिक करें, और आपको ऐप का नाम दिखाई देगा:

कार्य पर क्लिक करें -> रिपोर्ट -> हस्ताक्षर रिपोर्ट :

कंसोल में नीचे के भाग पर SHA-1 कुंजी ढूँढें:


आप निम्न आदेश का उपयोग कर सकते हैं और अपने सिस्टम नाम के साथ AJAY SUNDRIYAL बदल सकते हैं। यह केवल आपके debug.keystore के लिए है। यह आपके लिए काम करेगा।

C:\Program Files\Java\jdk1.8.0_91\bin>keytool -list -v -keystore "c:\users\AJAY SUNDRIYAL\.android\debug.keystore" -alias androiddebugkey -storepass android -keypass android

इसने मेरे मामले में काम किया: पथ का उपयोग करने के बजाय % USERPROFILE% का उपयोग करें। इस पथ में संग्रहीत फ़ाइल स्वचालित रूप से C: उपयोगकर्ता / उपयोगकर्ता नाम / .android :

keytool -list -v -keystore "%USERPROFILE%\.android\debug.keystore" -alias androiddebugkey -storepass android -keypass android

कीस्टोर का मार्ग दोहरे उद्धरणों में है। यह ठीक काम कर रहा है।

keytool -list -v -keystore "C:\Users\App innovation\.android\debug.keystore" -alias androiddebugkey -storepass android -keypass android

दाएं पैनल पर ग्रेड आइकन पर क्लिक करें, फिर (रूट) पर क्लिक करें।

कार्य> Android> साइनिंगपोर्ट

फिर ग्रैडल स्क्रिप्ट निष्पादित होगी, और आप अपनी चाबियाँ देखेंगे।


मुझे सिर्फ Android स्टूडियो में SHA-1 प्राप्त करने का मामला मिला:

  1. अपने पैकेज पर क्लिक करें और नया -> Google -> Google मानचित्र गतिविधि चुनें
  2. Android Studio आपको google_maps_api.xml पर पुनर्निर्देशित करता है

और आपको google_maps_key प्राप्त करने की आवश्यकता होगी।


मेरी समस्या वैसी ही है जैसे मैंने अपने गूगल मैप्स प्रोजेक्ट को ग्रहण से एंड्रॉइड स्टूडियो में स्थानांतरित कर दिया है। मैंने इसका अनुसरण करके अपनी समस्या हल कर ली है:

कमांड के माध्यम से अपने जावा बिन निर्देशिका पर जाएं:

C:\Program Files\Java\jdk1.7.0_71\bin>

अब अपनी कमांड विंडो (CMD.EXE) में नीचे कमांड टाइप करें:

keytool -list -v -keystore c:\users\your_user_name\.android\debug.keystore -alias androiddebugkey -storepass android -keypass android

उदाहरण:

keytool -list -v -keystore c:\users\James\.android\debug.keystore -alias androiddebugkey -storepass android -keypass android

या आप इसे cmd में लिख सकते हैं यदि आप उपयोगकर्ता नाम नहीं जानते हैं:

keytool -list -v -keystore "%USERPROFILE%\.android\debug.keystore" -alias androiddebugkey -storepass android -keypass android

और आपको SHA1 मिलेगा।

फिर मैंने https://code.google.com/apis/console से एक नई कुंजी बनाई क्योंकि मेरे पैकेज का नाम बदल गया है और फिर अपने आवेदन में इस कुंजी का उपयोग करें। यह बढ़िया काम करता है।

सुनिश्चित करें कि आप jdkX.X.X_XX के BIN फ़ोल्डर में हैं (मेरा फ़ोल्डर नाम jdk1.7.0_71 है) , या फिर यदि आपको नहीं पता है कि आपके पास जो फ़ोल्डर का नाम है, तो उसे जावा फ़ोल्डर खोलकर खोजें, और आप देखेंगे फ़ोल्डर का नाम क्या है, लेकिन आपको अपने BIN फ़ोल्डर में होना चाहिए और फिर इस कमांड को चलाना चाहिए। आज मुझे उपरोक्त प्रक्रिया द्वारा एक cmd कमांड विंडो में मेरा SHA1 मान मिला है।

स्नैपशॉट:


मैं @Hiren पटेल के उत्तर के साथ जा रहा हूं लेकिन Android स्टूडियो 2.2 में थोड़ा बदलाव


मैंने इस तरह किया:

स्टेप 1: इस फोल्डर में जाएं

On Mac: /Users/<username>/.android/

On Windows: C:\Documents and Settings\<username>\.android\

On Linux: ~/.android/

चरण 2: इस कमांड लाइन को चलाएं:

keytool -list -v -keystore debug.keystore -storepass android

आपको SHA-1 कुंजी दिखाई देगी।


मैक के लिए, इसने पूरी तरह से काम किया:

keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android

यदि आप एंड्रॉइड स्टूडियो का उपयोग कर रहे हैं, तो आप SHA-1 और MD5 प्रमाणपत्र फिंगरप्रिंट (डिबग, रिलीज़ ... सभी बिल्ड प्रकार !!) ग्रेडल टास्क के माध्यम से प्राप्त कर सकते हैं:

signingReport

संदेश लॉग में SHA-1 और MD5 प्रमाणपत्र दिखाए जाते हैं।

Android प्लगइन (ग्रेड ऐप में कॉन्फ़िगर किया गया) डिफ़ॉल्ट रूप से एक डीबग मोड बनाता है।

com.android.application

किस्टोर के लिए फ़ाइल मार्ग:

HOME/.android/debug.keystore

मैं debug.keystore लिए build.gradle को संलग्न करने की सलाह देता build.gradle । ऐसा करने के लिए, एक फ़ाइल फ़ोल्डर में एक फ़ाइल, debug.keystore , और फिर ग्रेडिंग में साइनिंगकोनफिग्स जोड़ें:

apply plugin: 'com.android.application'

    android {
        ................
        signingConfigs {
            debug {
                storeFile file("../app/debug.keystore")
                storePassword "android"
                keyAlias "androiddebugkey"
                keyPassword "android"
            }
            release {
                storeFile file("../app/debug.keystore")
                storePassword "android"
                keyAlias "androiddebugkey"
                keyPassword "android"
            }
        }
        ........
    }

अतिरिक्त: यदि आप रिलीज़ के लिए बनाना चाहते हैं, तो एक फ़ाइल फ़ोल्डर में एक फ़ाइल, जारी करें। (यह उदाहरण उसी debug.keystore का उपयोग करता है।)


यह Gnu / Linux - Mac - Windows में बहुत आसान है

पहला: - इस कमांड को कॉपी करें

keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android 

दूसरा: अब टर्मिनल में कमांड को एंड्रॉइड स्टूडियो में कॉपी और पेस्ट करें

नतीजा!

शुभ लाभ!!


यह मेरे लिए काम किया:

keytool -exportcert -alias androiddebugkey -keystore

यहां रास्ते से डिबग-या-प्रोडक्शन-की -स्टोर रखें जैसे C: \ Users \ youruser.android \ debug.keystore -list -v

सुनिश्चित करें कि आप पहले से ही एक कमांड या टर्मिनल विंडो में Java\jdk*\bin डायरेक्टरी में हैं।

फिर पासवर्ड के रूप में एंड्रॉइड का उपयोग करें।

कभी-कभी वेब संसाधन भ्रामक हो सकते हैं। ये काम कर रहे हैं:



[अपडेट किया गया 2017]

चरण 1: Android स्टूडियो के शीर्ष दाईं ओर ग्रेड विकल्प पर क्लिक करें।

चरण 2:

- रीफ़्रेश पर क्लिक करें (ग्रेड बार से रिफ्रेश पर क्लिक करें, आपको अपने प्रोजेक्ट की लिस्ट ग्रेड लिपि दिखाई देगी)

- अपने प्रोजेक्ट पर क्लिक करें (आपका प्रोजेक्ट नेम फॉर्म लिस्ट (रूट))

- टास्क पर क्लिक करें

- Android पर क्लिक करें

- साइनिंग रीपोर्ट पर डबल क्लिक करें (आपको ग्रेड कंसोल / रन बार में SHA1 और MD5 मिलेगा)

चरण 3: अपनी SHA1 कुंजी देखने के लिए एंड्रॉइड स्टूडियो के नीचे ग्रेड कंसोल विकल्प पर क्लिक करें।

चरण 4: अब आपको SHA कुंजी मिल गई है लेकिन आप अपना प्रोजेक्ट नहीं चला सकते। यही कारण है कि अपने कॉन्फ़िगरेशन को ऐप मोड में बदलें। नीचे देखें इमेज

इस प्रकार सं।

चरण 5: हैप्पी कोडिंग !!


सबसे आसान तरीके कभी:

अंतिम चरण में एंड्रॉइड स्टूडियो वी 2.2 के लिए अपडेट जोड़ा गया

इसे करने के दो तरीके हैं।

1. तेज़ तरीका :

  1. Android स्टूडियो खोलें
  2. अपना प्रोजेक्ट खोलें
  3. ग्रेडल पर क्लिक करें (राइट साइड पैनल से, आप ग्रेडल बार देखेंगे)
  4. रीफ्रेश पर क्लिक करें ( ग्रैड बार से रिफ्रेश पर क्लिक करें, आपको अपने प्रोजेक्ट की लिस्ट ग्रेड लिपि दिखाई देगी)
  5. अपने प्रोजेक्ट पर क्लिक करें (आपका प्रोजेक्ट नाम फॉर्म सूची (रूट))
  6. कार्य पर क्लिक करें
  7. Android पर क्लिक करें
  8. साइन इन करें पर डबल क्लिक करें (आपको SHA1 और MD5 रन बार में मिलेगा (कभी-कभी यह ग्रेडल कंसोल में होगा)
  9. अपने एप्लिकेशन को चलाने या डीबग करने के लिए मॉड्यूल चयन ड्रॉपडाउन से ऐप मॉड्यूल का चयन करें

नीचे दिए गए स्क्रीनशॉट की जाँच करें:

2. Google मानचित्र गतिविधि के साथ काम करें :

  1. Android स्टूडियो खोलें
  2. अपना प्रोजेक्ट खोलें
  3. फ़ाइल मेनू पर क्लिक करें -> नया चुनें -> Google पर क्लिक करें -> Google मानचित्र गतिविधि चुनें
  4. एक संवाद दिखाई देगा -> समाप्त पर क्लिक करें
  5. Android Studio स्वचालित रूप से google_maps_api.xml नाम से एक XML फ़ाइल जेनरेट करेगा
  6. आपको यहाँ SHA1 कुंजी डीबग करनी होगी (XML फ़ाइल की लाइन नंबर 10 पर)

नीचे स्क्रीनशॉट देखें:

Android Studio V 2.2 अपडेट

निष्पादन के साथ एक समस्या है।

उपाय:

  • रन बार से टॉगल कार्य निष्पादन / पाठ मोड पर क्लिक करें

नीचे स्क्रीनशॉट देखें:

किया हुआ।


सरल, अपने स्पलैश स्क्रीन में इस तरीके को कॉल करें: हैश () और getCertificateSHA1Fingerprint (), और फिर चाबियाँ लॉग में दिखाई देंगी

private void hash() {


            PackageInfo info;
            try {

                info = getPackageManager().getPackageInfo(
                        this.getPackageName(), PackageManager.GET_SIGNATURES);

                for (android.content.pm.Signature signature : info.signatures) {
                    MessageDigest md;
                    md = MessageDigest.getInstance("SHA");
                    md.update(signature.toByteArray());
                    Log.e("sagar sha key", md.toString());
                    String something = new String(Base64.encode(md.digest(), 0));
                    Log.e("sagar Hash key", something);
                    System.out.println("Hash key" + something);
                }

            } catch (PackageManager.NameNotFoundException e1) {
                Log.e("name not found", e1.toString());
            } catch (NoSuchAlgorithmException e) {
                Log.e("no such an algorithm", e.toString());
            } catch (Exception e) {
                Log.e("exception", e.toString());
            }
        }

        private void getCertificateSHA1Fingerprint() {
            PackageManager pm = this.getPackageManager();
            String packageName = this.getPackageName();
            int flags = PackageManager.GET_SIGNATURES;
            PackageInfo packageInfo = null;
            try {
                packageInfo = pm.getPackageInfo(packageName, flags);
            } catch (PackageManager.NameNotFoundException e) {
                e.printStackTrace();
            }
            Signature[] signatures = packageInfo.signatures;
            byte[] cert = signatures[0].toByteArray();
            InputStream input = new ByteArrayInputStream(cert);
            CertificateFactory cf = null;
            try {
                cf = CertificateFactory.getInstance("X509");
            } catch (CertificateException e) {
                e.printStackTrace();
            }
            X509Certificate c = null;
            try {
                c = (X509Certificate) cf.generateCertificate(input);
            } catch (CertificateException e) {
                e.printStackTrace();
            }
            String hexString = "";
            try {
                MessageDigest md = MessageDigest.getInstance("SHA1");
                byte[] publicKey = md.digest(c.getEncoded());
                Log.e("sagar SHA",byte2HexFormatted(publicKey));
            } catch (NoSuchAlgorithmException e1) {
                e1.printStackTrace();
            } catch (CertificateEncodingException e) {
                e.printStackTrace();
            }
        }

        public static String byte2HexFormatted(byte[] arr) {
            StringBuilder str = new StringBuilder(arr.length * 2);
            for (int i = 0; i < arr.length; i++) {
                String h = Integer.toHexString(arr[i]);
                int l = h.length();
                if (l == 1) h = "0" + h;
                if (l > 2) h = h.substring(l - 2, l);
                str.append(h.toUpperCase());
                if (i < (arr.length - 1)) str.append(':');
            }
            return str.toString();
        }

धन्यवाद।






android-studio