در این صفحه کارهای اصلی را که لازم است پیش از انتشار برنامهتان انجام دهید با هم مرور میکنیم. بعد از انجام این چند قدم ساده، شما فایل apk رمزگذاری شدهای در اختیار خواهید داشت که میتوانید در کافهبازار بارگذاری نمایید و برای نصب در اختیار کاربران قرار دهید.
۱- نامگذاری بسته
قبل از هرکاری اطمینان حاصل کنید که نامبسته (package name) مناسبی برای برنامهتان انتخاب کردهاید. با توجه به اینکه پس از انتشار برنامه امکان تغییر نام بسته وجود نخواهد داشت، پیش از اینکه اولین نسخهٔ برنامه را در اختیار کاربران قرار دهید، حتما از مناسب بودن نام بستهای که انتخاب کردهاید اطمینان حاصل نمایید. برای یادگیری نحوهٔ انتخاب package name میتوانید قسمت «اصول نامگذاری بستهٔ برنامه» را مطالعه نمایید.
۲- رمزگذاری بسته
سیستمعامل اندروید قبل از اینکه اجازه بدهد برنامهای روی دستگاه نصب شود، بررسی میکند که برنامه با یک Certificate به صورت دیجیتالی امضا شده باشد. پس اگر برنامهای به این صورت رمزگذاری نشده باشد، امکان نصب آن روی دستگاه کاربران وجود نخواهد داشت. حالا این Certificate چه اطلاعاتی را در خودش نگهداری میکند و اصلا چیست؟ این سند، گواهی، Certificate یا هرچه که دوست دارید آن را خطاب کنی، برای تشخیص هویت صاحب اصلی برنامه استفاده میشود و فقط توسعهدهندهٔ برنامه هست که Private Key لازم برای دسترسی به این Certificate را دارد. مجموعهای که این Certificate و کلید آن را در بر میگیرد Keystore نام دارد که از اینجا به بعد، بیشتر با این اسم سروکار خواهیم داشت.
نگاه کلی به روشهای امضا کردن برنامه
برای امضا کردن برنامه ۲ راه وجود دارد که هرکدام در شرایط متفاوتی استفاده میشوند. شما میتوانید برنامه را در Debug Mode یا Release Mode امضا کنید. زمانیکه در حال ساخت برنامهٔ خودتان هستید، آن را در Debug Mode امضا میکنید و زمانیکه قصد انتشار برنامه را دارید، آن را در Release Mode امضا میکنید. اولین روش که فقط برای تست برنامه است، استفاده از کلید دیباگ اندروید است. این کلید توسط Android SDK ساخته و در زمان ساخت و تست برنامه استفاده میشود. هدف از استفاده از این کلید سرعت دادن به تست برنامه است. برای امضای برنامه در Release Mode شما باید Keystore مختص خودتان را بسازید.
امضاء برنامه در Debug Mode
در زمان ساخت و تست برنامه، شما آن را با فایل کلیدی که توسط Android SDK Tools ساخته شده امضا میکنید. این فایل کلید، یک Private Key با پسوردی شناخته شده دارد تا شما بدون اینکه هر بار برای اجرا و تست برنامه پسورد را تایپ کنید بتوانید به کار خود سرعت دهید. برای مثال Android Studio بهصورت خودکار برنامهٔ شما را زمانیکه آن را برای تست اجرا میکنید از محیط توسعهٔ نرمافزار امضا میکند و ممکن است در این حالت شما متوجه فرآیند امضا شدن برنامه نشوید.
بهصورت پیشفرض، تنظیمات دیباگ از یک Debug Keystore با پسوردی شناخته شده و یک Private Key با پسوردی شناخته شده استفاده میکند. شما میتوانید Debug Keystore را در مسیر زیر پیدا کنید:
امضای برنامه در Release Mode
بعد از اینکه مراحل ساخت و تست برنامه را انجام دادید لازم است بستهای که مناسب ارائه به کاربران است را تولید کنید. در این حالت شما باید برنامه را با Certificate ای تنها مختص شماست و فقط خودتان از پسورد و Private Key آن آگاه هستید امضا نمایید. بهصورت کلی این کار شامل مراحل زیر میشود:
۱- یک Keystore بسازید. Keystore یک فایل باینری است که مجموعهای از Private Keyها را در بر میگیرد. بعد از ساخت این فایل، شما باید از آن مراقبت نمایید و ترجیحا در چند جای امن نگهدارید تا احتمال از دست دادن آن را تا حد ممکن کاهش دهید.
۲- یک Private Key بسازید. این کلید نشاندهندهٔ هویت شخص یا کمپانی توسعهدهندهٔ برنامه است.
۳- پیکربندی امضا را به فایل Build اضافه کنید:
۴- پس از ساخت Keystore و Private Key، در اندروید استودیو assembleRelease را فراخوانی کنید.
نحوهٔ امضاء برنامه در Android Studio
برای اینکه برنامهٔ خود را در Release Mode در Android Studio امضا کنید، مراحل زیر را انجام دهید:
۱- در نوار بالای صفحه، گزینهٔ Build و سپس Generate Signed APK را انتخاب کنید.
۲- در پنجرهای که باز میشود گزینهٔ Create New را انتخاب کنید تا یک KeyStore جدید ایجاد شود.
۳- در پنجرهٔ ایجاد KeyStore جدید، اطلاعات مورد نیاز را ثبت کنید.
۴- بعد از تکمیل تمام اطلاعات و انتخاب یک private key مختص خودتان، مسیر ذخیرهٔ فایل APK امضا شده را تعیین کنید و دکمهٔ Finish را انتخاب کنید.
نحوه امضای برنامه در Command Line
برای امضای برنامه الزاما به Android Studio نیاز ندارید و میتوانید در Command Line با استفاده از ابزار استانداردی که Android SDK و JDK در اختیار شما قرار میدهند، بستهٔ برنامه را امضا کنید. برای امضای برنامه از طریق Command Line مراحل زیر را انجام دهید:
۱- ابتدا با استفاده از Keytool یک Private Key مختص خود تولید نمایید:
keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000
پس از اجرای دستور فوق، از شما درخواست میشود که برای Keystore و Private Key رمز عبور تعیین نمایید و همچنین نام متمایزی برای کلید وارد کنید. نامی که بهجای عبارت alias_name مینویسید، در مراحل بعدی و زمان امضای بستهٔ برنامه مورد استفاده قرار خواهد گرفت.
پس از اینکه تمامی مقادیر خواسته شده را تعیین نمودید، فایل my-release-key.keystore تولید میشود.
۲- برنامهٔ خود را در Release Mode کامپایل کنید تا فایل امضا نشدهٔ APK در اختیار شما قرار گیرد.
۳- در این مرحله میبایست با استفاده از ابزاری که jarsigner نام دارد، برنامهٔ خود را با Private Key که ساختهاید امضا نمایید:
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my-release-key.keystore my_application.apk alias_name
با اجرای دستور فوق، از شما درخواست میشود رمز عبوری که در مرحلهٔ ۱ برای keystore انتخاب کرده بودید را وارد نمایید. چنانچه رمز عبور صحیح را وارد نمایید، فایل APK مورد نظر شما با فایل کلیدی که پیشتر ساختهاید امضا خواهد شد.
۴- پیشنهاد میکنیم که در پایان از امضا شدن APK اطمینان حاصل نمایید.