Android نیاز دارد که همه فایلهای APK قبل از نصب بر روی دستگاه یا بهروزرسانی، با گواهی امضا شوند. هنگام انتشار با استفاده از Android App Bundles ، باید قبل از آپلود کردن آن در Play Console، بسته برنامه خود را با یک کلید آپلود امضا کنید، و Play App Signing بقیه موارد را انجام می دهد. برای برنامههایی که با استفاده از فایلهای APK در فروشگاه Play یا فروشگاههای دیگر توزیع میشوند، باید بهطور دستی فایلهای APK خود را برای آپلود امضا کنید.
این صفحه شما را از طریق برخی از مفاهیم مهم مربوط به امضای برنامه و امنیت، نحوه امضای برنامه خود برای انتشار در Google Play با استفاده از Android Studio و نحوه پیکربندی Play App Signing راهنمایی می کند.
در زیر یک نمای کلی از مراحلی است که ممکن است برای امضا و انتشار یک برنامه جدید در Google Play انجام دهید:
- یک کلید آپلود و فروشگاه کلید ایجاد کنید
- برنامه خود را با کلید آپلود خود امضا کنید
- پیکربندی Play App Signing
- برنامه خود را در گوگل پلی آپلود کنید
- انتشار برنامه خود را آماده و عرضه کنید
اگر برنامه شما قبلاً با یک کلید امضای برنامه موجود در فروشگاه Google Play منتشر شده است، یا میخواهید به جای اینکه Google آن را تولید کند، کلید امضای برنامه را برای یک برنامه جدید انتخاب کنید، این مراحل را دنبال کنید:
- برنامه خود را با کلید امضای برنامه خود امضا کنید.
- کلید امضای برنامه خود را در Play App Signing آپلود کنید .
- (توصیه می شود) یک گواهی آپلود برای به روز رسانی های بعدی برنامه خود ایجاد و ثبت کنید
- برنامه خود را در Google Play آپلود کنید
- انتشار برنامه خود را آماده و عرضه کنید
این صفحه همچنین نحوه مدیریت کلیدهای خود را برای بارگذاری برنامه خود در فروشگاه های برنامه دیگر بررسی می کند. اگر از Android Studio استفاده نمی کنید یا ترجیح می دهید برنامه خود را از خط فرمان امضا کنید، با نحوه استفاده از apksigner
آشنا شوید.
Play App Signing
با Play App Signing، Google کلید امضای برنامه شما را مدیریت و محافظت میکند و از آن برای امضای فایلهای APK شما برای توزیع استفاده میکند. و چون بستههای برنامه ساخت و امضای فایلهای APK را در فروشگاه Google Play به تعویق میاندازند، باید قبل از آپلود بسته برنامه خود، Play App Signing را پیکربندی کنید. انجام این کار به شما امکان می دهد از مزایای زیر بهره مند شوید:
- از Android App Bundle استفاده کنید و از حالتهای تحویل پیشرفته Google Play پشتیبانی کنید. Android App Bundle برنامه شما را بسیار کوچکتر، نسخههای شما را سادهتر میکند و استفاده از ماژولهای ویژگی و ارائه تجربههای فوری را ممکن میسازد.
- امنیت کلید امضای خود را افزایش دهید و استفاده از یک کلید آپلود جداگانه برای امضای بسته برنامه ای که در Google Play آپلود می کنید، ممکن کنید.
ارتقاء کلید به شما امکان می دهد کلید امضای برنامه خود را تغییر دهید در صورتی که کلید موجود شما به خطر بیفتد یا اگر نیاز به انتقال به یک کلید رمزنگاری قوی تر دارید
Play App Signing از دو کلید استفاده میکند: کلید امضای برنامه و کلید آپلود ، که با جزئیات بیشتر در بخش مربوط به کلیدها و ذخیرهسازی کلید توضیح داده شدهاند. شما کلید آپلود را نگه می دارید و از آن برای امضای برنامه خود برای آپلود در فروشگاه Google Play استفاده می کنید. Google از گواهی آپلود برای تأیید هویت شما استفاده میکند و همانطور که در شکل 1 نشان داده شده است، APK(های) شما را با کلید امضای برنامه برای توزیع امضا میکند. با استفاده از یک کلید آپلود جداگانه، میتوانید در صورت گم شدن یا گم شدن کلید، درخواست بازنشانی کلید آپلود کنید. به خطر افتاد.
در مقایسه، برای برنامههایی که در Play App Signing شرکت نکردهاند، اگر کلید امضای برنامه خود را گم کنید، توانایی بهروزرسانی برنامه خود را از دست خواهید داد.
شکل 1 . امضای برنامه با Play App Signing
کلیدهای شما در همان زیرساختی ذخیره می شوند که Google برای ذخیره کلیدهای خود استفاده می کند، جایی که توسط سرویس مدیریت کلید Google محافظت می شود. میتوانید با مطالعه کتابهای سفید Google Cloud Security درباره زیرساختهای فنی Google اطلاعات بیشتری کسب کنید.
وقتی از Play App Signing استفاده میکنید، اگر کلید آپلود خود را گم کنید یا در معرض خطر قرار گرفته باشد، میتوانید درخواست بازنشانی کلید آپلود را در Play Console کنید. از آنجایی که کلید امضای برنامه شما توسط Google ایمن است، میتوانید به آپلود نسخههای جدید برنامه خود بهعنوان بهروزرسانی در برنامه اصلی ادامه دهید، حتی اگر کلیدهای آپلود را تغییر دهید. برای کسب اطلاعات بیشتر، بازنشانی کلید بارگذاری خصوصی گم شده یا در معرض خطر را بخوانید.
بخش بعدی برخی از اصطلاحات و مفاهیم مهم مربوط به امضای برنامه و امنیت را شرح می دهد. اگر ترجیح میدهید از قبل رد شوید و یاد بگیرید که چگونه برنامه خود را برای آپلود در فروشگاه Google Play آماده کنید، به Sign your app for release بروید.
کلیدها، کلیدها و گواهی ها
Java Keystore (.jks یا .keystore) فایل های باینری هستند که به عنوان مخزن گواهی ها و کلیدهای خصوصی عمل می کنند.
یک گواهی کلید عمومی (فایلهای .der
یا .pem
)، که به عنوان گواهی دیجیتال یا گواهی هویت نیز شناخته میشود، حاوی کلید عمومی یک جفت کلید عمومی/خصوصی و همچنین برخی فرادادههای دیگر برای شناسایی مالک است (مثلاً نام). و مکان) که کلید خصوصی مربوطه را در اختیار دارد.
در زیر انواع مختلفی از کلیدها وجود دارد که باید بدانید:
- کلید امضای برنامه: کلیدی که برای امضای فایلهای APK نصب شده در دستگاه کاربر استفاده میشود. به عنوان بخشی از مدل بهروزرسانی ایمن اندروید، کلید امضا هرگز در طول عمر برنامه شما تغییر نمیکند. کلید امضای برنامه خصوصی است و باید مخفی بماند. با این حال، می توانید گواهی ایجاد شده با استفاده از کلید امضای برنامه را به اشتراک بگذارید.
کلید آپلود: کلیدی که برای امضای بسته برنامه یا APK قبل از آپلود آن برای امضای برنامه با Google Play استفاده میکنید. شما باید کلید آپلود را مخفی نگه دارید. با این حال، میتوانید گواهیای را که با استفاده از کلید آپلود شما ایجاد میشود، به اشتراک بگذارید. می توانید یک کلید آپلود را به یکی از روش های زیر ایجاد کنید:
- اگر تصمیم میگیرید هنگام انتخاب، Google کلید امضای برنامه را برای شما ایجاد کند، کلیدی که برای امضای برنامه خود برای انتشار استفاده میکنید بهعنوان کلید آپلود شما تعیین میشود.
- اگر هنگام شرکت در برنامه جدید یا موجود خود، کلید امضای برنامه را در اختیار Google قرار دهید، این امکان را دارید که برای افزایش امنیت در حین یا پس از انتخاب، کلید آپلود جدیدی ایجاد کنید.
- اگر کلید آپلود جدیدی ایجاد نکنید، همچنان از کلید امضای برنامه خود به عنوان کلید آپلود برای امضای هر نسخه استفاده میکنید.
نکته: برای ایمن نگه داشتن کلیدهایتان، بهتر است مطمئن شوید کلید امضای برنامه و کلید آپلود متفاوت هستند.
کار با ارائه دهندگان API
میتوانید گواهینامه کلید امضای برنامه و کلید آپلود خود را از صفحه Release > Setup > App signing در Play Console دانلود کنید. این برای ثبت کلید(های) عمومی با ارائه دهندگان API استفاده می شود. قرار است به اشتراک گذاشته شود، زیرا حاوی کلید خصوصی شما نیست.
اثر انگشت گواهی یک نمایش کوتاه و منحصر به فرد از یک گواهی است که اغلب توسط ارائه دهندگان API در کنار نام بسته درخواست می شود تا یک برنامه را برای استفاده از سرویس خود ثبت کنند. اثر انگشت MD5، SHA-1 و SHA-256 گواهینامههای آپلود و امضای برنامه را میتوانید در صفحه امضای برنامه کنسول Play پیدا کنید. سایر اثرانگشت ها را نیز می توان با دانلود گواهی اصلی ( .der
) از همان صفحه محاسبه کرد.
ساخت اشکال زدایی خود را امضا کنید
هنگام اجرا یا اشکال زدایی پروژه از IDE، Android Studio به طور خودکار برنامه شما را با یک گواهی اشکال زدایی که توسط ابزار Android SDK ایجاد شده است امضا می کند. اولین باری که پروژه خود را در Android Studio اجرا میکنید یا اشکالزدایی میکنید، IDE بهطور خودکار فروشگاه و گواهی اشکالزدایی را در $HOME/.android/debug.keystore
ایجاد میکند و ذخیرهسازی کلید و رمزهای عبور کلید را تنظیم میکند.
از آنجایی که گواهی اشکالزدایی توسط ابزارهای ساخت ایجاد میشود و از نظر طراحی ناامن است، اکثر فروشگاههای برنامه (از جمله فروشگاه Google Play) برنامههای امضا شده با گواهی اشکالزدایی را برای انتشار نمیپذیرند.
Android Studio به طور خودکار اطلاعات امضای اشکال زدایی شما را در پیکربندی امضا ذخیره می کند تا مجبور نباشید هر بار که اشکال زدایی می کنید آن را وارد کنید. پیکربندی امضا، شیئی است که شامل تمام اطلاعات لازم برای امضای برنامه شما، از جمله مکان ذخیره کلید، رمز ذخیره کلید، نام کلید و رمز عبور کلید است.
برای اطلاعات بیشتر درباره نحوه ساخت و اجرای برنامهها برای اشکالزدایی، به ساخت و اجرای برنامه خود مراجعه کنید.
انقضای گواهی اشکال زدایی
تاریخ انقضای گواهی خودامضا که برای امضای برنامه شما برای اشکالزدایی استفاده میشود، 30 سال از تاریخ ایجاد آن است. هنگامی که گواهی منقضی می شود، با یک خطای ساخت مواجه می شوید.
برای رفع این مشکل، به سادگی فایل debug.keystore
ذخیره شده در یکی از مکان های زیر را حذف کنید:
-
~/.android/
در OS X و Linux -
C:\Documents and Settings\ user \.android\
در ویندوز XP -
C:\Users\ user \.android\
در ویندوز ویستا و ویندوز 7، 8 و 10
دفعه بعد که نسخه اشکال زدایی برنامه خود را بسازید و اجرا کنید ، Android Studio یک فروشگاه کلید و کلید اشکال زدایی جدید ایجاد می کند.
برنامه خود را برای انتشار در Google Play امضا کنید
هنگامی که آماده انتشار برنامه خود هستید، باید برنامه خود را امضا کرده و آن را در یک فروشگاه برنامه مانند Google Play آپلود کنید. هنگام انتشار برنامه خود در Google Play برای اولین بار، باید Play App Signing را نیز پیکربندی کنید. Play App Signing برای برنامههایی که قبل از آگوست 2021 ایجاد شدهاند اختیاری است. این بخش به شما نشان میدهد چگونه برنامه خود را برای انتشار به درستی امضا کنید و Play App Signing را پیکربندی کنید.
یک کلید آپلود و فروشگاه کلید ایجاد کنید
اگر از قبل کلید آپلود ندارید، که هنگام پیکربندی Play App Signing مفید است، میتوانید با استفاده از Android Studio به صورت زیر کلیدی را ایجاد کنید:
- در نوار منو، روی Build > Generate Signed Bundle/APK کلیک کنید.
- در گفتگوی Generate Signed Bundle یا APK ، Android App Bundle یا APK را انتخاب کنید و روی Next کلیک کنید.
- در زیر فیلد مسیر ذخیره کلید ، روی ایجاد جدید کلیک کنید.
همانطور که در شکل 2 نشان داده شده است، در پنجره New Key Store ، اطلاعات زیر را برای keystore و key خود ارائه دهید.
شکل 2. یک کلید آپلود و ذخیره کلید جدید در Android Studio ایجاد کنید.
فروشگاه کلید
- مسیر ذخیره کلید: مکانی را انتخاب کنید که فروشگاه کلید شما باید در آن ایجاد شود. همچنین یک نام فایل باید به انتهای مسیر مکان با پسوند
.jks
اضافه شود. - رمز عبور: یک رمز عبور امن برای فروشگاه کلید خود ایجاد و تأیید کنید.
- مسیر ذخیره کلید: مکانی را انتخاب کنید که فروشگاه کلید شما باید در آن ایجاد شود. همچنین یک نام فایل باید به انتهای مسیر مکان با پسوند
کلید
- نام مستعار: یک نام شناسایی برای کلید خود وارد کنید.
- رمز عبور: یک رمز عبور امن برای کلید خود ایجاد و تأیید کنید. این باید همان رمز عبور فروشگاه کلید شما باشد. (لطفا برای اطلاعات بیشتر به موضوع شناخته شده مراجعه کنید)
- اعتبار (سال): مدت زمانی را بر حسب سال تنظیم کنید که کلید شما معتبر باشد. کلید شما باید حداقل 25 سال معتبر باشد، بنابراین میتوانید بهروزرسانیهای برنامه را با همان کلید در طول عمر برنامه خود امضا کنید.
- گواهی: برخی از اطلاعات مربوط به خود را برای گواهی خود وارد کنید. این اطلاعات در برنامه شما نمایش داده نمی شود، اما در گواهی شما به عنوان بخشی از APK گنجانده شده است.
پس از تکمیل فرم، روی OK کلیک کنید.
اگر میخواهید برنامه خود را با کلید آپلود بسازید و امضا کنید، به بخش نحوه امضای برنامه با کلید آپلود خود ادامه دهید. اگر فقط میخواهید کلید و ذخیرهسازی کلید را ایجاد کنید، روی لغو کلیک کنید.
برنامه خود را با کلید خود امضا کنید
اگر از قبل یک کلید آپلود دارید، از آن برای امضای برنامه خود استفاده کنید. اگر در عوض برنامه شما قبلاً با یک کلید امضای برنامه موجود امضا و در فروشگاه Google Play منتشر شده است، از آن برای امضای برنامه خود استفاده کنید. بعداً میتوانید یک کلید آپلود جداگانه در Google Play ایجاد و ثبت کنید تا بهروزرسانیهای بعدی را امضا کرده و در برنامه خود آپلود کنید.
برای امضای برنامه خود با استفاده از Android Studio، این مراحل را دنبال کنید:
- اگر در حال حاضر گفتگوی Generate Signed Bundle یا APK را باز ندارید، روی Build > Generate Signed Bundle/APK کلیک کنید.
- در گفتگوی Generate Signed Bundle یا APK ، Android App Bundle یا APK را انتخاب کنید و روی Next کلیک کنید.
- یک ماژول را از منوی کشویی انتخاب کنید.
مسیر ذخیره کلید، نام مستعار کلید خود را مشخص کنید و رمزهای عبور هر دو را وارد کنید. اگر هنوز ذخیرهسازی کلید و کلید آپلود خود را آماده نکردهاید، ابتدا یک کلید و فروشگاه کلید آپلود ایجاد کنید و سپس برای تکمیل این مرحله برگردید.
شکل 3 . برنامه خود را با کلید آپلود خود امضا کنید.
روی Next کلیک کنید.
در پنجره بعدی (نشان داده شده در شکل 4)، یک پوشه مقصد را برای برنامه امضا شده خود انتخاب کنید، نوع ساخت را انتخاب کنید، در صورت وجود طعم(های) محصول را انتخاب کنید.
اگر در حال ساختن و امضای یک APK هستید، باید انتخاب کنید که برنامه شما از کدام نسخه امضا پشتیبانی کند. برای کسب اطلاعات بیشتر، درباره طرحهای امضای برنامه بخوانید
روی ایجاد کلیک کنید.
![](https://developer.android.com/static/studio/images/publish/generate_signed_bundle_popup-2x.png?authuser=2&hl=fa)
شکل 5. برای تجزیه و تحلیل یا مکان یابی بسته برنامه خود، روی پیوند در پنجره بازشو کلیک کنید.
پس از اتمام ساخت برنامه امضا شده اندروید استودیو، میتوانید با کلیک بر روی گزینه مناسب در اعلان پاپ آپ، برنامه خود را پیدا کنید یا آن را تجزیه و تحلیل کنید ، همانطور که در شکل 5 نشان داده شده است.
اکنون آماده هستید تا برنامه خود را در Play App Signing انتخاب کنید و برنامه خود را برای انتشار آپلود کنید. اگر در فرآیند انتشار برنامه تازه کار هستید، ممکن است بخواهید نمای کلی راه اندازی را بخوانید. در غیر این صورت، به صفحه مربوط به نحوه آپلود برنامه خود در Play Console ادامه دهید.
با استفاده از Play App Signing
همانطور که قبلاً در این صفحه توضیح داده شد، پیکربندی Play App Signing برای امضای برنامه شما برای توزیع از طریق Google Play لازم است (به استثنای برنامههایی که قبل از اوت 2021 ایجاد شدهاند، که ممکن است به توزیع APKهای خودامضا شده ادامه دهند). مراحلی که باید انجام دهید بستگی به این دارد که آیا برنامه شما هنوز در Google Play منتشر نشده است یا برنامه شما قبلاً امضا شده است و قبل از اوت 2021 با استفاده از کلید امضای برنامه موجود منتشر شده است.
یک برنامه جدید را پیکربندی کنید
برای پیکربندی امضا برای برنامهای که هنوز در Google Play منتشر نشده است، به صورت زیر عمل کنید:
- اگر قبلاً این کار را نکردهاید، یک کلید آپلود ایجاد کنید و برنامه خود را با آن کلید آپلود امضا کنید .
- به کنسول Play خود وارد شوید.
- مراحل آماده سازی و عرضه نسخه خود را برای ایجاد نسخه جدید دنبال کنید.
- پس از انتخاب آهنگ انتشار، امضای برنامه را در قسمت امضای برنامه به صورت زیر پیکربندی کنید:
- برای اینکه Google Play یک کلید امضای برنامه برای شما ایجاد کند و از آن برای امضای برنامه خود استفاده کند، لازم نیست کاری انجام دهید. کلیدی که برای امضای اولین نسخه خود استفاده می کنید، کلید آپلود شما می شود و باید از آن برای امضای نسخه های بعدی استفاده کنید.
- برای استفاده از کلیدی مشابه با برنامه دیگری در حساب توسعهدهنده خود، تغییر کلید امضای برنامه > استفاده از کلید مشابه با برنامه دیگری در این حساب را انتخاب کنید، یک برنامه را انتخاب کنید و سپس روی ادامه کلیک کنید.
- برای ارائه کلید امضای خود برای Google تا استفاده از آن هنگام امضای برنامه شما، تغییر کلید امضای برنامه را انتخاب کنید و یکی از گزینههای صادرات و آپلود را انتخاب کنید که به شما امکان میدهد کلید خصوصی و گواهی عمومی آن را بهطور ایمن آپلود کنید.
در بخشی به نام App Bundles ، روی مرور فایلها کلیک کنید تا برنامهای را که امضا کردهاید با استفاده از کلید آپلود خود پیدا کرده و آپلود کنید. برای اطلاعات بیشتر درباره انتشار برنامه خود، به تهیه و عرضه نسخه خود مراجعه کنید. وقتی برنامه خود را پس از پیکربندی Play App Signing منتشر میکنید، Google Play کلید امضای برنامه را برای شما ایجاد میکند (مگر اینکه یک کلید موجود را آپلود کنید) و آن را مدیریت میکند. کافی است قبل از آپلود در Google Play، بهروزرسانیهای بعدی را با استفاده از کلید آپلود برنامه خود امضا کنید.
اگر نیاز به ایجاد یک کلید آپلود جدید برای برنامه خود دارید، به بخش نحوه بازنشانی کلید بارگذاری خصوصی گم شده یا در معرض خطر بروید.
یک برنامه موجود را انتخاب کنید
اگر با استفاده از کلید امضای برنامه موجود، برنامهای را بهروزرسانی میکنید که قبلاً در Google Play منتشر شده است، میتوانید به صورت زیر در «امضای برنامه Play» شرکت کنید:
- وارد کنسول Play خود شوید و به برنامه خود بروید.
- در منوی سمت چپ، روی Release > Setup > App signing کلیک کنید.
- در صورت وجود، شرایط خدمات را مرور کرده و پذیرش را انتخاب کنید.
- یکی از گزینههایی را انتخاب کنید که به بهترین شکل کلید امضایی را که میخواهید در Google Play آپلود کنید، توصیف میکند و دستورالعملهای نشان داده شده را دنبال کنید. به عنوان مثال، اگر از Java Keystore برای کلید امضای خود استفاده می کنید، گزینه Upload a new app signing key from Java Keystore را انتخاب کنید و دستورالعمل ها را برای دانلود و اجرای ابزار PEPK دنبال کنید و فایل تولید شده را با کلید رمزگذاری شده خود آپلود کنید.
- روی ثبت نام کلیک کنید.
اکنون باید صفحه ای را مشاهده کنید که جزئیات مربوط به امضای و آپلود گواهینامه برنامه خود را نشان می دهد. Google Play اکنون هنگام استقرار برنامه شما برای کاربران، آن را با کلید موجود شما امضا می کند. با این حال، یکی از مهمترین مزایای Play App Signing، توانایی جدا کردن کلیدی است که برای امضای مصنوع آپلود شده در Google Play از کلیدی که Google Play برای امضای برنامه شما برای توزیع به کاربران استفاده میکند، استفاده میکند. بنابراین، مراحل بخش بعدی را دنبال کنید تا یک کلید آپلود جداگانه ایجاد و ثبت کنید.
یک گواهی آپلود ایجاد و ثبت کنید
وقتی برنامهای را منتشر میکنید که با کلید آپلود امضا نشده است، کنسول Google Play این گزینه را برای بهروزرسانیهای بعدی برنامه در اختیار شما قرار میدهد. اگرچه این یک مرحله اختیاری است، توصیه می شود برنامه خود را با کلیدی جدا از کلیدی که Google Play برای توزیع برنامه شما بین کاربران استفاده می کند منتشر کنید. به این ترتیب، Google کلید امضای شما را ایمن نگه میدارد و شما میتوانید یک کلید آپلود خصوصی گمشده یا در معرض خطر را بازنشانی کنید . این بخش نحوه ایجاد یک کلید آپلود، تولید گواهی آپلود از آن، و ثبت آن گواهی را در Google Play برای بهروزرسانیهای بعدی برنامه خود توضیح میدهد.
موارد زیر شرایطی را که در آن گزینه ثبت گواهی آپلود در Play Console را مشاهده می کنید توضیح می دهد:
- وقتی برنامه جدیدی را منتشر می کنید که با کلید امضا امضا شده است و آن را در Play App Signing انتخاب می کنید.
- وقتی میخواهید یک برنامه موجود را منتشر کنید که قبلاً در Play App Signing شرکت کرده است، اما با استفاده از کلید امضای آن امضا شده است.
اگر بهروزرسانی یک برنامه موجود را منتشر نمیکنید که قبلاً در Play App Signing شرکت کرده است، و میخواهید یک گواهی آپلود ثبت کنید، مراحل زیر را کامل کرده و به بخش مربوط به نحوه بازنشانی یک خصوصی گمشده یا در معرض خطر ادامه دهید. کلید آپلود
اگر قبلاً این کار را نکردهاید، یک کلید آپلود و ذخیره کلید ایجاد کنید .
پس از ایجاد کلید آپلود و فروشگاه کلید، باید با دستور زیر یک گواهی عمومی از کلید آپلود خود با استفاده از keytool
ایجاد کنید:
$ keytool -export -rfc -keystore your-upload-keystore.jks -alias upload-alias -file output_upload_certificate.pem
اکنون که گواهی آپلود خود را دارید، هنگامی که در کنسول Play از شما خواسته شد یا هنگام تنظیم مجدد کلید آپلود، آن را در Google ثبت کنید.
کلید امضای برنامه خود را ارتقا دهید
در برخی شرایط، ممکن است بخواهید کلید امضای برنامه خود را تغییر دهید. به عنوان مثال، به این دلیل که شما یک کلید رمزنگاری قوی تر می خواهید یا کلید امضای شما به خطر افتاده است. با این حال، از آنجایی که کاربران تنها زمانی میتوانند برنامه شما را بهروزرسانی کنند که بهروزرسانی با همان کلید امضا امضا شده باشد، تغییر کلید امضای برنامهای که قبلاً منتشر شده است دشوار است.
اگر برنامه خود را در Google Play منتشر میکنید، میتوانید کلید امضای برنامه منتشرشده خود را از طریق کنسول Play ارتقا دهید—کلید جدید شما برای امضای نصبها و بهروزرسانیهای برنامه در Android 13 و بالاتر استفاده میشود، در حالی که کلید امضای برنامه قدیمیتر برای بهروزرسانیها را برای کاربران نسخههای قبلی اندروید امضا کنید.
برای کسب اطلاعات بیشتر، کلید امضای برنامه خود را ارتقا دهید .
بازنشانی کلید آپلود خصوصی گم شده یا در معرض خطر
اگر کلید آپلود خصوصی خود را گم کرده اید یا کلید خصوصی شما به خطر افتاده است، می توانید یک کلید جدید ایجاد کنید و درخواست تنظیم مجدد کلید آپلود در کنسول Play کنید.
فرآیند ساخت را برای امضای خودکار برنامه خود پیکربندی کنید
در اندروید استودیو، میتوانید با ایجاد یک پیکربندی امضا و اختصاص آن به نوع ساخت نسخه خود، پروژه خود را به گونهای پیکربندی کنید که نسخه انتشار برنامه خود را به طور خودکار در طول فرآیند ساخت امضا کند. پیکربندی امضا شامل مکان ذخیره کلید، رمز ذخیره کلید، نام مستعار کلید و رمز عبور کلید است. برای ایجاد یک پیکربندی امضا و اختصاص آن به نوع ساخت نسخه خود با استفاده از Android Studio، مراحل زیر را انجام دهید:
- در پنجره Project ، روی برنامه خود کلیک راست کرده و Open Module Settings را کلیک کنید.
- در پنجره Project Structure ، در قسمت Modules در پانل سمت چپ، روی ماژولی که می خواهید امضا کنید کلیک کنید.
- روی تب Signing و سپس Add کلیک کنید
.
فایل فروشگاه کلید خود را انتخاب کنید، یک نام برای این پیکربندی امضا وارد کنید (زیرا ممکن است بیش از یک مورد ایجاد کنید)، و اطلاعات مورد نیاز را وارد کنید.
شکل 7 . پنجره ای برای ایجاد یک پیکربندی امضای جدید.
- روی تب Build Types کلیک کنید.
- روی ساخت نسخه کلیک کنید.
در قسمت Signing Config ، پیکربندی امضایی را که ایجاد کردید انتخاب کنید.
شکل 8 . یک پیکربندی امضا در Android Studio را انتخاب کنید.
- روی OK کلیک کنید.
اکنون هر بار که نوع ساخت نسخه خود را با انتخاب گزینه ای در زیر ساخت > Build Bundle(s) / APK(s) در Android Studio ایجاد می کنید، IDE با استفاده از پیکربندی امضایی که مشخص کرده اید، برنامه شما را به طور خودکار امضا می کند. میتوانید APK یا بسته برنامه امضاشده خود را در فهرست build/outputs/
داخل فهرست پروژه برای ماژولی که در حال ساخت آن هستید، پیدا کنید.
هنگامی که پیکربندی امضا را ایجاد می کنید، اطلاعات امضای شما به صورت متن ساده در فایل های ساخت Gradle شما گنجانده می شود. اگر در یک تیم کار می کنید یا کد خود را به صورت عمومی به اشتراک می گذارید، باید اطلاعات امضای خود را با حذف آن از فایل های ساخت و ذخیره جداگانه آن، ایمن نگه دارید. میتوانید اطلاعات بیشتری درباره نحوه حذف اطلاعات امضای خود از فایلهای ساخت را در Remove Signing Information from Your Build Files بخوانید. برای اطلاعات بیشتر در مورد ایمن نگه داشتن اطلاعات امضای خود، به ایمن نگه داشتن کلید خود در زیر مراجعه کنید.
طعم هر محصول را متفاوت امضا کنید
اگر برنامه شما از طعمهای محصول استفاده میکند و میخواهید هر طعم متفاوتی را امضا کنید، میتوانید پیکربندیهای امضای اضافی ایجاد کنید و آنها را بر اساس طعم و مزه نسبت دهید:
- در پنجره Project ، روی برنامه خود کلیک راست کرده و Open Module Settings را کلیک کنید.
- در پنجره Project Structure ، در قسمت Modules در پانل سمت چپ، روی ماژولی که می خواهید امضا کنید کلیک کنید.
- روی تب Signing و سپس Add کلیک کنید
.
فایل فروشگاه کلید خود را انتخاب کنید، یک نام برای این پیکربندی امضا وارد کنید (زیرا ممکن است بیش از یک مورد ایجاد کنید)، و اطلاعات مورد نیاز را وارد کنید.
شکل 10 . پنجره ای برای ایجاد یک پیکربندی امضای جدید.
- مراحل 3 و 4 را در صورت لزوم تکرار کنید تا زمانی که تمام تنظیمات امضای خود را ایجاد کنید.
- روی تب طعم ها کلیک کنید.
- روی طعمی که میخواهید پیکربندی شود کلیک کنید، سپس پیکربندی امضای مناسب را از منوی کشویی Signing Config انتخاب کنید.
شکل 11 . تنظیمات امضا را بر اساس طعم محصول پیکربندی کنید.
برای پیکربندی هر طعم اضافی محصول تکرار کنید.
- روی OK کلیک کنید.
همچنین می توانید تنظیمات امضای خود را در فایل های پیکربندی Gradle مشخص کنید. برای اطلاعات بیشتر، پیکربندی تنظیمات امضا را ببینید.
یک گزارش امضا را اجرا کنید
برای دریافت اطلاعات امضای هر یک از انواع برنامه خود، وظیفه Gradle signingReport
را در Android Studio اجرا کنید:
- View > Tool Windows > Gradle را انتخاب کنید تا پنجره Gradle tool باز شود
- برای اجرای گزارش ، YourApp > Tasks > android > signingReport را انتخاب کنید
کلید امضای خود را مدیریت کنید
اگر تصمیم گرفتید در Play App Signing شرکت نکنید (فقط برای برنامههایی که قبل از اوت 2021 ایجاد شدهاند)، میتوانید کلید امضای برنامه و فروشگاه کلید خود را مدیریت کنید. به خاطر داشته باشید که شما مسئول ایمن سازی کلید و فروشگاه کلید هستید . علاوه بر این، برنامه شما نمیتواند از Android App Bundles، Play Feature Delivery و Play Asset Delivery پشتیبانی کند.
هنگامی که آماده ایجاد کلید و فروشگاه کلید خود هستید، مطمئن شوید که ابتدا یک رمز عبور قوی برای فروشگاه کلید خود و یک رمز عبور قوی جداگانه برای هر کلید خصوصی ذخیره شده در فروشگاه کلید انتخاب کرده اید. شما باید فروشگاه کلید خود را در مکانی امن و مطمئن نگه دارید. اگر دسترسی به کلید امضای برنامه خود را از دست بدهید یا کلید شما به خطر بیفتد، Google نمیتواند کلید امضای برنامه را برای شما بازیابی کند و نمیتوانید نسخههای جدید برنامه خود را به عنوان بهروزرسانی برنامه اصلی برای کاربران منتشر کنید. برای اطلاعات بیشتر، کلید خود را ایمن نگه دارید ، در زیر ببینید.
اگر کلید امضای برنامه و فروشگاه کلید خود را مدیریت میکنید، وقتی APK خود را امضا میکنید، آن را به صورت محلی با استفاده از کلید امضای برنامه خود امضا میکنید و APK امضاشده را مستقیماً برای توزیع در فروشگاه Google Play آپلود میکنید، همانطور که در شکل 12 نشان داده شده است.
شکل 12 . هنگامی که کلید امضای برنامه خود را مدیریت می کنید، یک برنامه را امضا کنید
وقتی از Play App Signing استفاده میکنید، Google کلید امضای شما را ایمن نگه میدارد و مطمئن میشود که برنامههای شما به درستی امضا شدهاند و میتوانند در طول عمرشان بهروزرسانیها را دریافت کنند. با این حال، اگر تصمیم دارید که کلید امضای برنامه خود را خودتان مدیریت کنید، چند نکته وجود دارد که باید در نظر داشته باشید.
ملاحظات امضاء
شما باید برنامه خود را با همان گواهی در طول عمر مورد انتظار آن امضا کنید. چندین دلیل وجود دارد که چرا باید این کار را انجام دهید:
- ارتقاء برنامه: هنگامی که سیستم در حال نصب بهروزرسانی برای یک برنامه است، گواهی(های) نسخه جدید را با گواهیهای موجود در نسخه موجود مقایسه میکند. اگر گواهی ها مطابقت داشته باشند، سیستم به روز رسانی را امکان پذیر می کند. اگر نسخه جدید را با گواهینامه دیگری امضا کنید، باید نام بسته دیگری را به برنامه اختصاص دهید—در این صورت کاربر نسخه جدید را به عنوان یک برنامه کاملاً جدید نصب میکند.
- ماژولار بودن برنامه: Android به فایلهای APK امضا شده با گواهی یکسان اجازه میدهد در صورت درخواست برنامهها در یک فرآیند اجرا شوند، به طوری که سیستم آنها را به عنوان یک برنامه واحد در نظر میگیرد. به این ترتیب می توانید برنامه خود را در ماژول ها مستقر کنید و کاربران می توانند هر یک از ماژول ها را به طور مستقل به روز کنند.
- به اشتراک گذاری کد/داده از طریق مجوزها: Android اجرای مجوزهای مبتنی بر امضا را فراهم می کند، به طوری که یک برنامه می تواند عملکرد را در معرض برنامه دیگری قرار دهد که با یک گواهی مشخص امضا شده است. با امضای چندین APK با یک گواهی و استفاده از بررسیهای مجوز مبتنی بر امضا، برنامههای شما میتوانند کد و دادهها را به روشی امن به اشتراک بگذارند.
اگر قصد دارید از ارتقاء یک برنامه پشتیبانی کنید، مطمئن شوید که کلید امضای برنامه شما دارای دوره اعتباری است که از طول عمر مورد انتظار آن برنامه بیشتر است. مدت اعتبار 25 سال یا بیشتر توصیه می شود. وقتی دوره اعتبار کلید شما به پایان می رسد، کاربران دیگر نمی توانند به طور یکپارچه برنامه شما را به نسخه های جدید ارتقا دهند.
اگر میخواهید برنامههای خود را در Google Play منتشر کنید، کلیدی که برای امضای برنامهتان استفاده میکنید باید دارای دوره اعتباری باشد که پس از ۲۲ اکتبر ۲۰۳۳ به پایان میرسد. Google Play این الزام را اعمال میکند تا اطمینان حاصل کند که کاربران میتوانند بهطور یکپارچه برنامهها را در صورت در دسترس بودن نسخههای جدید ارتقا دهند.
کلید خود را ایمن نگه دارید
اگر تصمیم به مدیریت و ایمن کردن کلید امضای برنامه و ذخیره کلید خود دارید (به جای شرکت در Play App Signing )، ایمن کردن کلید امضای برنامه شما هم برای شما و هم برای کاربر اهمیت حیاتی دارد. اگر به شخصی اجازه دهید از کلید شما استفاده کند، یا اگر فروشگاه کلید و گذرواژههای خود را در مکانی ناامن رها کنید تا شخص ثالث بتواند آنها را پیدا کرده و استفاده کند، هویت نویسنده و اعتماد کاربر به خطر میافتد.
اگر شخص ثالثی بدون اطلاع یا اجازه شما موفق شود کلید امضای برنامه شما را بگیرد، آن شخص می تواند برنامه هایی را امضا و توزیع کند که به طور مخرب جایگزین برنامه های معتبر شما می شوند یا آنها را خراب می کنند. چنین شخصی همچنین میتواند برنامههایی را با هویت شما امضا و توزیع کند که به برنامههای دیگر یا خود سیستم حمله میکنند یا دادههای کاربر را خراب یا سرقت میکنند.
کلید خصوصی شما برای امضای همه نسخههای بعدی برنامه شما مورد نیاز است. اگر کلید خود را گم کنید یا جابجا کنید، نمیتوانید بهروزرسانیهای برنامه موجود خود را منتشر کنید. شما نمی توانید یک کلید تولید شده قبلی را دوباره تولید کنید.
شهرت شما بهعنوان یک نهاد توسعهدهنده به این بستگی دارد که همیشه کلید امضای برنامهتان را به درستی ایمن کنید تا زمانی که کلید منقضی شود. در اینجا چند نکته برای حفظ امنیت کلید وجود دارد:
- رمزهای عبور قوی را برای keystore و key انتخاب کنید.
- کلید خصوصی خود را به کسی قرض ندهید و اجازه ندهید افراد غیرمجاز فروشگاه کلید و رمز عبور کلید شما را بدانند.
- فایل فروشگاه کلید حاوی کلید خصوصی شما را در مکانی امن و مطمئن نگه دارید.
به طور کلی، اگر هنگام تولید، استفاده و ذخیره کلید خود از احتیاطات عقل سلیم پیروی کنید، کلید امن باقی خواهد ماند.
اطلاعات امضا را از فایل های ساخت خود حذف کنید
وقتی پیکربندی امضا ایجاد میکنید، 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 { ... }
کاتلین
... 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[' propertyName ']
به ویژگی های ذخیره شده درkeystoreProperties
مراجعه کنید. بلوکsigningConfigs
فایلbuild.gradle
ماژول خود را برای ارجاع به اطلاعات امضای ذخیره شده درkeystoreProperties
با استفاده از این نحو تغییر دهید.شیار
android { signingConfigs { config { keyAlias keystoreProperties['keyAlias'] keyPassword keystoreProperties['keyPassword'] storeFile file(keystoreProperties['storeFile']) storePassword keystoreProperties['storePassword'] } } ... }
کاتلین
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 } } ... }
- پنجره ابزار Build Variants را باز کنید و مطمئن شوید که نوع ساخت نسخه انتخاب شده است.
- گزینه ای را در زیر ساخت > ساخت بسته(ها) / APK(ها) انتخاب کنید تا یک APK یا یک بسته برنامه از بیلد انتشار خود بسازید. شما باید خروجی ساخت را در دایرکتوری
build/outputs/
ماژول خود ببینید.
از آنجایی که فایل های ساخت شما دیگر حاوی اطلاعات حساس نیستند، اکنون می توانید آنها را در کنترل منبع قرار دهید یا آنها را در یک پایگاه کد مشترک آپلود کنید. مطمئن شوید که فایل keystore.properties
را ایمن نگه دارید. این ممکن است شامل حذف آن از سیستم کنترل منبع شما باشد.