وقتی پسورد keystore اپلیکیشن رو فراموش کردیم !

استاندارد

یکی از بدترین اتفاقاتی که میتونه برای یک توسعه‌دهنده اندروید بیوفته ، فراموش کردن اطلاعات مربوط به sign اپلیکیشنه .
چرا ؟‌ چون بدون داشتن این اطلاعات باید فکر بروزرسانی کردن اپلیکیشنتون روی مارکت‌ها رو از سرتون بیرون کنید . منظور از بروزرسانی ، امکان نصب نسخه جدید به روی نسخه قدیمی بدون بوجود اومدن خطا در حین این کاره . یعنی کاربرتون به‌راحتی بدون نیاز به پاک کردن نسخه قدیمی نسخه جدید اپلیکیشنتون رو نصب کنه .
حالا چه اتفاقی میوفته اگه نسخه جدید اپلیکیشنمون رو با اطلاعاتی متفاوت از چیزی که نسخه‌‌های قبلی رو با اون sign کردیم sign کنیم ؟‌ تو این حالت اگه کاربرمون بخواد نسخه جدید رو نصب کنه به error زیر بر میخوره ( یا یه همچین چیزی ) .
photo_2016-06-21_11-07-06
در این حالت تنها کاری که کاربر میتونه برای نصب نسخه جدید انجام بده ، حذف نسخه قدیمی و بعد از اون نصب نسخه جدیده (که با این کار کاربرتون اطلاعات درون اپلیکشن رو از دست میده ).
خب حالا اگه این اتفاق بیوفته چیکار میتونیم بکنیم ؟
اول از همه اگه فایل keyStore تون رو گم کردین متاسفانه راهی براتون نمیمونه جز اینکه بیخیال بروزرسانی کردن نسخه قدیمی اپلیکیشنتون بدون حذف کردنش بشید .
ولی اگه فایل keyStore تون رو گم نکردید و فقط پسورد اون رو به خاطر نمیارید ، هنوز جای امیدواری هست .     به خواندن ادامه دهید

برسی signature اپلیکیشن‌های اندروید

استاندارد

همونطور که میدونید در انتهای کار توسعه اپلیکیشن‌های اندرویدی ، توسعه دهندگان اپلیکیشن‌ خروجی اپلیکیشن‌ (Apk) خودشون رو بصورت sign شده منتشر میکنند تا مدریت اپدیت‌ها و انشار اپدیت برای اپلیکیشنشون رو فقط و فقط خودشون بتونند انجام بدهند .

ولی خب این sign کردن باعث نمیشه دیگران نتونند کدی که توسعه دهنده اپلیکیشن‌ زده رو تغیر بدند، اما (یه امای بزرگ) واسه خروجی گرفتن از تغییرات انجام شده نیاز هست که دوباره اپلیکیشن sign بشه و با توجه به اینکه keystore که برای sign کردن توسط توسعه دهنده استفاده شده رو اصولا فقط خودش در اختیار داره و کسایی که این تغییرات رو اعمال کردند باید با یه keystore جدید sign کردن رو انجام بدند .

پس حالا نگرانی که پیش میاد چیه ؟ اینکه از کجا میتونیم بفهمیم اپلیکیشنی که دانلود کردیم اپلیکیشن‌ رسمی هست یا نه (توسط توسعه دهنده اصلی sign شده یا نه ) !

کاری که میتونیم بکنیم اینکه با keytool که ابزار جاوا برای مدیریت certificateها و keyها هست اطلاعات مربوط به certificate هر کدوم از apk ها بگیریم و برسی کنیم .

اینجا من apk اپلیکیشن تلگرام رو که از بازار گرفتم رو قراره با apk موجود تو گوگل پلی مقایسه کنم .

مرحله اول

دو تا apkای که قرار هست برسی کنیم رو توی یه فولدر میریزیم .

مرحله دوم

دستور زیر رو توی terminal اجرا کنید . این دستور اطلاعات مربوط به certificate هر apk ای که توی فولدرمون هست رو به ما نشون میده .

مرحله اخر

حالا تنها کاری که میمونه مقایسه اطلاعات بدست اومده با هم هست که باید یکی باشن .

چیزی که این مقایسه به ما نشون میده این هست که هر دوی این نسخه‌ها توسط توسعه دهنده اصلی sign شده و از این بابت مشکلی ندارن .

پینوشت : اگه پسورد فایل keyStore اپلیکیشنتون رو فراموش کردین ، حتما این پست رو بخونید ، شاید بتونه تو پیدا کردنش کمکتون کنه.