ساخت و انتشار یک برنامه موبایل فرآیند تبدیل کد منبع به یک فایل قابل نصب (APK، AAB، IPA) و بارگذاری آن در فروشگاههای برنامه است. طبق Google Play Console (2025)، Android App Bundle (AAB) از آگوست 2021 فرمت اجباری برای انتشار در Google Play است. در این مقاله به بررسی فرمتهای ساخت، کامپایل، امضای کد، فرآیند انتشار و تست بتا میپردازیم.
نکات کلیدی
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 (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 — با گواهیهای مربوطه.
| پارامتر | APK | AAB | IPA |
|---|---|---|---|
| پلتفرم | Android | Android (Google Play) | iOS |
| فرمت | آرشیو ZIP | آرشیو ZIP | آرشیو ZIP |
| نصب مستقیم | بله | خیر (از طریق Google Play) | از طریق App Store / MDM |
| امضا | Keystore (JKS) | Keystore (JKS/PEPK) | Apple Certificate |
| App Thinning | خیر | بله (خودکار) | بله (Slicing، Bitcode) |
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 — یک نمایش میانی کد (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 باشد.
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 در سطح برنامه تنظیم میشوند.
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 — ابزاری برای انتشار برنامههای Android. فرآیند: ثبت حساب توسعهدهنده ($25 یک بار)، ایجاد برنامه، پر کردن فراداده (نام، توضیحات، اسکرینشاتها، دستهبندی)، بارگذاری AAB، تنظیم قیمت و توزیع، بررسی. Google برنامه را به طور خودکار (ویروسها، مطابقت با خطمشی) و برای برخی دستهبندیها به صورت دستی بررسی میکند. بررسی از چند ساعت تا 2-3 روز طول میکشد.
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 — ابزار رسمی Apple برای تست بتا برنامههای iOS. TestFlight از Internal Testing (حداکثر 100 تستر از طریق ایمیل، بدون بررسی) و External Testing (حداکثر 10,000 تستر، با بررسی Apple) پشتیبانی میکند. ساختها به مدت 90 روز در دسترس هستند و پس از آن باید ساخت جدیدی بارگذاری شود. TestFlight هنگام بارگذاری ساخت جدید، برنامه را به طور خودکار برای تسترها بهروزرسانی میکند.
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 — فرمتی برای Google Play که APK بهینه را برای هر دستگاه تولید میکند. اندازه دانلود از طریق AAB 15٪ کوچکتر است. برای Google Play، AAB اجباری است؛ برای sideloading — APK.
نمیتوانید برنامه را در Google Play بهروزرسانی کنید — باید برنامه جدیدی با package name جدید ایجاد کنید. Keystore را در مکان امنی نگه دارید (مدیر رمز عبور، Git رمزگذاریشده). Google Play App Signing (استفاده از کلیدهای Google) این خطر را کاهش میدهد.
Google Play — $25 یک بار برای حساب توسعهدهنده. App Store — $99/سال. هر دو مبلغ شامل تعداد نامحدودی برنامه هستند. برای iOS همچنین به Mac (از $999) یا اجاره Mac ابری نیاز دارید.
Staged Rollout — انتشار تدریجی بهروزرسانی: ابتدا 5٪ کاربران، سپس 20٪، 50٪ و 100٪. اگر در هر مرحلهای خرابی تشخیص داده شود، انتشار متوقف میشود. در Google Play Console در دسترس است.
برای Android — خیر، میتوانید APK را از طریق USB یا شبیهساز بدون حساب روی دستگاه نصب کنید. برای iOS — بله، بدون حساب $99/سال، برنامه فقط روی شبیهساز کار میکند، نه روی دستگاه واقعی.
خلاصه
ما یک اپلیکیشن موبایل به صورت کلید در دست توسعه خواهیم داد
IT Sectr از سال 2017 برنامههای iOS و Android را برای استارتاپها و کسبوکارها ایجاد میکند. ما به شما مشاوره میدهیم و بهترین راهحل را پیشنهاد خواهیم کرد.