يتطلب Android توقيع جميع حِزم APK رقميًا باستخدام شهادة قبل ثبّتها على جهاز أو تحديثها. عند الإصدار باستخدام حِزم تطبيق Android، عليك توقيع حِزمة تطبيقك باستخدام مفتاح تحميل قبل تحميلها إلى Play Console، وتتولى ميزة Play App Signing تنفيذ الخطوات الأخرى. بالنسبة إلى التطبيقات التي يتم توزيعها باستخدام حِزم APK على "متجر Play" أو على متاجر أخرى، عليك توقيع حِزم APK يدويًا لتحميلها.
ترشدك هذه الصفحة إلى بعض المفاهيم المهمة المتعلّقة بتوقيع التطبيق و الأمان، وكيفية توقيع تطبيقك لإصداره على Google Play باستخدام Android Studio، وكيفية ضبط ميزة "توقيع التطبيق" من Play.
في ما يلي نظرة عامة على الخطوات التي قد تحتاج إلى اتّخاذها ل signing توقيع تطبيق جديد ونشره على Google Play:
- إنشاء مفتاح تحميل وملف تخزين مفاتيح
- توقيع تطبيقك باستخدام مفتاح التحميل
- ضبط ميزة "توقيع التطبيق" من Play
- تحميل تطبيقك إلى Google Play
- إعداد إصدار تطبيقك وطرحه
إذا سبق أن تم نشر تطبيقك على "متجر Google Play" باستخدام مفتاح توقيع تطبيق حالي، أو إذا أردت اختيار مفتاح توقيع تطبيق جديد بدلاً من أن تنشئه Google، اتّبِع الخطوات التالية:
- وقِّع تطبيقك باستخدام مفتاح التوقيع الخاص به.
- حمِّل مفتاح توقيع تطبيقك إلى ميزة "توقيع التطبيق" من Play.
- (إجراء مقترَح) إنشاء شهادة تحميل وتسجيلها للتحديثات المستقبلية لتطبيقك
- تحميل تطبيقك إلى Google Play
- إعداد إصدار تطبيقك وطرحه
وتوضّح هذه الصفحة أيضًا كيفية إدارة مفاتيحك عند تحميل تطبيقك
إلى متاجر تطبيقات أخرى. إذا كنت لا تستخدم "استوديو Android" أو كنت تفضّل توقيع
تطبيقك من سطر الأوامر، تعرَّف على كيفية استخدام
apksigner
.
ميزة "توقيع التطبيق" من Play
من خلال ميزة "توقيع التطبيق" من Play، تدير Google مفتاح توقيع تطبيقك وتحميه وتستخدمه لتوقيع حِزم APK بغرض توزيعها. وبما أنّ "حِزم التطبيقات" تُؤخّر إنشاء حِزم APK وتوقيعها إلى "متجر Google Play"، عليك أولاً إعداد ميزة "توقيع التطبيق" من Play قبل تحميل حِزمة تطبيقك. يتيح لك ذلك الاستفادة مما يلي:
- استخدام "مجموعة حزمات تطبيق Android" وتوفير أوضاع التسليم المتقدّمة في Google Play تجعل حِزم Android App Bundle تطبيقك أصغر حجمًا وإصداراتك أبسط، وتتيح استخدام وحدات الميزات وتقديم تجارب فورية.
- يمكنك زيادة أمان مفتاح التوقيع، واستخدام مفتاح تحميل منفصل لتوقيع حِزمة التطبيق التي تحمّلها إلى Google Play.
تتيح لك ترقية المفتاح تغيير مفتاح توقيع التطبيق في حال اختراق المفتاح الحالي أو إذا كنت بحاجة إلى نقل بياناتك إلى مفتاح أقوى من ناحية التشفير.
تستخدِم ميزة "توقيع التطبيق" من Play مفتاحَين: مفتاح توقيع التطبيق ومفتاح التحميل ، وهما موضَّحان بالتفصيل في قسم المفاتيح و مخازن المفاتيح. تحتفظ بمفتاح التحميل وتستخدمه لتوقيع تطبيقك من أجل تحميله إلى "متجر Google Play". تستخدم Google شهادة التحميل للتحقّق من هويتك، وتوقّع حِزم APK باستخدام مفتاح توقيع التطبيق بهدف توزيعها كما هو موضّح في الشكل 1. باستخدام مفتاح تحميل منفصل، يمكنك طلب إعادة ضبط مفتاح التحميل في حال فقدان مفتاحك أو تعرّضه للاختراق.
في المقابل، إذا فقدت مفتاح توقيع تطبيق لم يتم تفعيل ميزة "توقيع التطبيق" من Play عليه، لن تتمكّن من تحديثه.
الشكل 1: توقيع تطبيق باستخدام ميزة "توقيع التطبيق" من Play
يتم تخزين مفاتيحك على البنية الأساسية نفسها التي تستخدمها Google لتخزين مفاتيحها الخاصة، حيث تتم حمايتها من خلال خدمة "إدارة المفاتيح" من Google. يمكنك قراءة التقارير الموجزة حول أمان Google Cloud للاطّلاع على مزيد من المعلومات حول البنية الأساسية الفنية في Google.
عند استخدام ميزة "توقيع التطبيق" من Play، إذا فقدت مفتاح التحميل أو تعرض للاختراق، يمكنك طلب إعادة ضبط مفتاح التحميل في Play Console. بما أنّ Google تحمي مفتاح توقيع تطبيقك، يمكنك مواصلة تحميل إصدارات جديدة من تطبيقك كتعديلات على التطبيق الأصلي، حتى إذا غيّرت مفاتيح التحميل. لمزيد من المعلومات، يُرجى الاطّلاع على مقالة إعادة ضبط مفتاح تحميل خاص مفقود أو تعرّض للاختراق.
يوضّح القسم التالي بعض المصطلحات والمفاهيم المهمة المتعلّقة بتوقيع التطبيقات وأمنها. إذا كنت تفضّل المتابعة والتعرّف على كيفية تحضير تطبيقك لتحميله إلى "متجر Google Play"، انتقِل إلى مقالة توقيع تطبيقك لطرحه.
ملفات تخزين المفاتيح والمفاتيح والشهادات
ملفات تخزين مفاتيح Java (.jks أو .keystore) هي ملفات ثنائية تعمل كمستودعات للشهادات والمفاتيح الخاصة.
شهادة المفتاح العام (ملفات .der
أو .pem
)، والتي تُعرف أيضًا باسم
شهادة رقمية أو شهادة الهوية، تحتوي على المفتاح العام لزوج مفاتيح
عامة/خاصة، بالإضافة إلى بعض البيانات الوصفية الأخرى التي تحدِّد المالك
(على سبيل المثال، الاسم والموقع الجغرافي) الذي يملك المفتاح الخاص المقابل.
في ما يلي الأنواع المختلفة للمفاتيح التي يجب فهمها:
- مفتاح توقيع التطبيق: هو المفتاح المستخدَم لتوقيع حِزم APK المثبَّتة على جهاز المستخدم. كجزء من نموذج التحديث الآمن في Android، لا يتغيّر مفتاح التوقيع أبدًا أثناء فترة استخدام تطبيقك. إنّ مفتاح توقيع التطبيق خاص ويجب الاحتفاظ بسره. ومع ذلك، يمكنك مشاركة الشهادة التي يتم إنشاؤها باستخدام مفتاح توقيع تطبيقك.
مفتاح التحميل: هو المفتاح الذي تستخدمه لتوقيع حِزمة التطبيق أو حزمة APK قبل تحميلها من أجل توقيع التطبيق باستخدام Google Play. يجب الاحتفاظ بسرية مفتاح التحميل. ومع ذلك، يمكنك مشاركة الشهادة التي تم إنشاؤها باستخدام مفتاح التحميل. يمكنك إنشاء مفتاح تحميل بإحدى الطريَقتَين التاليتَين:
- إذا اخترت أن تنشئ Google مفتاح توقيع التطبيق نيابةً عنك عند تفعيل الميزة، سيتم تحديد المفتاح الذي تستخدمه لتوقيع تطبيقك من أجل طرحه كمفتاح التحميل.
- إذا قدّمت مفتاح توقيع التطبيق إلى Google عند تفعيل تطبيقك الجديد أو الحالي، سيكون لديك خيار إنشاء مفتاح تحميل جديد أثناء تفعيل هذه الميزة أو بعد تفعيلها لزيادة مستوى الأمان.
- إذا لم تنشئ مفتاح تحميل جديدًا، يمكنك مواصلة استخدام مفتاح توقيع التطبيق كمفتاح تحميل لتوقيع كل إصدار.
ملاحظة: للحفاظ على أمان مفاتيحك، ننصحك بالتأكّد من اختلاف مفتاح توقيع التطبيق عن مفتاح التحميل.
العمل مع مقدّمي واجهات برمجة التطبيقات
يمكنك تنزيل شهادة مفتاح توقيع التطبيق ومفتاح التحميل من صفحة الإصدار > الإعداد > توقيع التطبيق في Play Console. يُستخدَم هذا الملف لتسجيل مفاتيح عامة مع مزوّدي واجهات برمجة التطبيقات، ومن المفترض أن تتم مشاركته لأنّه لا يحتوي على مفتاحك الخاص.
ملف مرجعي للشهادة هو تمثيل قصير وفريد لشهادة
يطلبه عادةً موفّرو واجهة برمجة التطبيقات مع اسم الحزمة
لتسجيل تطبيق لاستخدام خدمتهم. يمكن العثور على الملفات المرجعية MD5 وSHA-1 وSHA-256
لشهادتَي التحميل وتوقيع التطبيق في صفحة توقيع التطبيق
في Play Console. ويمكن أيضًا إنشاء ملفات مرجعية أخرى من خلال تنزيل الشهادة
الأصلية (.der
) من الصفحة نفسها.
توقيع إصدار تصحيح الأخطاء
عند تشغيل مشروعك أو تصحيح أخطاءه من بيئة التطوير المتكاملة، يوقِّع Android Studio
تطبيقك تلقائيًا باستخدام شهادة تصحيح أخطاء تم إنشاؤها بواسطة أدوات IDE
SDK. في المرة الأولى التي تُشغِّل فيها مشروعك أو تصحِّح أخطاءه في Android Studio، ينشئ IDE تلقائيًا حزمة تخزين المفاتيح والشهادة لتصحيح الأخطاء في $HOME/.android/debug.keystore
، ويضبط كلمات مرور حزمة تخزين المفاتيح والمفاتيح.
بما أنّ شهادة تصحيح الأخطاء يتم إنشاؤها بواسطة أدوات الإنشاء وأنّها غير آمنة من حيث المفهوم، لا تقبل معظم متاجر التطبيقات (بما في ذلك "متجر Google Play") نشر التطبيقات التي تم توقيعها باستخدام شهادة تصحيح أخطاء.
يخزّن Android Studio تلقائيًا معلومات توقيع تصحيح الأخطاء في إعدادات signing ، ما يُغنيك عن إدخالها في كل مرة تصحّح فيها الأخطاء. إعدادات التوقيع هي عنصر يتألف من جميع المعلومات اللازمة لتوقيع تطبيقك، بما في ذلك موقع تخزين المفاتيح وكلمة مروره واسم المفتاح وكلمة مروره.
لمزيد من المعلومات حول كيفية إنشاء التطبيقات وتشغيلها لتصحيح الأخطاء، يُرجى الاطّلاع على مقالة إنشاء وتشغيل تطبيقك.
انتهاء صلاحية شهادة تصحيح الأخطاء
إنّ الشهادة الموقَّعة ذاتيًا المستخدَمة لتوقيع تطبيقك لتصحيح الأخطاء لها تاريخ انتهاء صلاحية يبلغ 30 عامًا من تاريخ إنشائها. عند انتهاء صلاحية الشهادة، ستظهر لك رسالة خطأ في عملية الإنشاء.
لحلّ هذه المشكلة، ما عليك سوى حذف ملف debug.keystore
المخزَّن في أحد
المواقع التالية:
-
~/.android/
على نظامَي التشغيل OS X وLinux -
C:\Documents and Settings\user\.android\
على Windows XP C:\Users\user\.android\
على نظام التشغيل Windows Vista و Windows 7 و8 و10
في المرة التالية التي تُنشئ فيها وتشغِّل إصدارًا يتضمّن أخطاء برمجية من تطبيقك، يُنشئ "استوديو Android" مجددًا ملف تخزين مفاتيح ومفتاح تصحيح أخطاء جديدَين.
توقيع تطبيقك لإصداره على Google Play
عندما تكون مستعدًا لنشر تطبيقك، عليك توقيعه وتحميله إلى متجر تطبيقات، مثل Google Play. عند نشر تطبيقك على Google Play للمرة الأولى، عليك أيضًا ضبط ميزة "توقيع التطبيق" من Play. إنّ ميزة "توقيع التطبيق" من Play اختيارية للتطبيقات التي تم إنشاؤها قبل آب (أغسطس) 2021. يوضّح لك هذا القسم كيفية توقيع تطبيقك بشكل صحيح لإصداره وضبط ميزة "توقيع التطبيق" من Play.
إنشاء مفتاح تحميل وملف تخزين مفاتيح
إذا لم يكن لديك مفتاح تحميل، وهو مفيد عند ضبط ميزة "توقيع التطبيق" من Play، يمكنك إنشاء مفتاح باستخدام "استوديو Android" على النحو التالي:
- في شريط القوائم، انقر على إنشاء > إنشاء حِزمة/حزمة APK موقَّعة.
- في مربّع الحوار إنشاء حِزمة أو حزمة APK موقَّعة، اختَر مجموعة حزمات تطبيق Android أو حزمة APK وانقر على التالي.
- أسفل حقل مسار متجر المفاتيح، انقر على إنشاء جديد.
في نافذة متجر مفاتيح جديد، قدِّم المعلومات التالية لملف تخزين المفاتيح والمفتاح، كما هو موضّح في الشكل 2.
الشكل 2: أنشئ مفتاح تحميل وملف تخزين مفاتيح جديدَين في Android Studio.
متجر المفاتيح
- مسار تخزين المفاتيح: اختَر الموقع الذي يجب إنشاء ملف تخزين المفاتيح فيه.
يجب أيضًا إضافة اسم ملف إلى نهاية مسار الموقع الجغرافي باستخدام الامتداد
.jks
. - كلمة المرور: أنشئ كلمة مرور آمنة وأكِّدها لحجرة تخزين المفاتيح.
- مسار تخزين المفاتيح: اختَر الموقع الذي يجب إنشاء ملف تخزين المفاتيح فيه.
يجب أيضًا إضافة اسم ملف إلى نهاية مسار الموقع الجغرافي باستخدام الامتداد
المفتاح
- الاسم المعرِّف: أدخِل اسمًا تعريفيًا لمفتاحك.
- كلمة المرور: أنشئ كلمة مرور آمنة لمفتاحك وأكِّدها. يجب أن يكون هذا الرمز هو نفسه كلمة مرور ملف تخزين المفاتيح. (يُرجى الرجوع إلى المشكلة المعروفة لمزيد من المعلومات)
- مدة الصلاحية (بالسنوات): حدِّد المدة التي سيكون فيها المفتاح صالحًا. يجب أن يكون المفتاح صالحًا لمدة 25 عامًا على الأقل، حتى تتمكّن من توقيع تحديثات التطبيق باستخدام المفتاح نفسه طوال فترة عمل التطبيق.
- الشهادة: أدخِل بعض المعلومات عنك لتلقّي الشهادة. لا يتم عرض هذه المعلومات في تطبيقك، ولكن يتم تضمينها في شهادتك كجزء من حزمة APK.
بعد إكمال النموذج، انقر على حسنًا.
إذا أردت إنشاء تطبيقك وتوقيعه باستخدام مفتاح التحميل، انتقِل إلى القسم الذي يتناول كيفية توقيع تطبيقك باستخدام مفتاح التحميل. إذا كنت تريد فقط إنشاء المفتاح وملف تخزين المفاتيح، انقر على إلغاء.
توقيع تطبيقك باستخدام مفتاحك
إذا كان لديك مفتاح تحميل، استخدِمه لتوقيع تطبيقك. وإذا سبق أن تم توقيع تطبيقك ونشره على متجر Google Play باستخدام مفتاح توقيع تطبيق حالي، استخدِمه لتوقيع تطبيقك. ويمكنك إنشاء مفتاح تحميل منفصل وتسجيله لاحقًا لدى Google Play لتوقيع التحديثات التالية لتطبيقك وتحميلها.
لتوقيع تطبيقك باستخدام Android Studio، اتّبِع الخطوات التالية:
- إذا لم يكن مربّع الحوار إنشاء حِزمة أو حزمة APK موقَّعةمفتوحًا حاليًا، انقر على إنشاء > إنشاء حِزمة/حزمة APK موقَّعة.
- في مربّع الحوار إنشاء حِزمة موقَّعة أو حِزمة APK، اختَر حِزمة Android Bundle أو APK وانقر على التالي.
- اختَر وحدة من القائمة المنسدلة.
حدِّد مسار ملف تخزين المفاتيح والاسم المستعار لمفتاحك، وأدخِل كلمات المرور لكلاهما. إذا لم تكن قد أعددت ملف تخزين مفاتيح التحميل ومفتاح التحميل، عليك أولاً إنشاء مفتاح تحميل وملف تخزين مفاتيح ثم الرجوع لإكمال هذه الخطوة.
الشكل 3 وقِّع تطبيقك باستخدام مفتاح التحميل.
انقر على التالي.
في النافذة التالية (الموضَّحة في الشكل 4)، اختَر مجلدًا مقصودًا لملف APK الموقَّع، واختَر نوع الإصدار، واختَر أنواع المنتج إذا كان ذلك منطبقًا.
إذا كنت بصدد إنشاء ملف APK وتوقيعه، عليك اختيار إصدارات التوقيع التي تريد أن يتيحها تطبيقك. لمزيد من المعلومات، يُرجى الاطّلاع على مقالة مخططات توقيع التطبيقات.
انقر على إنشاء.
![](https://developer.android.google.cn/static/studio/images/publish/generate_signed_bundle_popup-2x.png?authuser=0&hl=ar)
الشكل 5: انقر على الرابط في النافذة المنبثقة لتحليل حِزمة تطبيقك أو تحديد موقعها.
بعد انتهاء Android Studio من إنشاء تطبيقك الموقَّع، يمكنك تحديد موقع تطبيقك أو تحليله من خلال النقر على الخيار المناسب في الإشعار المنبثق، كما هو موضّح في الشكل 5.
أصبحت الآن مستعدًا لتفعيل ميزة "توقيع التطبيق" من Play وتحميل تطبيقك لإصداره. إذا كنت حديث العهد بعملية نشر التطبيقات، ننصحك بقراءة نظرة عامة على الإطلاق. بخلاف ذلك، انتقِل إلى صفحة كيفية تحميل تطبيقك إلى Play Console.
استخدام ميزة "توقيع التطبيق" من Play
كما هو موضّح سابقًا في هذه الصفحة، يجب ضبط إعدادات ميزة "توقيع التطبيق" من Play ل signing تطبيقك من أجل توزيعه من خلال Google Play (باستثناء التطبيقات التي تم إنشاؤها قبل آب (أغسطس) 2021، والتي قد تستمر في توزيع حِزم APK موقَّعة ذاتيًا). تعتمد الخطوات التي يجب اتّخاذها على ما إذا كان تطبيقك لم يتم نشره على Google Play بعد، أو سبق أن تم توقيع تطبيقك ونشره قبل آب (أغسطس) 2021 باستخدام مفتاح حالي لتوقيع التطبيق.
ضبط تطبيق جديد
لضبط ميزة التوقيع لتطبيق لم يتم نشره بعد على Google Play، يُرجى اتّباع الخطوات التالية:
- إذا لم يسبق لك ذلك، عليك إنشاء مفتاح تحميل وتوقيع تطبيقك باستخدام مفتاح التحميل هذا.
- يُرجى تسجيل الدخول إلى Play Console.
- اتّبِع خطوات إعداد الإصدار وطرحه لإنشاء إصدار جديد.
- بعد اختيار قناة إصدار محدود، يمكنك ضبط ميزة "توقيع التطبيق" ضمن قسم signing App على النحو التالي:
- ليتمكّن Google Play من إنشاء مفتاح توقيع تطبيق نيابةً عنك واستخدامه لتوقيع تطبيقك، ليس عليك اتّخاذ أي إجراء. يصبح المفتاح الذي تستخدمه لتوقيع الإصدار الأول هو مفتاح التحميل، ويجب استخدامه لتوقيع الإصدارات القادمة.
- لاستخدام المفتاح نفسه المستخدَم مع تطبيق آخر في حساب المطوّر الخاص بك، اختَر تغيير مفتاح توقيع التطبيق > استخدام المفتاح نفسه المستخدَم مع تطبيق آخر في هذا الحساب، ثم اختَر تطبيقًا وانقر على متابعة.
- لتقديم مفتاح التوقيع الخاص بك لكي تستخدمه Google عند توقيع تطبيقك، اختَر تغيير مفتاح توقيع التطبيق وحدِّد أحد خيارات التصدير والتحميل التي تتيح لك تحميل مفتاح خاص وشهادته العامة بشكل آمن.
في القسم حِزم التطبيقات، انقر على تصفُّح الملفات لتحديد موقع التطبيق الذي وقّعته باستخدام مفتاح التحميل وتحميله. لمزيد من المعلومات حول طرح تطبيقك، يُرجى الرجوع إلى مقالة إعداد الإصدار وطرحه. عند طرح تطبيقك بعد ضبط إعدادات ميزة "توقيع التطبيق" من Play، ينشئ Google Play مفتاح توقيع تطبيقك ويديره (ما لم تحمِّل مفتاحًا حاليًا) من أجلك. ما عليك سوى توقيع التحديثات اللاحقة لتطبيقك باستخدام مفتاح التحميل الخاص بالتطبيق قبل تحميلها إلى Google Play.
إذا كنت بحاجة إلى إنشاء مفتاح تحميل جديد لتطبيقك، انتقِل إلى القسم الذي يوضّح كيفية إعادة ضبط مفتاح تحميل خاص فقدته أو تعرّض للاختراق.
تفعيل ميزة "الوصول إلى البيانات في الخلفية" في تطبيق حالي
إذا كنت بصدد تحديث تطبيق سبق أن تم نشره على Google Play باستخدام مفتاح توقيع تطبيق حالي، يمكنك تفعيل ميزة "توقيع التطبيق" من Play على النحو التالي:
- سجِّل الدخول إلى Play Console وانتقِل إلى تطبيقك.
- في القائمة اليمنى، انقر على الإصدار > الإعداد > توقيع التطبيق.
- راجِع بنود الخدمة، ثم انقر على قبول إذا كان ذلك منطبقًا.
- حدِّد أحد الخيارات التي تصف على أفضل نحو مفتاح التوقيع الذي تريد تحميله إلى Google Play واتّبِع التعليمات التي تظهر لك. على سبيل المثال، إذا كنت تستخدم ملف تخزين مفاتيح Java لمفتاح التوقيع، اختَر تحميل مفتاح جديد لتوقيع التطبيق من ملف تخزين مفاتيح Java واتّبِع التعليمات لتنزيل أداة PEPK وتشغيلها، وتحميل الملف الذي تم إنشاؤه باستخدام المفتاح المشفَّر.
- انقر على تسجيل.
من المفترض أن تظهر لك الآن صفحة تتضمّن تفاصيل شهادات التوقيع والتحميل لتطبيقك. يوقّع Google Play تطبيقك الآن باستخدام مفتاحك الحالي عند نشره للمستخدمين. ومع ذلك، من أهم مزايا ميزة "توقيع التطبيق" من Play هو إمكانية فصل المفتاح الذي تستخدمه لتوقيع العنصر الذي تحمّله إلى Google Play عن المفتاح الذي يستخدمه Google Play لتوقيع تطبيقك من أجل توزيعه على المستخدمين. لذلك، ننصحك باتّباع الخطوات الواردة في القسم التالي لإنشاء مفتاح تحميل منفصل وتسجيله.
إنشاء شهادة تحميل وتسجيلها
عند نشر تطبيق لم يتم توقيعه باستخدام مفتاح تحميل، يوفّر Google Play Console خيار تسجيل مفتاح لتحميل التحديثات المستقبلية للتطبيق. على الرغم من أنّ هذه الخطوة اختيارية، ننصحك بنشر تطبيقك باستخدام مفتاح منفصل عن المفتاح الذي يستخدمه Google Play لتوزيع تطبيقك على المستخدمين. بهذه الطريقة، تحافظ Google على أمان مفتاح التوقيع، ويكون لديك خيار إعادة ضبط مفتاح تحميل خاص فقدته أو تعرّض للاختراق. يوضّح هذا القسم كيفية إنشاء مفتاح تحميل وإنشاء شهادة تحميل منه وتسجيل هذه الشهادة لدى Google Play لتحديثات تطبيقك القادمة.
في ما يلي الحالات التي يظهر فيها خيار تسجيل شهادة تحميل في Play Console:
- عند نشر تطبيق جديد تم توقيعه باستخدام مفتاح توقيع وتفعيل ميزة "توقيع التطبيق" من Play
- عندما تكون على وشك نشر تطبيق حالي تم تفعيل ميزة "توقيع التطبيق" من Play عليه، ولكن تم توقيعه باستخدام مفتاح توقيعه
إذا كنت لا تنشر تحديثًا لتطبيق حالي تم تفعيل ميزة "توقيع التطبيق" من Play عليه، وأردت تسجيل شهادة تحميل، أكمِل الخطوات أدناه وانتقِل إلى القسم الذي يتناول كيفية إعادة ضبط مفتاح تحميل خاص تم فقدانه أو اختراقه.
أنشئ مفتاح تحميل وملف تخزين مفاتيح إذا لم يسبق لك ذلك.
بعد إنشاء مفتاح التحميل وملف تخزين المفاتيح، عليك إنشاء ملف
شهادة علنية من مفتاح التحميل باستخدام
keytool
،
مع الأمر التالي:
$ keytool -export -rfc -keystore your-upload-keystore.jks -alias upload-alias -file output_upload_certificate.pem
بعد الحصول على شهادة التحميل، سجِّلها لدى Google عندما يُطلب منك ذلك في Play Console أو عند إعادة ضبط مفتاح التحميل.
ترقية مفتاح توقيع التطبيق
في بعض الحالات، قد تحتاج إلى تغيير مفتاح توقيع تطبيقك. على سبيل المثال، إذا أردت مفتاحًا أقوى من ناحية التشفير أو إذا تم اختراق مفتاح التوقيع. ومع ذلك، بما أنّ المستخدمين لا يمكنهم تحديث تطبيقك إلا إذا كان التحديث موقَّعًا باستخدام مفتاح التوقيع نفسه، من الصعب تغيير مفتاح التوقيع لتطبيق سبق نشره.
إذا نشرت تطبيقك على Google Play، يمكنك ترقية مفتاح توقيع تطبيقك المنشور من خلال Play Console. ويُستخدَم مفتاحك الجديد لتوقيع عمليات التثبيت وتحديثات التطبيق على الإصدار 13 من نظام التشغيل Android والإصدارات الأحدث، في حين يُستخدَم مفتاح توقيع التطبيق القديم لتوقيع التحديثات للمستخدمين الذين يستخدمون إصدارات Android الأقدم.
لمزيد من المعلومات، يُرجى الاطّلاع على مقالة ترقية مفتاح توقيع التطبيق.
إعادة ضبط مفتاح تحميل خاص فقدته أو تعرّض للاختراق
إذا فقدت مفتاح التحميل الخاص أو تعرَّض للاختراق، يمكنك إنشاء مفتاح جديد وطلب إعادة ضبط مفتاح التحميل في Play Console.
ضبط عملية الإنشاء لتوقيع تطبيقك تلقائيًا
في Android Studio، يمكنك ضبط مشروعك لتوقيع إصدار الإصدار من تطبيقك تلقائيًا أثناء عملية الإنشاء من خلال إنشاء إعدادات التوقيع وتخصيصها لنوع إصدار الإصدار. تتألف عملية ضبط ملف توقيع من موقع تخزين المفاتيح وكلمة مرور تخزين المفاتيح والاسم المعرِّف للمفتاح وكلمة مرور المفتاح. لإنشاء إعدادات توقيع وتخصيصها لنوع ملف برمجي الإصدار باستخدام "استوديو Android"، يُرجى إكمال الخطوات التالية:
- في نافذة المشروع، انقر بزر الماوس الأيمن على تطبيقك ثم انقر على فتح إعدادات الوحدة.
- في نافذة هيكل المشروع، ضِمن الوحدات في اللوحة اليمنى، انقر على الوحدة التي تريد توقيعها.
- انقر على علامة التبويب التوقيع، ثم انقر على إضافة
.
-
اختَر ملف تخزين المفاتيح، وأدخِل اسمًا لإعداد التوقيع هذا (لأنّه يمكنك إنشاء أكثر من إعداد واحد)، وأدخِل المعلومات المطلوبة.
الشكل 7 نافذة لإنشاء إعدادات توقيع جديدة
- انقر على علامة التبويب أنواع الإصدارات.
- انقر على إصدار الإصدار.
-
ضمن إعدادات التوقيع، اختَر إعدادات التوقيع التي أنشأتها للتو.
الشكل 8 اختَر إعداد توقيع في "استوديو Android" .
- انقر على موافق.
الآن، في كل مرة تُنشئ فيها نوع إصدار الإصدار من خلال اختيار أحد الخيارات ضمن إنشاء > إنشاء حِزم / حِزم APK في "استوديو Android"، سيوقّع IDE تطبيقك تلقائيًا باستخدام إعدادات التوقيع التي حدّدتها. يمكنك العثور على حِزمة APK أو حِزمة التطبيق الموقَّعتَين في دليل
build/outputs/
داخل دليل المشروع الخاص بالملف
البرمجي الذي تُنشئه.
عند إنشاء إعدادات توقيع، يتم تضمين معلومات التوقيع بتنسيق نص عادي في ملفات إنشاء Gradle. إذا كنت تعمل في فريق أو تشارك الرمز البرمجي علنًا، عليك الحفاظ على أمان معلومات التوقيع عن طريق إزالتها من ملفات الإنشاء وتخزينها بشكل منفصل. يمكنك الاطّلاع على مزيد من المعلومات حول كيفية إزالة معلومات التوقيع من ملفات الإنشاء في مقالة إزالة معلومات التوقيع من ملفات الإنشاء. لمزيد من المعلومات حول الحفاظ على أمان معلومات التوقيع، يُرجى الاطّلاع على مقالة الحفاظ على أمان مفتاحك أدناه.
توقيع كل نكهة من نكهات المنتج بشكل مختلف
إذا كان تطبيقك يستخدم نكهات المنتجات وأردت توقيع كل نكهة بشكل مختلف، يمكنك إنشاء إعدادات توقيع إضافية وتحديدها حسب النكهة:
- في نافذة المشروع، انقر بزر الماوس الأيمن على تطبيقك ثم انقر على فتح إعدادات الوحدة.
- في نافذة هيكل المشروع، ضِمن الوحدات في اللوحة اليمنى، انقر على الوحدة التي تريد توقيعها.
- انقر على علامة التبويب التوقيع، ثم انقر على إضافة
.
-
اختَر ملف تخزين المفاتيح، وأدخِل اسمًا لإعداد التوقيع هذا (لأنّه يمكنك إنشاء أكثر من إعداد واحد)، وأدخِل المعلومات المطلوبة.
الشكل 10 نافذة لإنشاء إعدادات توقيع جديدة
- كرِّر الخطوتَين 3 و4 حسب الضرورة إلى أن تُنشئ جميع إعدادات التوقيع.
- انقر على علامة التبويب النكهات.
- انقر على النكهة التي تريد ضبطها، ثم اختَر إعدادات التوقيع المناسبة
من القائمة المنسدلة إعدادات التوقيع.
الشكل 11 ضبط إعدادات التوقيع حسب نكهة المنتج
كرِّر الخطوات السابقة لضبط أيّ أنواع منتجات إضافية.
- انقر على موافق.
يمكنك أيضًا تحديد إعدادات التوقيع في ملفات إعدادات Gradle. لمزيد من المعلومات، يُرجى الاطّلاع على ضبط إعدادات التوقيع.
تنفيذ تقرير توقيع
للحصول على معلومات التوقيع لكل إصدار من إصدارات تطبيقك، يمكنك تشغيل مهمة Gradle
signingReport
في "استوديو Android":
- اختَر عرض > نوافذ الأدوات > Gradle لفتح نافذة أداة Gradle.
- اختَر تطبيقك > المهام > android > signingReport لتشغيل التقرير.
إدارة مفتاح التوقيع الخاص بك
إذا اخترت عدم تفعيل ميزة "توقيع التطبيق" من Play (للتطبيقات التي تم إنشاؤها قبل آب (أغسطس) 2021 فقط)، يمكنك إدارة مفتاح توقيع التطبيق وملف تخزين المفاتيح. يُرجى العِلم أنّ أنت المسؤول عن تأمين المفتاح وملف تخزين المفاتيح. بالإضافة إلى ذلك، لن يتمكّن تطبيقك من استخدام "مجموعات حزمات تطبيق Android" و"عرض الميزات في Play" و"عرض المواد في Play".
عندما تكون مستعدًا لإنشاء مفتاحك وملف تخزين المفاتيح، احرص أولاً على اختيار كلمة مرور قوية لملف تخزين المفاتيح وكلمة مرور قوية منفصلة لكل مفتاح خاص مخزّن في ملف تخزين المفاتيح. يجب الاحتفاظ بملف تخزين المفاتيح في مكان آمن ومحصَّن. إذا فقدت إمكانية الوصول إلى مفتاح توقيع التطبيق أو تم اختراقه، لا يمكن لشركة Google استرداد مفتاح توقيع التطبيق نيابةً عنك، ولن تتمكّن من طرح إصدارات جديدة من تطبيقك للمستخدمين كتعديلات على التطبيق الأصلي. لمزيد من المعلومات، يُرجى الاطّلاع على القسم الحفاظ على أمان مفتاحك أدناه.
إذا كنت تدير مفتاح توقيع التطبيق وملف تخزين المفاتيح، عند توقيع حزمة APK، ستوقّعها على الجهاز باستخدام مفتاح توقيع التطبيق وحمِّل حزمة APK الموقَّعة مباشرةً إلى "متجر Google Play" للتوزيع كما هو موضّح في الشكل 12.
الشكل 12 توقيع تطبيق عند إدارة مفتاح توقيع التطبيق الخاص بك
عند استخدام ميزة "توقيع التطبيق" من Play، تحافظ Google على أمان مفتاح التوقيع، وتحرص على توقيع تطبيقاتك بشكل صحيح وتتيح لها تلقّي التحديثات طوال فترة استخدامها. ومع ذلك، إذا قرّرت إدارة مفتاح توقيع التطبيق بنفسك، هناك بعض النقاط التي يجب مراعاتها.
اعتبارات التوقيع
يجب توقيع تطبيقك باستخدام الشهادة نفسها طوال مدّة استخدامه المتوقّعة. هناك عدة أسباب لإجراء ذلك:
- ترقية التطبيق: عندما يُثبِّت النظام تحديثًا لتطبيق، فإنه يقيس شهادات الإصدار الجديد بالشهادات في الإصدار الحالي. يسمح النظام بالتحديث إذا كانت الشهادات متطابقة. إذا وقّعت على الإصدار الجديد باستخدام شهادة مختلفة، يجب منح التطبيق اسم حزمة مختلفًا. وفي هذه الحالة، يُثبِّت المستخدم الإصدار الجديد كتطبيق جديد تمامًا.
- الوحدات في التطبيق: يسمح نظام Android بتشغيل حِزم APK الموقَّعة بالشهادة نفسها في العملية نفسها، إذا طلبت التطبيقات ذلك، حتى يتعامل النظام معها على أنّها تطبيق واحد. بهذه الطريقة، يمكنك نشر تطبيقك في وحدات، ويمكن للمستخدمين تحديث كل وحدة بشكل مستقل.
- مشاركة الرموز البرمجية أو البيانات من خلال الأذونات: يقدّم نظام التشغيل Android ميزة فرض الأذونات المستندة إلى التوقيع، حتى يتمكّن أحد التطبيقات من إتاحة وظائفه لتطبيق آخر تم توقيعه باستخدام شهادة محدّدة. من خلال توقيع حِزم APK متعددة باستخدام الشهادة نفسها واستخدام عمليات التحقّق من الأذونات المستندة إلى التوقيع، يمكن لتطبيقاتك مشاركة الرموز البرمجية والبيانات بطريقة آمنة.
إذا كنت تخطّط لإتاحة ترقية تطبيق، تأكَّد من أنّ مفتاح توقيع التطبيق لديه فترة صلاحية تتجاوز الفترة المتوقّعة لهذا التطبيق. وننصحك بفترة صلاحية تبلغ 25 عامًا أو أكثر. عند انتهاء صلاحية المفتاح، لن يتمكّن المستخدمون من الترقية بسلاسة إلى الإصدارات الجديدة من تطبيقك.
إذا كنت تخطّط لنشر تطبيقاتك على Google Play، يجب أن يكون للمفتاح الذي تستخدمه لتوقيع تطبيقك مدة صلاحية تنتهي بعد 22 تشرين الأول (أكتوبر) 2033. يفرض Google Play هذا الشرط لضمان تمكّن المستخدمين من ترقية التطبيقات بسلاسة عند توفّر إصدارات جديدة.
الحفاظ على أمان مفتاحك
إذا اخترت إدارة مفتاح توقيع التطبيق وملف تخزين المفاتيح بنفسك وحمايته (بدلاً من تفعيل ميزة "توقيع التطبيق" من Play)، يكون تأمين مفتاح توقيع التطبيق مهمًا للغاية بالنسبة إليك وللمستخدم. إذا سمحت لشخص ما باستخدام مفتاحك، أو إذا تركت ملف تخزين المفاتيح وكلمات المرور في مكان غير آمن بحيث يمكن لجهة خارجية عثور عليها واستخدامها، سيتم اختراق هوية الإنشاء والثقة التي يقدّمها المستخدم.
إذا تمكّنت جهة خارجية من الحصول على مفتاح توقيع تطبيقك بدون علمك أو إذنك، يمكن أن يوقع هذا الشخص التطبيقات التي تحل محل تطبيقاتك الأصلية أو تتلفها بشكل ضار ويوزع هذه التطبيقات. ويمكن لهذا الشخص أيضًا توقيع التطبيقات و توزيعها باسمك، إذا كانت هذه التطبيقات تهاجم تطبيقات أخرى أو النظام نفسه، أو تؤدي إلى تلف بيانات المستخدمين أو سرقتها.
يجب توفُّر مفتاحك الخاص لتوقيع جميع الإصدارات المستقبلية من تطبيقك. وفي حال فقدان مفتاحك أو وضعه في مكان غير معروف، لن تتمكّن من نشر تحديثات لتطبيقك الحالي. ولا يمكنك إعادة إنشاء مفتاح تم إنشاؤه في السابق.
تعتمد سمعتك بصفتك جهة مطوّر على تأمين مفتاح توقيع التطبيق بشكل سليم في جميع الأوقات إلى أن تنتهي صلاحيته. في ما يلي بعض النصائح للحفاظ على أمان مفتاحك:
- اختَر كلمات مرور قوية لكل من ملف تخزين المفاتيح والمفتاح.
- لا تُعطِ مفتاحك الخاص لأي شخص أو تعيره له، ولا تسمح للأشخاص غير المصرّح لهم بمعرفة ملف تخزين المفاتيح وكلمات مرور المفاتيح.
- احتفِظ بملف تخزين المفاتيح الذي يحتوي على مفتاحك الخاص في مكان آمن.
بشكل عام، إذا اتّبعت الاحتياطات المنطقية عند إنشاء المفتاح واستخدامه وحفظه، سيظل آمنًا.
إزالة معلومات التوقيع من ملفات الإنشاء
عند إنشاء إعدادات توقيع، يضيف Android Studio معلومات التوقيع
بتنسيق نص عادي إلى ملفات build.gradle
في الوحدة. إذا كان
لديك فريق عمل أو كنت تنشر الرمز البرمجي مفتوح المصدر، يجب نقل هذه
المعلومات الحساسة خارج ملفات الإنشاء لكي لا يتمكّن الآخرون من الوصول إليها بسهولة. لإجراء ذلك، عليك إنشاء ملف خصائص منفصل لتخزين
المعلومات الآمنة والإشارة إلى هذا الملف في ملفات التصميم على النحو التالي:
- أنشئ إعدادًا للتوقيع وحدِّده لنوع بناء واحد أو أكثر. تفترض هذه التعليمات أنّك أعددت إعدادًا واحدًا للتوقيع لنوع إصدار الإصدار، كما هو موضّح في مقالة ضبط عملية الإنشاء لتوقيع تطبيقك تلقائيًا أعلاه.
- أنشئ ملفًا باسم
keystore.properties
في الدليل الجذر لمشروعك. يجب أن يحتوي هذا الملف على معلومات التوقيع، على النحو التالي:storePassword=myStorePassword keyPassword=mykeyPassword keyAlias=myKeyAlias storeFile=myStoreFileLocation
- في ملف
build.gradle
الخاص بالوحدة، أضِف رمزًا لتحميل ملفkeystore.properties
قبل مجموعةandroid {}
.رائع
... // Create a variable called keystorePropertiesFile, and initialize it to your // keystore.properties file, in the rootProject folder. def keystorePropertiesFile = rootProject.file("keystore.properties") // Initialize a new Properties() object called keystoreProperties. def keystoreProperties = new Properties() // Load your keystore.properties file into the keystoreProperties object. keystoreProperties.load(new FileInputStream(keystorePropertiesFile)) android { ... }
Kotlin
... import java.util.Properties import java.io.FileInputStream // Create a variable called keystorePropertiesFile, and initialize it to your // keystore.properties file, in the rootProject folder. val keystorePropertiesFile = rootProject.file("keystore.properties") // Initialize a new Properties() object called keystoreProperties. val keystoreProperties = Properties() // Load your keystore.properties file into the keystoreProperties object. keystoreProperties.load(FileInputStream(keystorePropertiesFile)) android { ... }
ملاحظة: يمكنك اختيار تخزينملف
keystore.properties
في موقع آخر (على سبيل المثال، في مجلد الوحدة بدلاً من المجلد الجذر للمشروع، أو على خادم الإنشاء إذا كنت تستخدم أداة دمج مستمر). في هذه الحالة، عليك تعديل الرمز أعلاه لإعدادkeystorePropertiesFile
بشكل صحيح باستخدام الموقع الجغرافي الفعلي لملفkeystore.properties
. - يمكنك الإشارة إلى السمات المخزّنة في
keystoreProperties
باستخدام البنيةkeystoreProperties['propertyName']
. عدِّل القسمsigningConfigs
من ملفbuild.gradle
الخاص بالوحدة للإشارة إلى معلومات التوقيع المخزّنة فيملفkeystoreProperties
باستخدام هذه البنية.رائع
android { signingConfigs { config { keyAlias keystoreProperties['keyAlias'] keyPassword keystoreProperties['keyPassword'] storeFile file(keystoreProperties['storeFile']) storePassword keystoreProperties['storePassword'] } } ... }
Kotlin
android { signingConfigs { create("config") { keyAlias = keystoreProperties["keyAlias"] as String keyPassword = keystoreProperties["keyPassword"] as String storeFile = file(keystoreProperties["storeFile"] as String) storePassword = keystoreProperties["storePassword"] as String } } ... }
- افتح نافذة أداة نُسخ الإصدار وتأكَّد من اختيار نوع ملف برمجي للإصدار.
- اختَر أحد الخيارات ضمن الإصدار > إنشاء حِزم / حِزم APK لإنشاء
إما حِزمة APK أو حِزمة تطبيق لإصدارك.
من المفترض أن يظهر لك الناتج عن عملية الإنشاء في دليل
build/outputs/
الخاص بوحدتك.
بما أنّ ملفات الإنشاء لم تعُد تحتوي على معلومات حسّاسة، يمكنك الآن
تضمينها في أداة التحكّم في المصدر أو تحميلها إلى قاعدة بيانات مشترَكة. احرص
على الحفاظ على أمان ملف keystore.properties
. وقد يشمل ذلك
إزالته من نظام التحكّم في المصدر.