ساخت فایل (گرفتن خروجی) APK و AAB در اندروید استودیو
در این مبحث ابتدا به معرفی پکیج فایلهای APK و AAB پرداخته سپس نحوه گرفتن خروجی و یا به عبارتی ساخت فایل APK و AAB از پروژه اندرویدی در محیط اندروید استودیو به همراه نحوه ساخت امضای برنامه را بررسی خواهیم کرد.
فرمتهای APK و AAB
به نام خدا. اگر با سیستم عامل اندروید آشنایی مختصری داشته باشید حتما پسوند apk (مخفف Android application package) برایتان آشناست. کاربر چه به صورت مستقیم و چه از طریق اپ استورهای اندرویدی (مانند گوگل پلی، بازار و…) بخواهد اپلیکیشنی را روی دیوایس خود نصب کند، ابتدا میبایست فایل نصبی آن را در اختیار داشته باشد. در واقع در حالت نصب از طریق اپ استور نیز ابتدا بسته نصبی با پسوند apk روی دیوایس بارگذاری و سپس عملیات نصب آغاز می شود. بنابراین شما به عنوان توسعه دهنده اندروید باید در مرحله نهایی از پروژه خود خروجی apk گرفته و سپس به مشتری عرضه کنید. در این جلسه از پروژه ای که قبلا ساختهام استفاده میکنم.
آشنایی با build.gradle
ابتدا به بررسی build.gradle (Module: app) می پردازم:
محتویات build.gradle من به اینصورت است:
apply plugin: 'com.android.application' android { compileSdkVersion 28 defaultConfig { applicationId "ir.android_studio.simpleretrofit" minSdkVersion 19 targetSdkVersion 28 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation 'com.android.support:appcompat-v7:28.0.0' }
اگر به خاطر داشته باشید موقع ساخت پروژه جدید، فقط Minimum SDK را تعیین کردیم. من API 19 را به عنوان Minimum API این پروژه درنظر گرفته بودم که در کد بالا با minSdkVersion مشخص شده. compileSdkVersion و targetSdkVersion هردو در هنگام ساخت پروژه به صورت پیش فرض روی آخرین API ایی که در SDK نصب شده و با سایر ابزار مانند Build Tools سازگار است، تنظیم میشود. compileSdkVersion تعیین میکند پروژه با چه API ایی کامپایل شود و targetSdkVersion نیز تعیین می کند هدف ما چه نسخهای از اندروید است که معمولا نسخه هدف توسعه دهندگان، آخرین نسخه منتشر شده از اندروید است (مگر در مواقع خاص که نسخهای پایینتر از نسخه نهایی مدنظر توسعه دهنده میباشد).
versionCode و versionName مربوط به ورژن اپلیکیشن منتشر شده هستند. ما اولین نسخه از اپلیکیشن خود را با ورژن ۱ برای کاربران منتشر میکنیم. در آینده هربار که نیاز به بروزرسانی اپ و انتشار مجدد آن باشد، لازم است ورژن را یک واحد بالا ببریم. یعنی در انتشار اولین بروزرسانی اپلیکیشن برای کاربر، باید versionCode 1 را با versionCode 2 جایگزین کرد و به همین ترتیب برای سایر بروزرسانی ها. سیستم عامل اندروید از این طریق تشخیص می دهد بسته نصبی که کاربر قصد نصب آن را دارد و نسخه ای از آن قبلا روی دیوایس نصب شده، ورژن جدیدتر است و آنرا جایگزین نسخه قبل میکند.
versionName هم مرتبط با versionCode است با این تفاوت که فقط برای نمایش به کاربر استفاده شده و تاثیری در عملکرد بروزرسانی ندارد. مقدار versionCode از نوع عدد صحیح و versionName از نوع رشتهای میباشد. یعنی versionCode را قبل از هر انتشار نسخه جدید باید یک واحد عددی اضافه کنیم اما versionName به اختیار توسعه دهنده است. به عنوان مثال ممکن است یک توسعه دهنده برای انتشار پنجمین نسخه اپلیکیشن برای هردو گزینه Code و Name مقدار ۵ را بکار ببرد. اما عموما بیشتر توسعه دهندگان آپدیت های جزئی (که عمدتا رفع اشکالات است) را در واحدهای اعشار به کاربر نشان می دهند و افزایش واحد اصلی را به انتشار آپدیتهای کلی و بزرگ اختصاص میدهند.
به عنوان مثال من نسخه ۱ اپلیکیشن را منتشر کردهام. یک باگ گزارش شده و آن را رفع میکنم. Name را از ۱٫۰ به ۱٫۱ تغییر می دهم. به همین ترتیب ۴ مرتبه دیگر نیاز به اصلاحات و انتشار نسخه جدید دارم که هربار اعشار را یک واحد افزایش دادهام و نهایتا به ۱٫۵ میرسد. حالا بعد از مدتی تصمیم دارم تغییرات گستردهای در اپلیکیشن لحاظ کرده و امکانات جدیدی به آن اضافه کنم. در اینجا ترجیح میدهم به جای ۱٫۶، ورژن ۲٫۰ را به کاربر نمایش دهم.
مانند versionCode و versionName سایر مواردی که به بررسی آنها پرداختم نیز قابل تغییر هستند. به عنوان مثال ممکن است بخواهم minSdkVersion را از ۱۹ به ۲۰ تغییر دهم و … که پس از اعمال تغییرات با زدن گزینه Sync، پروژه سینک و تغییرات اعمال میشود.
ساخت فایل خروجی APK یا AAB
حالا می خواهم از پروژه خروجی apk یا aab بگیرم:
برای گرفتن خروجی دو گزینه Build Bundle / APK و Generate Signed Bundle / APK در اختیار داریم.
جهت انتشار اپلیکیشن در اپ استورها، لازم است آنرا امضا (Sign) کنیم و اپ استورها اپلیکیشنی که امضا نشده باشد را نمیپذیرند. بنابراین گزینه Build Bundle / APK تنها زمانی کاربرد دارد که بخواهیم اپلیکیشن را روی دیوایس خودمان تست کنیم. لذا برای انتشار اپلیکیشن، خروجی امضا شده میگیریم یعنی Generate Signed Bundle / APK:
در این مرحله نوع خروجی را تعیین میکنیم که از نوع aab باشد یا apk. من گزینه دوم را انتخاب میکنم.
امضایی که میسازیم به صورت یک فایل با پسوند jks ذخیره میشود. این امضا را میتوانیم برای سایر اپلیکیشنهای خود نیز استفاده کنیم. گزینه Create new را انتخاب کرده و در پنجره جدید اطلاعات لازم برای ساخت کلید امضا را وارد میکنم:
Key store path مربوط به تعیین محل ذخیره شدن فایل امضا است. توسط گزینه “…” سمت راست فیلد، وارد پنجره انتخاب مسیر شده و مسیری دلخواه انتخاب میکنم:
در انتهای پنجره در قسمت File name برای فایل امضای خود یک نام تعیین میکنم. سپس یک پسورد تعیین و به جهت تایید دوبار تکرار می کنم. در دفعات بعد که نیاز به استفاده از این امضا داشته باشم این رمز عبور از من پرسیده میشود.
قسمت بعد Alias یا نام مستعار است که یک نام دلخواه وارد می کنم و در خط بعد برای نام مستعار هم نیاز به تعریف رمز عبور دارم. گزینه Validity اشاره به زمان معتبر بودن امضا بر حسب سال است که پیش فرض عدد ۲۵ قرار داده شده. در قسمت Certificate اطلاعاتی از جمله نام و نام خانوادگی، ارگان، شهر، استان و کد کشور از ما خواسته شده که تکمیل حداقل یک مورد الزامیست.
با تایید فرم ، امضا ایجاد شده و به پنجره قبل باز میگردم:
امضای من با نام mysignature.jks ایجاد شد و برای دفعات بعد یا سایر پروژهها با انتخاب گزینه Choose existing میتوانیم مجدد از این امضاء استفاده کنیم.
با تیک زدن Remember passwords در دفعات بعد نیاز به وارد کردن مجدد رمزهای عبور نیست (این قابلیت باعث نشود تا رمز عبوری که تعیین کرده اید را فراموش کنید. مجدد تاکید میکنم این رمز عبور را حتما در جایی یادداشت کنید).
Destination Folder مربوط به محل ذخیره سازی خروجی apk یا aab است:
با توجه به اینکه قصد انتشار اپلیکیشن را دارم، در قسمت Build Type گزینه release باید انتخاب شده باشد. در بخش Signature Versions دو گزینه Jar Signature و Full APK Signature وجود دارد. من هردو گزینه را انتخاب کرده، منتظر می مانم تا عمل Generate انجام شود.
ساخت apk با موفقیت انجام شد:
حالا اپلیکیشن من آماده انتشار و نصب روی دیوایس کاربران است.
در کنار فایل apk یک فایل دیگر با نام output.json ساخته شده که حاوی اطلاعات فایل نصبی (مانند ورژن و..) است. اگر درباره JSON اطلاعاتی ندارید، این فایل را نادیده بگیرید. جهت آشنایی با فرمت JSON این مطلب را دنبال کنید.
گرفتن خروجی aab نیز به همین صورت است با این تفاوت که در مرحله اول گزینه Android App Bundle را انتخاب میکنیم:
تعداد صفحات : ۱۴
حجم : ۱ مگابایت
قیمت : رایگان
تاریخ بروزرسانی آموزش : ۹۹/۱۱/۱۲
دانلود رایگان با حجم ۱ مگابایت لینک کمکی