كيفية الحصول على شهادة بصمة الأصبع SHA-1 في Android Studio لوضع التصحيح؟


Answers

مشكلتي هي نفسها كما قمت بتحويل مشروع خرائط Google الخاص بي من Eclipse إلى Android Studio . لقد حلت مشكلتي باتباع هذا:

انتقل إلى دليل حاوية بن الخاص بك عبر الأمر:

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

أو يمكنك فقط كتابة هذا في كمد إذا كنت لا تعرف اسم المستخدم:

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

وسوف تحصل على SHA1.

ثم قمت بإنشاء مفتاح جديد من https://code.google.com/apis/console بسبب تغير اسم الحزمة الخاصة بي ومن ثم استخدام هذا المفتاح في التطبيق الخاص بي. أنه يعمل بشكل جيد.

تأكد من أنك في مجلد BIN jdkX.X.X_XX (اسم المجلد الخاص بي هو jdk1.7.0_71) ، وإلا إذا كنت لا تعرف اسم المجلد لديك ، فاعثر عليه عن طريق فتح مجلد Java ، وسوف ترى ما اسم المجلد ، ولكن يجب أن تكون في مجلد BIN ثم قم بتشغيل هذا الأمر. اليوم لدي قيمة SHA1 الخاصة بي في إطار الأوامر cmd بالإجراء أعلاه.

لمحة:

Question

لقد حولت نفسي من Eclipse إلى Android Studio . الآن أحاول العمل على تطبيق خريطتي. لذلك أحتاج إلى رقم شهادة بصمة الأصبع SHA-1.

عندما كنت أستخدم Eclipse ، كان ذلك صحيحًا في نظام Windows -> التفضيلات -> Android -> Build . ولكن في Android Studio لم أتمكن من العثور على أي خيار مثل هذا حتى أتمكن من العثور بسهولة على بصمة الإصبع. أنا أستخدم ويندوز. لقد قرأت من هذا link ما يلي:

يعمل Android Studio على تسجيل تطبيقك في وضع التصحيح تلقائيًا عند تشغيل المشروع أو تصحيحه من IDE.

لذلك حاولت تشغيل هذا في سطر الأوامر بعد تعيين مسار بن جافا الخاص بي من هذا الرابط ولسوء الحظ لم أتمكن من العثور على بصمة أصابعي. إنه يقول إنه خيار غير قانوني .

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

هل هناك طريقة للعثور على بصمة SHA-1 من Android Studio كما كان الأمر سهلاً للغاية في Eclipse؟ بما أنني مبتدئ في Android Studio ، ما هي العملية الكاملة للعثور عليه؟

شيء آخر أريد إضافته هو أنني قمت بإنشاء Eclipse الخاص بي يولد بصمة SHA-1 ، وفي السابق لدي تطبيق مسجل على ذلك الجهاز في وحدة تحكم مطوري Google ، وعملت على هذا التطبيق في Eclipse بواسطة مفتاح API هذا. هل يمكن تشغيل مفتاح واجهة برمجة التطبيقات نفسه على هذا المشروع في Android Studio؟




استخدم الأمر البسيط:

keytool -exportcert -keystore path-to-debug-or-production-keystore -list -v

وستحصل على مفتاح SHA1.




لقد عثرت على عملية سهلة جدًا للعثور على بصمة الإصبع MD5 و SHA-1 باستخدام Android Studio.

  1. قم بتشغيل مشروعك
  2. انتقل إلى قائمة Gradle (القائمة: View -> Tool Windows -> Gradle)
  3. انتقل إلى "signReport" في نافذة Gradle. (مشروعك -> المهام -> android -> signatureReport)
  4. شغلها. (باستخدام النقر المزدوج أو Ctrl + Shift + F10)
  5. في نافذة تشغيل سوف تجد جميع المعلومات.

انها تعمل فقط لوضع التصحيح. في وضع realease لا أستطيع أن أرى ش 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
----------

لذلك يجب أن أستخدم keytool للحصول على sha-1. هنا وثيقة Firebase الرسمية:

Get_sha-1_for_release




بسيطة ، استدعاء هذه الطرق في شاشة Splash الخاصة بك: التجزئة () و 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();
        }

شكرا.




لينكس

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



بالنسبة لنظام التشغيل Mac ، كان هذا العمل يعمل بشكل مثالي:

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



اذهب إلى File> Project Structure اختر "app" أو "mobile" مهما كنت قد أعطيت الاسم من علامة التبويب "Modules" اختر "Signing".

يمكنك إضافة شهادة النقر على زر "+".




إذا كان لديك Android Studio ، فهذا بسيط للغاية. ما عليك سوى إنشاء MapActivity باستخدام Android Studio وبعد إنشائه ، انتقل إلى google_maps_api.xml. هناك سيكون هناك رابط في التعليقات. إذا قمت بلصقها في متصفحك ، فستطلب منك ملء بعض التفاصيل وبعدها سيتم إنشاء API الخاص بك. ليست هناك حاجة لاستخدام keytool وجميع.

لقطة شاشة:




هذا العمل بالنسبة لي:

keytool -exportcert -alias androiddebugkey -keystore

ضع ملف تعريف الارتباط إلى المسار أو التصحيح في الإنتاج هنا مثل C: \ users \ youruser.android \ debug.keystore -list -v

تأكد من وجودك بالفعل في دليل Java\jdk*\bin في نافذة الأوامر أو المحطة الطرفية.

ثم استخدم Android ككلمة المرور.

في بعض الأحيان قد تكون موارد الويب مضللة. هؤلاء هم الذين يعملون:




بالنسبة إلى نظام التشغيل Windows 10 ، من محطة Android Studio :

keytool -exportcert -alias androiddebugkey -keystore %USER_PROFILE%"/.android/debug.keystore -list -v

ملاحظة: بالنسبة إلى debug.keystore ، كلمة المرور هي "android". عادةً ما يقع "%USER_PROFILE%"/.android/debug.keystore الأخطاء debug في "%USER_PROFILE%"/.android/debug.keystore .




لقد نجح ذلك في حالتي: استخدم ٪ USERPROFILE٪ بدلاً من إعطاء مسار ملف .keystore المخزن في هذا المسار تلقائيًا C: Users / user name / .android :

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



استخدم الإرشادات من مدير API باستخدام keytool:

احصل على اسم الحزمة من ملف AndroidManifest.xml الخاص بك. ثم استخدم الأمر التالي للحصول على البصمة:

keytool -list -v -keystore mystore.keystore




[تم تحديث عام 2017]

الخطوة 1: على الجانب العلوي من الخيار Android Studio انقر على Gradle.

الخطوة 2:

- انقر فوق تحديث (انقر فوق تحديث من Gradle Bar ، سترى البرامج النصية قائمة Gradle من المشروع الخاص بك)

- انقر على مشروعك (قائمة نموذج اسم مشروعك (الجذر))

- اضغط على المهام

- انقر على Android

- انقر مرتين على توقيع التقرير (ستحصل على SHA1 و MD5 في Gradle Console / Run Bar)

الخطوة 3: انقر على خيار Gradle Console الموجود أسفل Android Studio للاطلاع على مفتاح SHA1.

الخطوة 4: الآن حصلت على مفتاح SHA ولكنك لا تستطيع تشغيل مشروعك.هذا هو السبب في تغيير التكوين الخاص بك إلى وضع التطبيق. انظر الصورة أدناه.

مثله.

الخطوة 5: الترميز سعيدة!




يمكنك استخدام الأمر التالي وتغيير 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



للحصول على SHA1 كمستودع إنتاج:

  1. بناء -> توليد APK APK ...

  2. إنشاء keystore مع كلمة المرور واتباع الخطوات

  3. انتقل إلى Mac / Library / Java / JavaVirtualMachines / jdk1.8.0_20.jdk / Contents / Home / bin واسحب مجلد سلة المحطات إلى الجهاز بعد أمر cd للإشارة إليه حتى تتمكن من استخدام أداة keytool. لذا ، في cd للكتابة الطرفية (اسحب حاوية بن هنا) ، اضغط على Enter.

  4. ثم قم بنسخ ولصق هذا في المحطة:

    keytool -exportcert -alias Your_keystore_AliasName -keystore /Users/Home/Development/AndroidStudioProjects/YoutubeApp/app/YoutubeApp_keystore.jks -list -v
    

    محو المسار الخاص بي والذهاب حيث قمت بتخزين تخزين المفاتيح الخاصة بك واسحب حجر الزاوية الخاص بك وإسقاطه بعد -keystore في سطر الأوامر حتى يتم إنشاء المسار.

    كذلك ، قم بمسح Your_keystore_AliaseName لوضع اسمك المستعار الاسم المستعار الذي استخدمته عند إنشائه.

  5. اضغط على Enter وأدخل كلمة المرور :)

  6. عندما تقوم بإدخال كلمة المرور ، لن تظهر الوحدة الطرفية أنها تتلقى إدخالات لوحة المفاتيح ، ولكنها في الواقع تقوم بذلك ، لذا ضع كلمة المرور واضغط على Enter حتى إذا لم تتم كتابة كلمة المرور.