android - شرح - استخدام google map في تطبيق اندرويد




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

لقد عثرت على عملية سهلة جدًا للعثور على بصمة الإصبع 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

لقد حولت نفسي من 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؟


  1. انقر فوق رمز Gradle في الجزء الأيمن.
  2. انقر على اسم مشروع الجذر.
  3. انقر فوق المهام
  4. انقر فوق Android
  5. انقر فوق توقيع التقرير
  6. في الجزء السفلي حيث ترى تقرير التشغيل
  7. انقر فوق "Toggle Tasks Execytions / text mode"
  8. يمكنك رؤية sha-1


أسهل طريقة للحصول على طباعة الإصبع هي التبديل من التطبيق إلى التقرير الموقع عن طريق النقر على القائمة المنسدلة والنقر على "إنشاء".

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


أفضل حل لتوليد مفتاح SHA-1 للأندرويد هو من Android Studio .

انقر على Gradle في أقصى الجانب الأيسر:

انقر على رمز التحديث ، وسوف ترى اسم التطبيق:

انقر على المهام -> تقرير -> تقرير التوقيع :

ابحث عن مفتاح SHA-1 في الجزء السفلي في وحدة التحكم:


أنا ذاهب معHiren باتل الإجابة ولكن تغيير طفيف في استوديو الروبوت 2.2


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

لقطة شاشة:


إذا كنت تستخدم Android Studio ، فيمكنك الحصول على بصمة شهادة SHA-1 و MD5 (تصحيح ، إصدار ... كل أنواع الإنشاء !) سريعًا عبر مهام Gradle :

signingReport

يتم عرض شهادات SHA-1 و MD5 في سجلات الرسائل .

يعمل المكون الإضافي Android (الذي تمت تهيئته في تطبيق Gradle) على إنشاء وضع تصحيح افتراضي.

com.android.application

مسار الملف إلى مخزن المفاتيح:

HOME/.android/debug.keystore

أوصي إرفاق debug.keystore build.gradle . لتنفيذ ذلك ، ضع ملفًا debug.keystore في مجلد تطبيق ثم أضف SigningConfigs في تطبيق Gradle :

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"
            }
        }
        ........
    }

إضافي: إذا كنت تريد إنشاء للإصدار ، فضع ملفًا ، release.keystore ، في مجلد التطبيق. (يستخدم هذا المثال نفس debug.keystore .)


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

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


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

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

keytool -list -v -keystore mystore.keystore


استخدمت مباشرة الأمر التالي من جهاز Mac الخاص بي باستخدام المحطة. حصلت على إصبع SHA1. هذا هو الأمر:

keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass 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 .


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

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

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

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

لقد وجدت للتو حالة الحصول على SHA-1 في Android Studio:

  1. انقر على الحزمة الخاصة بك واختر جديد -> Google -> نشاط خرائط Google
  2. يعيد Android Studio توجيهك إلى google_maps_api.xml

وسترى كل ما تحتاجه للحصول على google_maps_key .


مسار keystore في علامات اقتباس مزدوجة. انها تعمل بشكل جيد.

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

مشكلتي هي نفسها كما قمت بتحويل مشروع خرائط 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 بالإجراء أعلاه.

لمحة:


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

keytool -exportcert -alias androiddebugkey -keystore

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

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

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

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


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

أسهل الطرق على الإطلاق:

تمت إضافة التحديث إلى Android Studio V 2.2 في الخطوة الأخيرة

هناك طريقتان للقيام بذلك.

1. الطريقة الأسرع :

  1. افتح Android Studio
  2. افتح مشروعك
  3. انقر على Gradle (من الجانب الأيمن ، سترى Gradle Bar )
  4. انقر فوق Refresh (انقر فوق Refresh from Gradle Bar ، سترى List Gradle scripts في مشروعك)
  5. انقر على مشروعك ( قائمة نموذج اسم مشروعك (الجذر))
  6. انقر فوق المهام
  7. انقر على Android
  8. انقر مرتين على توقيع التقرير (ستحصل على SHA1 و MD5 في شريط التشغيل (في بعض الأحيان سيكون في Gradle Console))
  9. حدد وحدة نمطية للتطبيق من القائمة المنسدلة لاختيار الوحدة النمطية لتشغيل تطبيقك أو تصحيحه

تحقق من لقطة الشاشة أدناه:

2. العمل مع نشاط خرائط Google :

  1. افتح Android Studio
  2. افتح مشروعك
  3. انقر على قائمة ملف -> حدد جديد -> انقر على Google -> حدد نشاط خرائط Google
  4. سيظهر مربع حوار -> انقر على إنهاء
  5. سيقوم Android Studio تلقائيًا بإنشاء ملف XML باسم google_maps_api.xml
  6. سوف تحصل على مفتاح SHA1 debug هنا (في السطر رقم 10 من ملف XML)

تحقق من لقطة الشاشة أدناه:

تحديث Android Studio V 2.2

هناك مشكلة مع التنفيذ .

حل:

  • انقر على Toggle تشغيل تنفيذ المهام / النص من شريط التشغيل

تحقق من لقطة الشاشة أدناه:

فعله.


بسيطة ، استدعاء هذه الطرق في شاشة 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();
        }

شكرا.







android-studio