المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : شرح عمل مفتاح و توقيع للتطبيق APK Key / Sign - الكوردوفا و الفون جاب



Rise Company
27-07-2017, 22:38
توقيع التطبيق APK Sign باعطائه Certificate / keystore - الكوردوفا و الفون جاب
الكوردوفا و الفون جاب Phone Gap / Cordova

بعد الانتهاء من مرحلة تصميم و برمجة التطبيق , تبدا مرحلة توقيع و اعطاء مفتاح للتطبيق لكى يكون صالح للنشر

المرحلة الاولى يكون عملك على انتاج ملف android-debug.apk وبعدها يكون عملك على انتاج ملف android-release.apk

اللفرق كبير بينهم فالاول غير صالح للنشر و الاخير به مفتاح و توقيع و تم ازالة debug منه و بالتالى صالح للنشر

جوجل بلاى google play سترفض تطبيقك و سيظهر لك خطا ان تطبيق غير مناسب للنشر.


You uploaded an APK with an invalid signature (learn more about signing (http://developer.android.com/tools/publishing/app-signing.html)). Error from apksigner: ERROR: JAR_SIG_NO_SIGNATURES: No JAR signatures

ولكى ترفع تطبيقك بنجاح عناك خطوتين , الاول هو انشاء مفتاح و الثانى توقيعه على التطبيق.

1- انشاء مفتاح للتطبيق App Key Store

المفتاح هذا ليس له اى علاقة اطلاقا بالتطبيق , ففكرة عمله هو يشبه بطاقة هوية ID لمن هو صاحب التطبيق

هناك طرق كثيرة لانشاء مفتاح و افضلها ستكون من خلال استخدام برنامج key tool لتوليد مفتاح

هذا البرنامج موجود بشكل افتراضى داخل فولدر الجافا داخل Program Files

مثال:
C:\Program Files (x86)\Java\jdk1.8.0_131\bin

عند الوصول لهذا المسار لا تعمل شىء نهائيا نحن نريد معرف مسار bin فقط

حيث سنقوم باستدعاء برنامج keytool من خلال فتح cmd كادمن

ثم كتابة هذا الكود بداخله مع تعديل اللون الاحمر فقط


keytool -genkey -v -keystore c:\rise.keystore -alias rise -keyalg RSA -keysize 2048 -validity 10000

بالنسبة RSA هذا Security يحمى جهاز المستخدم من debug , اتركه كما هو

هام : يفضل تغيير المسمى فقط ولا تعدل المسار حتى لا يحدث خطا معك اثناء استدعائه للتوقيع

ثم بعد كتابة الكود سيطلب منك بعض البيانات

مثال:


Enter keystore password: pwd123
Re-enter new password: pwd123
What is your first and last name?
= John Smith
What is the name of your organizational unit?
[Unknown]= ABC
What is the name of your organization?
[Unknown]= XYZ
What is the name of your of your City or Locality?
[Unknown]= Redmond
What is the name of your State or Province?
[Unknown]= WA
What is the two-letter country code for this unit?
[Unknown]= US
Is CN=John Smith, OU=ABC, O=XYZ, L=Redmond, ST=WA, C=US correct??
[no]= y

هذه البيانات لا تظهر لاحد اطلاقا فقط هوية لجوجل

سيطلب منك انشاء باسورد : اكتب 4 حروف و ارقام "يفضل"
سيطلب منك الاسم : اكتب الاول و الاخر فى نفس السطر
سيطلب منك قسسم المؤسسة : اكتب الاسم
سيطلب منك المؤسسة : اكتب نفس الاسم
سيطلب الدولة و الحى و مز الدولة من حرفين
سيخبرك هل البيانات صحيحة اكتب : yes
سيخبرك ان هناك باسورد اخر : اضغط enter ليكون نفس السابق

سينتج لك مفتاح على هذا المسار : c:\ بنفس الاسم المحدد مسبقا

[U]2- انشاء توقيع للتطبيق App Key Sign

بعد انشاء مفتاح اتركه على نفس المسار و لا تغير و لا تنسى البيانات التى ادخلتها فسنقوم بتوقيعها الان

والتى يجب ان تكون نسخة طبق الاصل من المفتاح والا سيظهر لك اخطاء و سببها عدم التطابق

سنقوم الان بانشاء ملف build.json ووضعه داخل فولد www

https://www.rise.company/forum/images/imported/2017/07/95.png

هذا الملف هو ابن للجافا اى وريث لها و سيطبق الاوامر بداخله

ضع فى هذا الملف :


{
"android": {
"release": {
"keystore":"c:\\rise.keystore",
"storePassword":"rise1234",
"alias":"rise",
"password":"rise1234",
"keystoreType":""
}
}
}

انتبه و هام جدا : فى السطر الاخير الذى به "keystoreType":""
يجب ان يكون فاضى لا تدخل به كلمة السر او اى شىء و خلاف ذلك سيظهر خطا و لن يعمل التوقيع

اذهب الان الى cmd داخل مسار التطبيق و نفذ امر بناء تطبيق


Cordova builds android --release

هذا الكود يفرق تماما عن الذى كنا نبنى به من قبل وهو debug و الذى لا يسمح اكواده للنشر

اذا كان هناك خطا هتحصل على ملف android-release-unsigned.apk

اذا تم التوقيع بنجاح هتحصل على ملف android-release.apk

https://www.rise.company/forum/images/imported/2017/07/96.png

وكلاهم على نفس المسار المعتاد

C:\riseapp\risecordova\app1\platforms\android\buil d\outputs\apk
صار الان الملف جاهز و سيتم قبوله عند رفع الملف على جوجل بلاى

المرجع :

https://developer.android.com/studio/publish/app-signing.html
https://stackoverflow.com/questions/26449512/how-to-create-a-signed-apk-file-using-cordova-command-line-interface
https://taco.visualstudio.com/en-us/docs/tutorial-package-publish-readme/
https://developer.android.com/studio/run/device.html