توقيع التطبيق

يتطلب Android توقيع جميع حِزم APK رقميًا باستخدام شهادة قبل تثبيتها على جهاز أو تحديثها. عند إطلاق التطبيق باستخدام حِزم Android App Bundle، عليك توقيع حِزمة التطبيق باستخدام مفتاح تحميل قبل تحميله إلى Play Console، وستتولى ميزة "توقيع التطبيق" من Play الاهتمام بالباقي. بالنسبة إلى التطبيقات التي يتم توزيعها باستخدام حِزم APK في "متجر Play" أو في متاجر أخرى، عليك توقيع حِزم APK يدويًا لتحميلها.

ترشدك هذه الصفحة إلى بعض المفاهيم المهمة المتعلقة بتوقيع التطبيق والأمان، وكيفية توقيع تطبيقك لإصداره في Google Play باستخدام "استوديو Android" وكيفية ضبط ميزة "توقيع التطبيق" من Play.

في ما يلي نظرة عامة عالية المستوى على الخطوات التي قد تحتاج إلى اتخاذها لتوقيع تطبيق جديد ونشره على Google Play:

  1. إنشاء مفتاح تحميل وملف تخزين
  2. توقيع تطبيقك باستخدام مفتاح التحميل
  3. إعداد ميزة "توقيع التطبيق" من Play
  4. تحميل تطبيقك إلى Google Play
  5. إعداد إصدار تطبيقك وطرحه

بدلاً من ذلك، إذا سبق أن تمّ نشر تطبيقك في "متجر Google Play" باستخدام مفتاح توقيع تطبيق حالي، أو إذا كنت تريد اختيار مفتاح توقيع التطبيق لتطبيق جديد بدلاً من أن تطلب من Google إنشاءه، عليك اتّباع الخطوات التالية:

  1. وقّع تطبيقك باستخدام مفتاح التوقيع لتطبيقك.
  2. حمِّل مفتاح توقيع تطبيقك إلى ميزة "توقيع التطبيق" من Play.
  3. (موصى به) إنشاء شهادة تحميل وتسجيلها للتحديثات المستقبلية لتطبيقك
  4. تحميل تطبيقك إلى Google Play
  5. إعداد إصدار تطبيقك وطرحه

تستكشف هذه الصفحة أيضًا كيفية إدارة مفاتيحك الخاصة عند تحميل تطبيقك إلى متاجر التطبيقات الأخرى. إذا كنت لا تستخدم استوديو Android أو تفضّل توقيع تطبيقك من سطر الأوامر، يمكنك التعرّف على كيفية استخدام apksigner.

ميزة "توقيع التطبيق" من Play

باستخدام ميزة "توقيع التطبيق" من Play، تدير Google مفتاح توقيع تطبيقك وتحميه من أجلك وتستخدمه لتوقيع حِزم APK لتوزيعها. ولأنّ حِزم التطبيقات يمكنها تأجيل إنشاء حِزم APK وتوقيعها على "متجر Google Play"، عليك ضبط ميزة "توقيع التطبيق" من Play قبل تحميل حِزمة التطبيق. يتيح لك ذلك الاستفادة مما يلي:

  • يجب استخدام "مجموعة حزمات تطبيق Android" وتوفير أوضاع العرض المتقدّمة في Google Play. تجعل "مجموعة حزمات تطبيق Android" تطبيقك أصغر بكثير وتسهّل إصداراتك، كما تتيح استخدام وحدات الميزات وتقديم تجارب فورية.
  • يمكنك تعزيز أمان مفتاح التوقيع والسماح باستخدام مفتاح تحميل منفصل لتوقيع حِزمة التطبيق التي تحمّلها إلى Google Play.
  • تتيح لك ترقية المفتاح تغيير مفتاح توقيع التطبيق في حال اختراق المفتاح الحالي أو إذا احتجت إلى الانتقال إلى مفتاح أقوى من ناحية التشفير

تستخدم ميزة "توقيع التطبيق" من Play مفتاحَين: مفتاح توقيع التطبيق ومفتاح التحميل، اللذين تم وصفهما بالتفصيل في القسم الذي يتناول المفاتيح وملفات تخزين المفاتيح. احتفظ بمفتاح التحميل وتستخدمه لتوقيع تطبيقك لتحميله إلى متجر Google Play. تستخدم Google شهادة التحميل لإثبات هويتك، وتوقّع ملفات APK باستخدام مفتاح توقيع التطبيق للتوزيع كما هو موضّح في الشكل 1. باستخدام مفتاح تحميل منفصل، يمكنك طلب إعادة ضبط مفتاح التحميل في حال فقدان المفتاح أو اختراقه.

بالمقارنة، بالنسبة إلى التطبيقات التي لم تفعّل ميزة "توقيع التطبيق" من Play، إذا فقدت مفتاح توقيع التطبيق، ستفقد إمكانية تحديث التطبيق.

الشكل 1. توقيع تطبيق باستخدام ميزة "توقيع التطبيق" من Play

ويتم تخزين المفاتيح على البنية الأساسية نفسها التي تستخدمها Google لتخزين مفاتيحها الخاصة، حيث تتم حمايتها من خلال "خدمة إدارة المفاتيح" من Google. يمكنك التعرّف على مزيد من المعلومات حول البنية الأساسية التقنية من Google من خلال قراءة التقارير الموجزة حول أمان Google Cloud.

في حال استخدام ميزة "توقيع التطبيق" من 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 تلقائيًا على تطبيقك باستخدام شهادة تصحيح الأخطاء التي يتم إنشاؤها بواسطة أدوات حزمة تطوير البرامج (SDK) لنظام التشغيل Android. عند تشغيل مشروعك أو تصحيح الأخطاء فيه للمرة الأولى في "استوديو Android"، ينشئ بيئة التطوير المتكاملة (IDE) تلقائيًا ملف تخزين مفاتيح تصحيح الأخطاء والشهادة في $HOME/.android/debug.keystore ويضبط ملف تخزين المفاتيح وكلمات المرور الرئيسية.

ولأنّ شهادة تصحيح الأخطاء يتم إنشاؤها باستخدام أدوات الإصدار ولأنّها غير آمنة بسبب التصميم، لا تقبل معظم متاجر التطبيقات (بما في ذلك "متجر Google Play") التطبيقات الموقَّعة بشهادة تصحيح أخطاء للنشر.

يخزِّن Android Studio معلومات توقيع تصحيح الأخطاء تلقائيًا في إعداد توقيع حتى لا تضطر إلى إدخالها في كل مرة تصحح الأخطاء فيها. تهيئة توقيع هي كائن يتكون من جميع المعلومات اللازمة لتوقيع تطبيقك، بما في ذلك موقع ملف تخزين المفاتيح، وكلمة مرور ملف تخزين المفاتيح، واسم المفتاح، وكلمة المرور الرئيسية.

لمزيد من المعلومات حول كيفية إنشاء تطبيقات وتشغيلها لتصحيح الأخطاء، يُرجى الاطّلاع على إنشاء تطبيقك وتشغيله.

انتهاء صلاحية شهادة تصحيح الأخطاء

تنتهي صلاحية الشهادة الموقَّعة ذاتيًا المُستخدَمة لتوقيع تطبيقك لتصحيح الأخطاء خلال 30 عامًا من تاريخ إنشائه. عند انتهاء صلاحية الشهادة، تحصل على خطأ في الإصدار.

لحل هذه المشكلة، ما عليك سوى حذف ملف debug.keystore المخزن في أحد المواقع التالية:

  • ~/.android/ على نظامي التشغيل OS X وLinux
  • C:\Documents and Settings\user\.android\ على نظام التشغيل Windows XP
  • C:\Users\user\.android\ على أنظمة التشغيل Windows Vista وWindows 7 و8 وWindows 10

في المرة القادمة التي تنشئ فيها وتشغِّل إصدار تصحيح أخطاء من تطبيقك، يعيد استوديو Android إنشاء ملف تخزين مفاتيح جديد ومفتاح تصحيح الأخطاء.

توقيع تطبيقك لإصداره في Google Play

عندما تكون مستعدًا لنشر التطبيق، ستحتاج إلى توقيعه وتحميله إلى أحد متاجر التطبيقات، مثل Google Play. عند نشر تطبيقك على Google Play للمرة الأولى، يجب أيضًا ضبط ميزة "توقيع التطبيق" من Play. إنّ ميزة "توقيع التطبيق" من Play اختيارية للتطبيقات التي تم إنشاؤها قبل آب (أغسطس) 2021. يوضِّح لك هذا القسم كيفية توقيع تطبيقك لإصداره وإعداد ميزة "توقيع التطبيق" من Play بشكل صحيح.

إنشاء مفتاح تحميل وملف تخزين

إذا لم يكن لديك مفتاح تحميل، وهو مفيد عند إعداد ميزة "توقيع التطبيق" من Play، يمكنك إنشاء مفتاح باستخدام "استوديو Android" على النحو التالي:

  1. في شريط القوائم، انقر على إنشاء > إنشاء حزمة موقَّعة/APK.
  2. في مربّع الحوار إنشاء حِزمة موقَّعة أو حزمة APK، اختَر مجموعة حزمات تطبيق Android أو APK ثم انقر على التالي.
  3. أسفل حقل مسار متجر المفاتيح، انقر على إنشاء عنصر جديد.
  4. في نافذة متجر مفاتيح جديد، قدِّم المعلومات التالية عن ملف تخزين المفاتيح والمفتاح، كما هو موضَّح في الشكل 2.

    الشكل 2. أنشِئ مفتاح تحميل وملف تخزين جديدَين في "استوديو Android".

  5. ملف تخزين المفاتيح

    • مسار ملف تخزين المفاتيح: اختَر الموقع الذي يجب إنشاء ملف تخزين المفاتيح فيه. ويجب أيضًا إضافة اسم ملف إلى نهاية مسار الموقع الجغرافي بالامتداد .jks.
    • كلمة المرور: يمكنك إنشاء كلمة مرور آمنة لملف تخزين المفاتيح وتأكيدها.
  6. المفتاح

    • الاسم المستعار: أدخِل اسمًا تعريفيًا لمفتاحك.
    • كلمة المرور: يمكنك إنشاء كلمة مرور آمنة للمفتاح وتأكيدها. يجب أن تكون هذه كلمة المرور نفسها مثل كلمة مرور ملف تخزين المفاتيح. (يُرجى الرجوع إلى المشكلة المعروفة للاطّلاع على مزيد من المعلومات)
    • الصلاحية (بالسنوات): اضبط المدة الزمنية بالسنوات التي يكون فيها مفتاحك صالحًا. يجب أن يكون مفتاحك صالحًا لمدة 25 عامًا على الأقل، لكي تتمكن من توقيع تحديثات التطبيق باستخدام المفتاح نفسه طوال فترة بقاء تطبيقك.
    • الشهادة: أدخل بعض المعلومات عن نفسك للحصول على شهادتك. وهذه المعلومات ليست معروضة في تطبيقك ولكن يتم تضمينها في شهادتك كجزء من APK.
  7. بعد إكمال النموذج، انقر على حسنًا.

  8. إذا أردت إنشاء تطبيقك وتوقيعه باستخدام مفتاح التحميل، انتقِل إلى القسم الذي يتناول كيفية توقيع تطبيقك باستخدام مفتاح التحميل. إذا أردت فقط إنشاء المفتاح وملف تخزين المفاتيح، انقر على إلغاء.

توقيع تطبيقك باستخدام المفتاح

إذا كان لديك مفتاح تحميل، استخدِمه لتوقيع تطبيقك. أما إذا سبق أن تم توقيع تطبيقك ونشره في "متجر Google Play" باستخدام مفتاح توقيع تطبيق حالي، يمكنك استخدامه لتوقيع تطبيقك. يمكنك لاحقًا إنشاء مفتاح تحميل منفصل وتسجيله من خلال Google Play لتسجيل تحديثات لاحقة على تطبيقك وتحميلها.

لتوقيع تطبيقك باستخدام "استوديو Android"، يُرجى اتّباع الخطوات التالية:

  1. إذا لم يكن لديك حاليًا مربع الحوار إنشاء حزمة موقَّعة أو حزمة APK انقر على إنشاء > إنشاء حزمة موقَّعة/APK.
  2. في مربّع الحوار إنشاء حزمة موقَّعة أو حزمة APK، اختَر إما حزمة تطبيق Android أو APK ثم انقر على التالي.
  3. اختَر وحدة من القائمة المنسدلة.
  4. حدِّد المسار إلى ملف تخزين المفاتيح والاسم المستعار لمفتاحك وأدخِل كلمات المرور لكليهما. إذا لم تكن قد أعددت ملف تخزين المفاتيح والمفتاح للتحميل بعد، فعليك أولاً إنشاء مفتاح تحميل وملف تخزين ثم الرجوع لإكمال هذه الخطوة.

    الشكل 3. وقِّع تطبيقك باستخدام مفتاح التحميل.

  5. انقر على التالي.

  6. في النافذة التالية (كما هو موضح في الشكل 4)، حدد مجلد وجهة للتطبيق الموقَّع، وحدد نوع الإصدار، واختر نكهات المنتج إن أمكن.

  7. إذا كنت بصدد إنشاء ملف APK وتوقيعه، عليك اختيار إصدارات التوقيع المطلوب أن يتوافق معها تطبيقك. لمعرفة المزيد من المعلومات، يمكنك الاطّلاع على مخططات توقيع التطبيق

  8. انقر على إنشاء.

الشكل 5. انقر على الرابط في النافذة المنبثقة لتحليل حِزمة تطبيقك أو تحديد موقعها.

بعد انتهاء "استوديو Android" من إنشاء تطبيقك المُوقَّع، يمكنك إما تحديد موقع تطبيقك أو تحليله من خلال النقر على الخيار المناسب في الإشعار المنبثق كما هو موضح في الشكل 5.

أصبحت جاهزًا الآن لتفعيل ميزة "توقيع التطبيق" في تطبيقك وتحميل تطبيقك من أجل إصداره. إذا كنت لا تزال مبتدئًا في عملية نشر التطبيق، ننصحك بقراءة مقالة نظرة عامة حول إطلاق التطبيق. بخلاف ذلك، انتقِل إلى الصفحة حول كيفية تحميل تطبيقك على Play Console.

استخدام ميزة "توقيع التطبيق" من Play

كما هو موضّح سابقًا في هذه الصفحة، يجب ضبط ميزة "توقيع التطبيق" من Play لتوقيع تطبيقك للتوزيع من خلال Google Play (باستثناء التطبيقات التي تم إنشاؤها قبل آب (أغسطس) 2021، والتي قد تستمر في توزيع حِزم APK الموقَّعة ذاتيًا). تعتمد الخطوات المطلوب اتّخاذها على ما إذا لم يتم نشر تطبيقك على Google Play بعد، أو ما إذا كان قد تم توقيع تطبيقك وتم نشره قبل آب (أغسطس) 2021 باستخدام مفتاح توقيع تطبيق حالي.

ضبط تطبيق جديد

لإعداد التوقيع لتطبيق لم يتم نشره بعد على Google Play، نفذ ما يلي:

  1. عليك إنشاء مفتاح تحميل وتوقيع تطبيقك باستخدام مفتاح التحميل هذا إذا لم يسبق لك إجراء ذلك.
  2. سجِّل الدخول إلى Play Console.
  3. اتّبِع خطوات إعداد إصدارك وطرحه لإنشاء إصدار جديد.
  4. بعد اختيار قناة إصدار، يمكنك ضبط عملية توقيع التطبيق ضمن قسم توقيع التطبيق على النحو التالي:
    • لجعل Google Play ينشئ مفتاح توقيع التطبيق لك ويستخدمه لتوقيع تطبيقك، لن تحتاج إلى اتخاذ أي إجراء. المفتاح الذي تستخدمه لتوقيع الإصدار الأول يصبح مفتاح التحميل، ويجب استخدامه لتوقيع الإصدارات المستقبلية.
    • لاستخدام المفتاح نفسه كتطبيق آخر في حساب المطوّر، اختَر تغيير مفتاح توقيع التطبيق > استخدام المفتاح نفسه كتطبيق آخر في هذا الحساب، واختَر تطبيقًا، ثم انقر على متابعة.
    • لتوفير مفتاح توقيعك الخاص لكي تستخدمه Google عند توقيع تطبيقك، اختَر تغيير مفتاح توقيع التطبيق وحدِّد أحد خيارات التصدير والتحميل التي تتيح لك تحميل المفتاح الخاص وشهادته العامة بشكل آمن.

في القسم الذي يحمل اسم حِزم التطبيقات، انقر على تصفّح الملفات لتحديد موقع التطبيق الذي سجّلت الدخول إليه وتحميله باستخدام مفتاح التحميل. للحصول على مزيد من المعلومات حول إصدار تطبيقك، يمكنك الرجوع إلى إعداد إصدارك وطرحه. عند إصدار تطبيقك بعد ضبط ميزة "توقيع التطبيق" من Play، ينشئ Google Play (ما لم تُحمِّل مفتاحًا حاليًا) ويدير مفتاح توقيع التطبيق نيابةً عنك. ما عليك سوى توقيع التحديثات اللاحقة لتطبيقك باستخدام مفتاح تحميل التطبيق قبل تحميله إلى Google Play.

إذا أردت إنشاء مفتاح تحميل جديد لتطبيقك، يُرجى الانتقال إلى القسم حول كيفية إعادة ضبط مفتاح تحميل خاص مفقود أو مخترَق.

تفعيل تطبيق حالي

إذا كنت تحدِّث تطبيقًا سبق أن تم نشره على Google Play باستخدام مفتاح توقيع تطبيق حالي، يمكنك تفعيل ميزة "توقيع التطبيق" من Play كما يلي:

  1. سجِّل الدخول إلى Play Console وانتقِل إلى تطبيقك.
  2. في القائمة اليمنى، انقر على الإصدار > الإعداد > توقيع التطبيق.
  3. راجِع بنود الخدمة، إن أمكن، وانقر على قبول.
  4. حدِّد أحد الخيارات التي تصف على نحو أفضل مفتاح التوقيع الذي تريد تحميله إلى Google Play واتّبِع التعليمات الظاهرة. على سبيل المثال، إذا كنت تستخدم ملف تخزين مفاتيح Java لمفتاح التوقيع، اختَر تحميل مفتاح توقيع تطبيق جديد من Java Keystore واتّبِع التعليمات لتنزيل أداة PEPK وتشغيلها، وتحميل الملف الذي تم إنشاؤه باستخدام مفتاحك المشفّر.
  5. انقر على تسجيل.

من المفترض أن تظهر لك الآن صفحة تحتوي على تفاصيل شهادات توقيع التطبيق وتحميله. الآن يمكن لـ Google Play توقيع تطبيقك باستخدام المفتاح الحالي عند نشره للمستخدمين. وتتمثّل إحدى أهم مزايا ميزة "توقيع التطبيق" من Play في إمكانية فصل المفتاح الذي تستخدمه لتوقيع الأداة التي تُحمِّلها إلى Google Play عن المفتاح الذي يستخدمه Google Play لتوقيع تطبيقك لتوزيعه على المستخدمين. لذلك ننصحك باتّباع الخطوات الواردة في القسم التالي لإنشاء مفتاح تحميل منفصل وتسجيله.

إنشاء شهادة تحميل وتسجيلها

عند نشر تطبيق لم يتم توقيعه باستخدام مفتاح تحميل، توفّر أداة Google Play Console خيار تسجيل أحد التطبيقات لتحديثات التطبيق المستقبلية. وعلى الرغم من أنّ هذه خطوة اختيارية، إلا أنّنا ننصحك بنشر تطبيقك باستخدام مفتاح منفصل عن مفتاح Google Play الذي يستخدمه 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. يُستخدم المفتاح الجديد لتوقيع عمليات التثبيت وتحديثات التطبيق في نظام التشغيل Android 13 والإصدارات الأحدث، في حين يُستخدَم مفتاح توقيع التطبيق القديم لتوقيع التحديثات لمستخدمي الإصدارات السابقة من Android.

لمزيد من المعلومات، اطّلِع على مقالة ترقية مفتاح توقيع التطبيق.

إعادة ضبط مفتاح تحميل خاص مفقود أو معرّض للاختراق

إذا فقدت مفتاح التحميل الخاص أو تعرَّض مفتاحك الخاص للاختراق، يمكنك إنشاء مفتاح جديد وطلب إعادة ضبط مفتاح التحميل في Play Console.

ضبط عملية الإصدار لتوقيع تطبيقك تلقائيًا

في "استوديو Android"، يمكنك إعداد مشروعك لتوقيع إصدار الإصدار من تطبيقك تلقائيًا أثناء عملية الإنشاء من خلال إنشاء إعداد توقيع وتخصيصه لنوع الإصدار الخاص بك. تتألف تهيئة التوقيع من موقع ملف تخزين المفاتيح وكلمة مرور ملف تخزين المفاتيح والعنوان البديل للمفتاح وكلمة المرور للمفتاح. لإنشاء إعدادات توقيع وتخصيصها لنوع إصدار الإصدار باستخدام "استوديو Android"، يجب إكمال الخطوات التالية:

  1. في نافذة المشروع، انقر بزر الماوس الأيمن على التطبيق وانقر على فتح إعدادات الوحدة.
  2. في نافذة بنية المشروع، ضمن الوحدات في اللوحة اليمنى، انقر على الوحدة التي تريد توقيعها.
  3. انقر على علامة التبويب التوقيع، ثمّ انقر على إضافة .
  4. اختَر ملف ملف تخزين المفاتيح، وأدخِل اسمًا لإعدادات التوقيع هذه (حيث يمكنك إنشاء أكثر من ملف)، وأدخِل المعلومات المطلوبة.

    الشكل 7. النافذة لإنشاء إعدادات توقيع جديدة.

  5. انقر على علامة التبويب أنواع الإصدارات.
  6. انقر على إصدار الإصدار.
  7. ضمن توقيع الإعداد، اختَر إعدادات التوقيع التي أنشأتها للتو.

    الشكل 8. اختَر إعدادات التوقيع في "استوديو Android".

  8. انقر على حسنًا.

وفي كل مرة تنشئ فيها نوع إصدار من خلال تحديد خيار ضمن الإصدار > إنشاء حِزم / حِزم APK في "استوديو Android"، سيوقّع IDE تطبيقك تلقائيًا باستخدام إعدادات التوقيع التي حددتها. يمكنك العثور على حِزمة APK أو حِزمة التطبيق الموقَّعة في دليل build/outputs/ ضمن دليل المشروع للوحدة التي تصمّمها.

عند إنشاء إعدادات التوقيع، يتم تضمين معلومات التوقيع في نص عادي ضمن ملفات إصدار Gradle. إذا كنت تعمل في فريق أو تشارك رمزك بشكل علني، عليك الحفاظ على أمان معلومات التوقيع عن طريق إزالتها من ملفات الإصدار وتخزينها بشكل منفصل. يمكنك الاطّلاع على مزيد من المعلومات حول طريقة إزالة معلومات التوقيع من ملفات الإصدار بالانتقال إلى إزالة معلومات توقيع المستند من ملفات الإصدار. لمزيد من المعلومات حول الحفاظ على أمان معلومات التوقيع، يُرجى الاطّلاع على القسم الحفاظ على أمان المفتاح أدناه.

توقيع كل نكهة منتج بشكل مختلف

إذا كان تطبيقك يستخدم نكهات المنتجات وأردت توقيع كل نكهة بشكلٍ مختلف، يمكنك إنشاء إعدادات توقيع إضافية وتخصيصها حسب النكهة:

  1. في نافذة المشروع، انقر بزر الماوس الأيمن على التطبيق وانقر على فتح إعدادات الوحدة.
  2. في نافذة بنية المشروع، ضمن الوحدات في اللوحة اليمنى، انقر على الوحدة التي تريد توقيعها.
  3. انقر على علامة التبويب التوقيع، ثمّ انقر على إضافة .
  4. اختَر ملف ملف تخزين المفاتيح، وأدخِل اسمًا لإعدادات التوقيع هذه (حيث يمكنك إنشاء أكثر من ملف)، وأدخِل المعلومات المطلوبة.

    الشكل 10. النافذة لإنشاء إعدادات توقيع جديدة.

  5. كرِّر الخطوتين 3 و4 حسب الضرورة إلى أن تنتهي من إنشاء جميع إعدادات التوقيع.
  6. انقر على علامة التبويب النكهات.
  7. انقر على الصيغة التي تريد ضبطها، ثم اختَر إعدادات التوقيع المناسبة من القائمة المنسدلة إعدادات تسجيل الدخول.

    الشكل 11. ضبط إعدادات التوقيع حسب نكهة المنتج.

    كرِّر هذه الخطوة لضبط أي نكهات إضافية للمنتج.

  8. انقر على حسنًا.

ويمكنك أيضًا تحديد إعدادات التوقيع في ملفات إعداد Gradle. لمزيد من المعلومات، يُرجى الاطّلاع على ضبط إعدادات التوقيع.

تنفيذ تقرير التوقيع

للحصول على معلومات التوقيع لكل صيغة من صيغ تطبيقك، يمكنك تشغيل مهمة Gradle signingReport في "استوديو Android":

  1. اختَر عرض > أداة Windows > Gradle لفتح نافذة أداة Gradle.
  2. اختَر تطبيقك > "مهام Google" > android > تقرير التوقيع لتشغيل التقرير.

إدارة مفتاح التوقيع الخاص بك

إذا اخترت عدم الموافقة على ميزة "توقيع التطبيق" من 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" معلومات التوقيع بنص عادي إلى ملفات build.gradle في الوحدة. إذا كنت تعمل مع فريق أو توفّر رمز برمجي مفتوح المصدر، يجب نقل هذه المعلومات الحساسة من ملفات الإصدار حتى لا يتمكّن الآخرون من الوصول إليها بسهولة. لإجراء ذلك، عليك إنشاء ملف سمات منفصل لتخزين معلومات آمنة والرجوع إلى هذا الملف في ملفات الإصدار على النحو التالي:

  1. يمكنك إنشاء إعدادات توقيع وتخصيصها لنوع إصدار واحد أو أكثر. تفترض هذه التعليمات أنّك ضبطت إعدادات توقيع موحّد لنوع إصدار تطبيقك، كما هو موضّح في القسم ضبط عملية الإصدار لتوقيع تطبيقك تلقائيًا أعلاه.
  2. أنشِئ ملفًا باسم keystore.properties في الدليل الجذري لمشروعك. يجب أن يحتوي هذا الملف على معلومات التوقيع الخاصة بك، على النحو التالي:
    storePassword=myStorePassword
    keyPassword=mykeyPassword
    keyAlias=myKeyAlias
    storeFile=myStoreFileLocation
    
  3. في ملف 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.

  4. يمكنك الرجوع إلى السمات المخزّنة في 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
            }
        }
        ...
      }
  5. افتح نافذة أداة إنشاء الصيغ وتأكَّد من اختيار نوع إصدار الإصدار.
  6. حدِّد خيارًا ضمن الإصدار > إنشاء حِزم / حِزم APK لإنشاء حِزمة APK أو حِزمة تطبيق من إصدار إصدارك. من المفترض أن يظهر لك ناتج الإصدار في دليل build/outputs/ الخاص بالوحدة.

بما أنّ ملفات الإصدار لم تعُد تحتوي على معلومات حساسة، يمكنك الآن تضمينها في التحكّم في المصدر أو تحميلها إلى قاعدة رموز مشتركة. احرص على الحفاظ على أمان ملف keystore.properties. وقد يتضمّن ذلك إزالته من نظام التحكّم في المصدر.