ساخت و انتشار در توسعه موبایل: چیست، چه فرمت‌هایی و چگونه کار می‌کند

نویسنده: IT Sectr منتشر شده: 2026-04-07 زمان مطالعه: 10 دقیقه

ساخت و انتشار یک برنامه موبایل فرآیند تبدیل کد منبع به یک فایل قابل نصب (APK، AAB، IPA) و بارگذاری آن در فروشگاه‌های برنامه است. طبق Google Play Console (2025)، Android App Bundle (AAB) از آگوست 2021 فرمت اجباری برای انتشار در Google Play است. در این مقاله به بررسی فرمت‌های ساخت، کامپایل، امضای کد، فرآیند انتشار و تست بتا می‌پردازیم.

نکات کلیدی

  • APK — فایل نصب کلاسیک Android؛ AAB — فرمت مدرن برای Google Play با تولید پویای APK.
  • IPA — فایل نصب iOS، امضا شده با گواهی Apple. ساخت فقط در macOS.
  • کامپایل: JIT (Android تا 6.0)، AOT (Android 7+ ART)، Bitcode (iOS، اختیاری).
  • Code Signing — امضای اجباری برنامه با گواهی دیجیتال برای شناسایی توسعه‌دهنده.
  • TestFlight (iOS) و Internal Testing (Android) — ابزارهای تست بتا قبل از انتشار.

فرمت‌های ساخت: APK، AAB، IPA

APK در مقابل AAB

APK (Android Package Kit) — فرمت سنتی ساخت و انتشار برنامه‌های موبایل در Android. APK شامل تمام کد، منابع و مانیفست برنامه است. AAB (Android App Bundle) — فرمتی که توسط Google در سال 2018 معرفی شد و از آگوست 2021 برای برنامه‌های جدید اجباری شد. AAB به طور مستقیم نصب نمی‌شود — Google Play به صورت پویا یک APK بهینه‌شده برای هر دستگاه از AAB تولید می‌کند.

مزایای AAB: اندازه دانلود به طور متوسط 15٪ کوچک‌تر است (با ارائه فقط منابع مورد نیاز: تراکم صفحه صحیح، زبان‌ها، معماری‌های CPU). AAB همچنین از تحویل ماژولار پشتیبانی می‌کند — می‌توانید ماژول‌ها را بر اساس تقاضا (Play Feature Delivery) یا با تأخیر (Play On-Demand) بارگذاری کنید. برای توسعه‌دهندگان، AAB اجباری است. برای توزیع خارج از Google Play (sideloading، بازارچه‌ها) — فقط APK.

IPA

IPA (iOS App Store Package) — فایل نصب iOS، که یک آرشیو ZIP حاوی برنامه امضا شده است. IPA شامل پوشه Payload/ با باندل .app، Provisioning Profile و امضا است. IPA فقط در macOS از طریق Xcode ساخته می‌شود که یک آرشیو (.xcarchive) ایجاد کرده و IPA را صادر می‌کند. برای توزیع از طریق App Store، IPA با Apple Distribution Certificate امضا می‌شود. برای Ad Hoc یا Enterprise — با گواهی‌های مربوطه.

مقایسه فرمت‌های ساخت iOS و Android
پارامتر APK AAB IPA
پلتفرمAndroidAndroid (Google Play)iOS
فرمتآرشیو ZIPآرشیو ZIPآرشیو ZIP
نصب مستقیمبلهخیر (از طریق Google Play)از طریق App Store / MDM
امضاKeystore (JKS)Keystore (JKS/PEPK)Apple Certificate
App Thinningخیربله (خودکار)بله (Slicing، Bitcode)

کامپایل و بهینه‌سازی: JIT، AOT، ART، Bitcode

JIT در مقابل AOT

JIT (Just-In-Time) — کامپایل کد در حین اجرای برنامه که بر سرعت ساخت و انتشار تأثیر می‌گذارد. در Android تا نسخه 5.0 (Lollipop) از Dalvik VM با کامپایل JIT استفاده می‌شد. در هر بار راه‌اندازی برنامه، بایت‌کد DEX «در لحظه» به کد ماشین تبدیل می‌شد. disadvantage: کندی در راه‌اندازی اول و مصرف انرژی اضافی. AOT (Ahead-Of-Time) — کامپایل کد قبل از راه‌اندازی برنامه، در حین نصب. از Android 7.0 (Nougat) به بعد، ART (Android Runtime) برنامه را به طور کامل در حین نصب کامپایل می‌کند.

ART (Android Runtime) — محیط اجرایی که جایگزین Dalvik در Android 5.0 شد. ART از رویکرد ترکیبی استفاده می‌کند: کامپایل AOT در حین نصب + JIT برای متدهای پرکاربرد. این کار سرعت AOT (راه‌اندازی سریع) را با انعطاف‌پذیری JIT (بهینه‌سازی تطبیقی) ترکیب می‌کند. نتیجه: عملکرد برنامه‌های Android در مقایسه با Dalvik 20-30٪ افزایش یافت. برای توسعه‌دهندگان، انتقال به ART شفاف است — کد نیازی به تغییر ندارد.

Bitcode و App Thinning

Bitcode — یک نمایش میانی کد (IR) که Apple برای کامپایل مجدد IPA برای معماری‌های مختلف پردازنده استفاده می‌کند. Bitcode اختیاری است: برای برنامه‌های iOS به طور پیش‌فرض فعال است، برای watchOS و tvOS اجباری است. Apple می‌تواند هنگام عرضه پردازنده‌های جدید بدون مشارکت توسعه‌دهنده، Bitcode را دوباره کامپایل کند. App Thinning — فناوری Apple که شامل Slicing (ارسال فقط منابع مورد نیاز برای دستگاه) و On-Demand Resources (بارگذاری منابع در صورت تقاضا) است. App Thinning اندازه دانلود از App Store را 30-50٪ کاهش می‌دهد.

DEX — فرمت بایت‌کد برای Android که توسط ART/Dalvik اجرا می‌شود. کد منبع Kotlin/Java به فایل‌های class کامپایل می‌شود، سپس از طریق dx یا d8 (ابزار مدرن و سریع‌تر) به DEX تبدیل می‌شود. Multidex — مکانیزمی برای برنامه‌هایی که از محدودیت 65,536 متد در یک فایل DEX تجاوز می‌کنند. در پروژه‌های مدرن، multidex به طور خودکار فعال می‌شود اگر targetSdkVersion >= 21 باشد.

امضای کد: Code Signing، Keystore، Provisioning Profile

Android: Keystore

Keystore — فایلی حاوی کلید خصوصی و گواهی برای امضای برنامه Android در حین ساخت. Keystore از طریق keytool (دستور -genkey) یا Android Studio ایجاد می‌شود. مهم: Keystore قابل گم شدن نیست — بدون آن نمی‌توانید برنامه را در Google Play به‌روزرسانی کنید. پارامترهای امضا: keyAlias، keyPassword، storePassword و storeFile. فرمت: JKS (Java KeyStore) یا PEPK (Play Encrypted Private Key) برای AAB.

App Bundle ID (Android) — شناسه یکتای برنامه در نمادگذاری بسته (com.example.app). Version Code — یک عدد صحیح برای شماره‌گذاری داخلی نسخه‌ها (هر ساخت جدید آن را افزایش می‌دهد). Version Name — رشته‌ای که به کاربر نمایش داده می‌شود (1.2.3). این پارامترها در build.gradle در سطح برنامه تنظیم می‌شوند.

iOS: Apple Certificate و Provisioning Profile

Apple Certificate — گواهی دیجیتال که هویت توسعه‌دهنده را تأیید می‌کند. انواع: Development (برای اشکال‌زدایی)، Distribution (برای App Store)، Ad Hoc (برای توزیع محدود). گواهی‌ها در Apple Developer Account ایجاد شده و در Keychain دانلود می‌شوند. Provisioning Profile — فایلی که گواهی، App ID (Bundle Identifier) و لیست دستگاه‌های مجاز را به هم متصل می‌کند. بدون Provisioning Profile، برنامه روی دستگاه اجرا نخواهد شد.

Bundle ID (iOS) — شناسه یکتای برنامه (com.example.app). Build Number — شماره ساخت که با هر ساخت افزایش می‌یابد. Marketing Version — نسخه‌ای که به کاربر نشان داده می‌شود. مدیریت نسخه: برای iOS، پارامترها در Info.plist و Project Settings تنظیم می‌شوند. برای Android — در build.gradle. در IT Sectr، ما به‌روزرسانی نسخه را از طریق Fastlane خودکار می‌کنیم — این کار خطاهای انسانی را هنگام انتشار حذف می‌کند.

فرآیند انتشار در فروشگاه‌ها

Google Play Console

Google Play Console — ابزاری برای انتشار برنامه‌های Android. فرآیند: ثبت حساب توسعه‌دهنده ($25 یک بار)، ایجاد برنامه، پر کردن فراداده (نام، توضیحات، اسکرین‌شات‌ها، دسته‌بندی)، بارگذاری AAB، تنظیم قیمت و توزیع، بررسی. Google برنامه را به طور خودکار (ویروس‌ها، مطابقت با خط‌مشی) و برای برخی دسته‌بندی‌ها به صورت دستی بررسی می‌کند. بررسی از چند ساعت تا 2-3 روز طول می‌کشد.

App Store Connect

App Store Connect — پلتفرم Apple برای انتشار برنامه‌های iOS. فرآیند: حساب توسعه‌دهنده Apple ($99/سال)، ایجاد برنامه در App Store Connect، آماده‌سازی IPA در Xcode (Archive → Distribute App → App Store Connect)، بارگذاری از طریق Transporter یا Xcode، پر کردن فراداده، ارسال برای بررسی. App Review — بررسی دستی Apple ممکن است از 24 ساعت تا 7 روز طول بکشد. دلایل معمول رد: دکمه‌های غیرفعال، محتوای ناقص، درخواست مجوز بدون توضیح.

تست بتا: TestFlight، Closed/Open Beta

TestFlight (iOS)

TestFlight — ابزار رسمی Apple برای تست بتا برنامه‌های iOS. TestFlight از Internal Testing (حداکثر 100 تستر از طریق ایمیل، بدون بررسی) و External Testing (حداکثر 10,000 تستر، با بررسی Apple) پشتیبانی می‌کند. ساخت‌ها به مدت 90 روز در دسترس هستند و پس از آن باید ساخت جدیدی بارگذاری شود. TestFlight هنگام بارگذاری ساخت جدید، برنامه را به طور خودکار برای تسترها به‌روزرسانی می‌کند.

Internal / Closed / Open Beta (Android)

Internal Testing (Android) — حداکثر 100 تستر، بدون بررسی Google، ساخت بلافاصله در دسترس است. Closed Beta — حداکثر 1000 تستر از طریق ایمیل یا Google Groups، بدون بررسی. Open Beta — تستر نامحدود از طریق لینک عمومی، با بررسی Google. Staged Rollout — افزایش تدریجی درصد کاربرانی که به‌روزرسانی دریافت می‌کنند (5٪ ← 20٪ ← 50٪ ← 100٪). این امن‌ترین روش انتشار است.

App Thinning (iOS) — کاهش خودکار اندازه IPA دانلود شده: Slicing (فقط منابع مورد نیاز برای دستگاه)، Bitcode (بهینه‌سازی پردازنده)، On-Demand Resources (دانلود بر اساس تقاضا). در IT Sectr، ما از TestFlight برای تست بتا iOS و Internal Testing برای Android استفاده می‌کنیم — این به ما امکان می‌دهد مشکلات را قبل از انتشار گسترده پیدا کنیم.

سوالات متداول

تفاوت بین APK و AAB چیست؟

APK — یک فایل نصب جهانی که روی هر دستگاهی کار می‌کند. AAB — فرمتی برای Google Play که APK بهینه را برای هر دستگاه تولید می‌کند. اندازه دانلود از طریق AAB 15٪ کوچک‌تر است. برای Google Play، AAB اجباری است؛ برای sideloading — APK.

اگر Keystore گم شود چه اتفاقی می‌افتد؟

نمی‌توانید برنامه را در Google Play به‌روزرسانی کنید — باید برنامه جدیدی با package name جدید ایجاد کنید. Keystore را در مکان امنی نگه دارید (مدیر رمز عبور، Git رمزگذاری‌شده). Google Play App Signing (استفاده از کلیدهای Google) این خطر را کاهش می‌دهد.

هزینه انتشار در فروشگاه‌ها چقدر است؟

Google Play — $25 یک بار برای حساب توسعه‌دهنده. App Store — $99/سال. هر دو مبلغ شامل تعداد نامحدودی برنامه هستند. برای iOS همچنین به Mac (از $999) یا اجاره Mac ابری نیاز دارید.

Staged Rollout چیست؟

Staged Rollout — انتشار تدریجی به‌روزرسانی: ابتدا 5٪ کاربران، سپس 20٪، 50٪ و 100٪. اگر در هر مرحله‌ای خرابی تشخیص داده شود، انتشار متوقف می‌شود. در Google Play Console در دسترس است.

آیا برای تست باید حساب توسعه‌دهنده بخرم؟

برای Android — خیر، می‌توانید APK را از طریق USB یا شبیه‌ساز بدون حساب روی دستگاه نصب کنید. برای iOS — بله، بدون حساب $99/سال، برنامه فقط روی شبیه‌ساز کار می‌کند، نه روی دستگاه واقعی.

خلاصه

  • AAB — فرمت مدرن برای Google Play (اجباری از 2021). APK — برای توزیع خارج از فروشگاه.
  • IPA — فایل نصب iOS، فقط در Mac ساخته می‌شود، با Apple Certificate امضا می‌شود.
  • ART (Android Runtime) از رویکرد ترکیبی AOT + JIT استفاده می‌کند. Bitcode — نمایش میانی اختیاری برای iOS.
  • Keystore (Android) و Apple Certificate + Provisioning Profile (iOS) — اجزای اجباری امضای کد.
  • Google Play Console — $25 یک بار؛ App Store Connect — $99/سال. بررسی از چند ساعت تا یک هفته طول می‌کشد.
  • TestFlight — تست بتا iOS؛ Internal / Closed / Open Beta — برای Android.
  • امضای کد و ساخت را از طریق Fastlane خودکار کنید — این کار خطاها را حذف و انتشار را سرعت می‌بخشد.

ما یک اپلیکیشن موبایل به صورت کلید در دست توسعه خواهیم داد

IT Sectr از سال 2017 برنامه‌های iOS و Android را برای استارتاپ‌ها و کسب‌وکارها ایجاد می‌کند. ما به شما مشاوره می‌دهیم و بهترین راه‌حل را پیشنهاد خواهیم کرد.

بحث درباره پروژه