برای آمادهسازی برنامه خود برای انتشار، باید نسخه انتشار برنامه خود را پیکربندی، ساخت و آزمایش کنید. وظایف پیکربندی شامل پاکسازی اولیه کد و وظایف اصلاح کد است که به بهینهسازی برنامه شما کمک میکند. فرآیند ساخت مشابه فرآیند ساخت اشکالزدایی است و میتواند با استفاده از ابزارهای JDK و Android SDK انجام شود.
مهارتهای اندروید
مشاهده در گیتهاببررسی سیاست گوگل پلی
play-policy-insights برای بررسی انطباق برنامه خود با سیاستهای گوگل پلی استفاده کنید.android skills add play-policy-insightsوظایف تست به عنوان یک بررسی نهایی عمل میکنند و به اطمینان از عملکرد برنامه شما در شرایط دنیای واقعی مطابق انتظار کمک میکنند. فایربیس از طریق آزمایشگاه تست فایربیس، مجموعه بزرگی از دستگاههای تست فیزیکی و مجازی را ارائه میدهد که میتوانید از آنها برای بهبود کیفیت برنامه خود استفاده کنید.
وقتی آمادهسازی برنامهتان برای انتشار تمام شد، یک فایل APK امضا شده دارید که میتوانید آن را مستقیماً در اختیار کاربران قرار دهید یا از طریق یک بازار برنامه مانند Google Play توزیع کنید.
این سند خلاصهای از وظایف اصلی مورد نیاز برای آمادهسازی برنامه شما برای انتشار را ارائه میدهد. وظایف شرح داده شده در این صفحه، صرف نظر از نحوه انتشار یا توزیع آنها برای کاربران، برای همه برنامههای اندروید اعمال میشود. اگر برنامه خود را از طریق Google Play منتشر میکنید، بخش «انتشار با اطمینان» را مطالعه کنید.
توجه: به عنوان یک روش بهتر، قبل از انجام وظایف ذکر شده در این صفحه، مطمئن شوید که برنامه شما تمام معیارهای انتشار شما را برای عملکرد، کارایی و پایداری برآورده میکند.

شکل ۱. آمادهسازی برای انتشار، یک وظیفه توسعهای ضروری است و اولین گام در فرآیند انتشار محسوب میشود.
وظایف آماده سازی برای انتشار
برای انتشار برنامه خود به کاربران، باید یک بسته آماده انتشار ایجاد کنید که کاربران بتوانند آن را روی دستگاههای اندروید خود نصب و اجرا کنند. بسته آماده انتشار شامل همان اجزای فایل APK اشکالزدایی شده - کد منبع کامپایل شده، منابع، فایل مانیفست و غیره - است و با استفاده از همان ابزارهای ساخت ساخته شده است. با این حال، برخلاف فایل APK اشکالزدایی شده، فایل APK آماده انتشار با گواهی شخصی شما امضا شده و با ابزار zipalign بهینه شده است.

شکل ۲. پنج وظیفه اصلی برای آمادهسازی برنامه شما برای انتشار وجود دارد.
اگر برنامه خود را با اندروید استودیو میسازید، وظایف امضا و بهینهسازی معمولاً بدون مشکل انجام میشوند. به عنوان مثال، میتوانید از اندروید استودیو به همراه فایلهای ساخت Gradle برای کامپایل، امضا و بهینهسازی برنامه خود به طور همزمان استفاده کنید. همچنین میتوانید فایلهای ساخت Gradle را طوری پیکربندی کنید که هنگام ساخت از خط فرمان نیز همین کار را انجام دهند. برای جزئیات بیشتر در مورد استفاده از فایلهای ساخت Gradle، به بخش پیکربندی ساخت خود مراجعه کنید.
برای آمادهسازی برنامه خود برای انتشار، معمولاً پنج وظیفه اصلی را انجام میدهید، همانطور که در شکل 2 نشان داده شده است. هر وظیفه اصلی ممکن است شامل یک یا چند وظیفه کوچکتر باشد، بسته به نحوه انتشار برنامه شما. به عنوان مثال، اگر برنامه خود را از طریق Google Play منتشر میکنید، ممکن است بخواهید هنگام پیکربندی برنامه خود برای انتشار، قوانین فیلترینگ ویژهای را به مانیفست خود اضافه کنید. به طور مشابه، برای رعایت دستورالعملهای انتشار Google Play، ممکن است مجبور شوید هنگام جمعآوری مطالب برای انتشار، تصاویر صفحه را تهیه کرده و متن تبلیغاتی ایجاد کنید.
شما معمولاً وظایف ذکر شده در شکل 2 را پس از اشکالزدایی و آزمایش کامل برنامه خود انجام میدهید. SDK اندروید شامل ابزارهای متعددی است که به شما در آزمایش و اشکالزدایی برنامههای اندروید کمک میکند. برای اطلاعات بیشتر، به Debug your app و Test your app مراجعه کنید.
جمعآوری مواد و منابع
برای آمادهسازی برنامهتان برای انتشار، باید چندین مورد پشتیبانی را جمعآوری کنید. حداقل این موارد شامل کلیدهای رمزنگاری برای امضای برنامه و یک آیکون برنامه میشود. همچنین ممکن است بخواهید یک توافقنامه مجوز کاربر نهایی را نیز ضمیمه کنید.
کلیدهای رمزنگاری
اندروید ایجاب میکند که همه فایلهای APK قبل از نصب روی دستگاه یا بهروزرسانی، به صورت دیجیتالی با یک گواهی امضا شوند. برای فروشگاه گوگل پلی ، همه برنامههای ایجاد شده پس از آگوست 2021 ملزم به استفاده از امضای برنامه Play هستند. اما آپلود AAB شما در کنسول Play همچنان مستلزم آن است که آن را با گواهی توسعهدهنده خود امضا کنید. برنامههای قدیمیتر هنوز هم میتوانند خود را امضا کنند، اما چه از امضای برنامه Play استفاده کنید و چه خودتان آن را امضا کنید، باید قبل از آپلود برنامه، آن را امضا کنید.
برای کسب اطلاعات در مورد الزامات گواهی، به امضای برنامه خود مراجعه کنید.
مهم: برنامه شما باید با یک کلید رمزنگاری امضا شود که مدت اعتبار آن پس از ۲۲ اکتبر ۲۰۳۳ پایان یابد.
همچنین اگر برنامه شما به سرویسی دسترسی دارد یا از کتابخانه شخص ثالثی استفاده میکند که شما را ملزم به استفاده از کلیدی میکند که بر اساس کلید خصوصی شما ساخته شده است، ممکن است مجبور شوید کلیدهای انتشار دیگری نیز دریافت کنید.
آیکون برنامه
آیکون برنامه شما به کاربران کمک میکند تا برنامه شما را در صفحه اصلی دستگاه و در پنجره لانچر شناسایی کنند. همچنین در مدیریت برنامهها، دانلودهای من و جاهای دیگر ظاهر میشود. علاوه بر این، سرویسهای انتشار مانند Google Play آیکون شما را به کاربران نمایش میدهند. مطمئن شوید که آیکون برنامه شما مطابق با دستورالعملهای پیشنهادی آیکون است.
توجه: اگر برنامه خود را در گوگل پلی منتشر میکنید، باید یک نسخه با وضوح بالا از آیکون خود ایجاد کنید. برای اطلاعات بیشتر به بخش افزودن پیشنمایش برای نمایش برنامه خود مراجعه کنید.
توافقنامه مجوز کاربر نهایی
تهیه یک توافقنامه مجوز کاربر نهایی (EULA) برای برنامه خود را در نظر بگیرید. EULA میتواند به محافظت از شخص، سازمان و مالکیت معنوی شما کمک کند و توصیه میکنیم که آن را به همراه برنامه خود ارائه دهید.
مواد متفرقه
همچنین ممکن است لازم باشد برای تبلیغ برنامه خود، مطالب تبلیغاتی و بازاریابی تهیه کنید. به عنوان مثال، اگر برنامه خود را در Google Play منتشر میکنید، باید متن تبلیغاتی تهیه کنید و از برنامه خود اسکرینشات تهیه کنید. برای اطلاعات بیشتر، به بخش افزودن پیشنمایش برای نمایش برنامه خود مراجعه کنید.
برنامه خود را برای انتشار پیکربندی کنید
پس از جمعآوری تمام مطالب پشتیبان، میتوانید پیکربندی برنامه خود را برای انتشار شروع کنید. این بخش خلاصهای از تغییرات پیکربندی را که توصیه میکنیم قبل از انتشار برنامه خود در کد منبع، فایلهای منبع و مانیفست برنامه خود اعمال کنید، ارائه میدهد.
اگرچه بیشتر تغییرات پیکربندی ذکر شده در این بخش اختیاری هستند، اما به عنوان شیوههای خوب کدنویسی در نظر گرفته میشوند و ما شما را به اجرای آنها تشویق میکنیم. در برخی موارد، ممکن است این تغییرات پیکربندی را به عنوان بخشی از فرآیند توسعه خود انجام داده باشید.
یک شناسه برنامه مناسب انتخاب کنید
مطمئن شوید که شناسه برنامهای را انتخاب میکنید که در طول عمر برنامه شما مناسب باشد. شما نمیتوانید شناسه برنامه را پس از توزیع برنامه به کاربران تغییر دهید. برای تنظیم آن، از ویژگی applicationId در فایل build.gradle یا build.gradle.kts در سطح ماژول استفاده کنید. برای اطلاعات بیشتر، به بخش تنظیم شناسه برنامه مراجعه کنید.
اشکال زدایی را خاموش کنید
برای پیکربندی قابلیت اشکالزدایی APK، از پرچم debuggable برای Groovy یا پرچم isDebuggable برای اسکریپت Kotlin استفاده کنید:
کاتلین
android { ... buildTypes { release { isDebuggable = false ... } debug { isDebuggable = true ... } } ... }
گرووی
android { ... buildTypes { release { debuggable false ... } debug { debuggable true ... } } ... }
فعال کردن و پیکربندی کوچکسازی برنامه
بسیاری از بهینهسازیهای زیر را میتوان با فعال کردن قابلیت کوچکسازی برای نسخه نهایی، خودکارسازی کرد. به عنوان مثال، میتوانید قوانین ProGuard را برای حذف دستورات لاگ اضافه کنید و کوچککننده، کدها و منابع بلااستفاده را شناسایی و حذف میکند. کوچککننده همچنین میتواند نام کلاسها و متغیرها را با نامهای کوتاهتر جایگزین کند تا اندازه DEX بیشتر کاهش یابد.
خاموش کردن ثبت وقایع
قبل از ساخت برنامه برای انتشار، ثبت وقایع (logging) را غیرفعال کنید. میتوانید با حذف فراخوانیهای متدهای Log در فایلهای منبع، ثبت وقایع را غیرفعال کنید. همچنین، هرگونه فایل log یا فایلهای تست استاتیک ایجاد شده در پروژه خود را حذف کنید.
همچنین، تمام فراخوانیهای ردیابی Debug که به کد خود اضافه کردهاید، مانند فراخوانیهای متد startMethodTracing() و stopMethodTracing() را حذف کنید.
مهم: اگر از WebView برای نمایش محتوای پولی استفاده میکنید یا اگر از رابطهای جاوا اسکریپت استفاده میکنید، مطمئن شوید که اشکالزدایی را برای برنامه خود غیرفعال کردهاید، زیرا اشکالزدایی به کاربران اجازه میدهد اسکریپتها را تزریق کرده و محتوا را با استفاده از Chrome DevTools استخراج کنند. برای غیرفعال کردن اشکالزدایی، از متد WebView.setWebContentsDebuggingEnabled() استفاده کنید.
دایرکتوریهای پروژه خود را تمیز کنید
پروژه خود را پاکسازی کنید و مطمئن شوید که با ساختار دایرکتوری شرح داده شده در نمای کلی پروژهها مطابقت دارد. باقی گذاشتن فایلهای سرگردان یا یتیم در پروژه میتواند مانع از کامپایل برنامه شما شود و باعث شود برنامه شما به طور غیرقابل پیشبینی رفتار کند. حداقل، کارهای پاکسازی زیر را انجام دهید:
- محتویات دایرکتوریهای
cpp/،lib/وsrc/خود را بررسی کنید. دایرکتوریcpp/باید فقط شامل فایلهای منبع مرتبط با Android NDK ، مانند فایلهای منبع C یا C++، فایلهای هدر یا makefiles باشد. دایرکتوریlib/باید فقط شامل فایلهای کتابخانه شخص ثالث یا فایلهای کتابخانه خصوصی، از جمله کتابخانههای اشتراکی و استاتیک از پیش ساخته شده، باشد. دایرکتوریsrc/باید فقط شامل فایلهای منبع برنامه شما (فایلهای جاوا، کاتلین و AIDL) باشد. دایرکتوریsrc/نباید حاوی هیچ فایل JAR باشد. - پروژه خود را از نظر فایلهای داده خصوصی یا اختصاصی که برنامه شما از آنها استفاده نمیکند بررسی کنید و آنها را حذف کنید. برای مثال، در پوشه
res/پروژه خود به دنبال فایلهای drawable قدیمی، فایلهای layout و فایلهای values که دیگر استفاده نمیکنید بگردید و آنها را حذف کنید. - دایرکتوری
lib/را برای کتابخانههای آزمایشی بررسی کنید و اگر دیگر توسط برنامه شما استفاده نمیشوند، آنها را حذف کنید. - محتویات دایرکتوری
assets/و دایرکتوریres/raw/خود را برای یافتن فایلهای خام asset و فایلهای استاتیکی که باید قبل از انتشار بهروزرسانی یا حذف شوند، بررسی کنید.
تنظیمات مانیفست و Gradle build خود را بررسی و بهروزرسانی کنید.
تأیید کنید که موارد زیر در فایلهای manifest و build به درستی تنظیم شدهاند:
- عنصر
<uses-permission>فقط مجوزهایی را مشخص کنید که مرتبط و مورد نیاز برنامه شما هستند.
- ویژگیهای
android:iconوandroid:labelشما باید مقادیری را برای این ویژگیها که در عنصر
<application>قرار دارند، مشخص کنید. - ویژگیهای
versionCodeوversionNameتوصیه میکنیم برای این ویژگیها که در فایل
build.gradleیاbuild.gradle.ktsدر سطح ماژول برنامه قرار دارند، مقادیری را مشخص کنید. برای اطلاعات بیشتر، به بخش «نسخهبندی برنامه» مراجعه کنید.
چندین عنصر فایل ساخت اضافی وجود دارد که میتوانید در صورت انتشار برنامه خود در Google Play تنظیم کنید. به عنوان مثال، ویژگیهای minSdk و targetSdk که در فایل build.gradle یا build.gradle.kts در سطح ماژول برنامه قرار دارند. برای اطلاعات بیشتر در مورد این موارد و سایر تنظیمات Google Play، به فیلترهای Google Play مراجعه کنید.
رسیدگی به مشکلات سازگاری
اندروید ابزارها و تکنیکهای متعددی را برای سازگاری برنامه شما با طیف وسیعی از دستگاهها ارائه میدهد. برای اینکه برنامه شما برای بیشترین تعداد کاربران در دسترس باشد، موارد زیر را در نظر بگیرید:
- پشتیبانی از پیکربندی چندین صفحه نمایش را اضافه کنید.
- مطمئن شوید که بهترین شیوهها را برای پشتیبانی از چندین صفحه نمایش رعایت میکنید. با پشتیبانی از پیکربندیهای چندین صفحه نمایش، میتوانید برنامهای ایجاد کنید که به درستی کار کند و در هر اندازه صفحه نمایشی که توسط اندروید پشتیبانی میشود، خوب به نظر برسد.
- اپلیکیشن خود را برای نمایشگرهای بزرگتر بهینه کنید.
- شما میتوانید برنامه خود را طوری بهینه کنید که در دستگاههایی با نمایشگرهای بزرگ مانند تبلتها و گوشیهای تاشو به خوبی کار کند. به عنوان مثال، طرحبندیهای فهرست-جزئیات میتوانند قابلیت استفاده در صفحههای نمایش بزرگتر را بهبود بخشند.
- استفاده از کتابخانههای Jetpack را در نظر بگیرید.
- جتپک مجموعهای از کتابخانهها است که به توسعهدهندگان کمک میکند تا از بهترین شیوهها پیروی کنند، کدهای تکراری را کاهش دهند و کدی بنویسند که به طور مداوم در نسخهها و دستگاههای مختلف اندروید کار کند.
بهروزرسانی URLها برای سرورها و سرویسها
اگر برنامه شما به سرورها یا سرویسهای راه دور دسترسی دارد، مطمئن شوید که از URL یا مسیر اصلی برای سرور یا سرویس استفاده میکنید و نه از URL یا مسیر آزمایشی.
اجرای مجوز برای گوگل پلی
اگر یک برنامه پولی را از طریق گوگل پلی منتشر میکنید، اضافه کردن پشتیبانی از مجوز گوگل پلی را در نظر بگیرید. مجوز به شما امکان میدهد دسترسی به برنامه خود را بر اساس اینکه آیا کاربر فعلی آن را خریداری کرده است یا خیر، کنترل کنید. استفاده از مجوز گوگل پلی اختیاری است، حتی اگر برنامه خود را از طریق گوگل پلی منتشر میکنید.
برای اطلاعات بیشتر در مورد سرویس صدور مجوز گوگل پلی و نحوه استفاده از آن در برنامه خود، به بخش صدور مجوز برنامه مراجعه کنید.
برنامه خود را برای انتشار بسازید
پس از اتمام پیکربندی برنامه، میتوانید آن را در یک فایل APK آماده انتشار که امضا و بهینهسازی شده است، بسازید. JDK شامل ابزارهایی برای امضای فایل APK (Keytool و Jarsigner) است؛ Android SDK شامل ابزارهایی برای کامپایل و بهینهسازی فایل APK است. اگر از اندروید استودیو استفاده میکنید یا از سیستم ساخت Gradle از خط فرمان استفاده میکنید، میتوانید کل فرآیند ساخت را خودکار کنید. برای اطلاعات بیشتر در مورد پیکربندی ساختهای Gradle، به Configure build variants مراجعه کنید.
اگر از یک سیستم یکپارچهسازی مداوم استفاده میکنید، میتوانید وظیفهای را برای خودکارسازی فرآیند انتشار خود پیکربندی کنید. این محدود به ساخت APK یا AAB انتشار شما نیست. همچنین میتوانید آن را طوری پیکربندی کنید که بهطور خودکار مصنوعات ساخت را در Play Console بارگذاری کند.
ساخت با اندروید استودیو
شما میتوانید از سیستم ساخت Gradle که با اندروید استودیو یکپارچه شده است، برای ساخت یک فایل APK آماده انتشار که با کلید خصوصی شما امضا شده و بهینه شده است، استفاده کنید. برای یادگیری نحوه تنظیم و اجرای ساختها از اندروید استودیو، به بخش «ساخت و اجرای برنامه» مراجعه کنید.
فرآیند ساخت فرض میکند که شما یک گواهی و کلید خصوصی مناسب برای امضای برنامه خود دارید. اگر گواهی و کلید خصوصی مناسبی ندارید، اندروید استودیو میتواند به شما در ایجاد آن کمک کند. برای اطلاعات بیشتر در مورد فرآیند امضا، به بخش امضای برنامه خود مراجعه کنید.
آمادهسازی سرورها و منابع خارجی
اگر برنامه شما به یک سرور راه دور متکی است، مطمئن شوید که سرور امن است و برای استفاده در محیط عملیاتی پیکربندی شده است. این امر به ویژه در صورتی که در حال پیادهسازی پرداخت درون برنامهای در برنامه خود هستید و مرحله تأیید امضا را روی یک سرور راه دور انجام میدهید، بسیار مهم است.
همچنین، اگر برنامه شما محتوا را از یک سرور راه دور یا یک سرویس بلادرنگ (مانند فید محتوا) دریافت میکند، مطمئن شوید که محتوایی که ارائه میدهید بهروز و آماده تولید است.
برنامه خود را برای انتشار آزمایش کنید
آزمایش نسخه آزمایشی برنامه شما به شما کمک میکند تا مطمئن شوید که برنامه شما به درستی تحت شرایط واقعی دستگاه و شبکه اجرا میشود. در حالت ایدهآل، برنامه خود را حداقل روی یک دستگاه با اندازه گوشی و یک دستگاه با اندازه تبلت آزمایش کنید تا تأیید کنید که عناصر رابط کاربری شما به درستی اندازهگذاری شدهاند و عملکرد و راندمان باتری برنامه شما قابل قبول است. آزمایشگاه تست Firebase همچنین میتواند برای آزمایش در انواع مختلف دستگاهها و نسخههای سیستم عامل اندروید مفید باشد.
به عنوان نقطه شروع برای آزمایش، به کیفیت برنامه اصلی مراجعه کنید. وقتی آزمایش را تمام کردید و از عملکرد صحیح نسخه آزمایشی برنامه خود راضی بودید، میتوانید برنامه خود را برای کاربران منتشر کنید. برای اطلاعات بیشتر، به انتشار برنامه خود برای کاربران مراجعه کنید.