آموزش ساخت فایل aab به زبان ساده
در حاصل حاضر اکثر توسعهدهندگان اپلیکیشن از فرمت باندل اپلیکیشن اندروید یا همان aab. برای ایجاد برنامه خود استفاده میکنند. در این مطلب با آموزش ساخت فایل aab از طریق خط فرمان همراه ما باشید.
آموزش ساخت فایل aab
فرایند ساخت پروژههای اندرویدی معمولا توسط گردل (Gradle) مدیریت میشود. با این حال میتوان بدون استفاده از این سیستم و تنها از طریق خط فرمان، یک باندل اپلیکیشن اندروید ( aab.* ) را ایجاد کرد.
باندل اپلیکیشن اندروید (یا همان فایل aab.) در حال حاضر فرمت دلخواه توسعهدهندگان برای ایجاد اپلیکیشن در گوگل پلی است. این فرمت شامل تمام منابع و کدهای کامپایل شده اپلیکیشن میشود. فایل aab به ناشر اپلیکیشن اجازه میدهد تا دادههای اضافی را حذف کرده و بدین ترتیب، علاوه بر افزایش سرعت دانلود، در مصرف پهنای باند و حافظه نیز صرفهجویی شود.
همچنین بخوانید: زبانهای برنامهنویسی پرطرفدار در ایران.
ناگفته نماند که یک محیط توسعه یکپارچه نظیر Android Studio به طور خودکار و تنها با یک کلیک میتواند فایل aab را به وجود آورد. اما گاهی اوقات لازم است این کار را به صورت دستی و تنها از طریق خط فرمان انجام دهید، مخصوصا اگر در حال ساخت ابزار انحصاری خود برای ایجاد اپلیکیشن های اندرویدی هستند.
مرحله 1- برای ساخت فایل aab. از طریق خط فرمان، ابتدا ابزارهای لازم را مهیا میکنیم، یعنی aapt2 و bundletool. aapt2 نسخه دوم ابزار Android Asset Packaging بوده و از اینجا قابل دانلود است. فایل jar دانلود شده، شامل فایل اجراشدنی aapt2 میشود.
از طرف دیگر، bundletool برای کار با باندل های اپلیکیشن مورداستفاده قرار میگیرد و میتوانید آن را از اینجا دانلود کنید. ترجیحا به سراغ نسخه -all-0-10-0.jar بروید، چون میتواند با java -jar path/to/above/bindletool.jar کار کنید.
علاوه بر دو ابزار بالا، ساخت فایل aab. همچنین به javac (کامپایلر جاوا)، jarsigner (بخشی از JDK)، dx (بخشی از ابزار ساخت Android SDK، برای تبدیل بایت کد جاوا به بایت کد Dalvik) و zip/unzip احتیاج دارد.
مرحله 2- تمام منابع را به وسیله aapt2 کامپایل کنید. تکتک فایلهای منبع ماژول اصلیتان باید کامپایل شوند.
aapt2 compile project/app/src/main/res/**/* -o compiled_resources
با این کار، دایرکتوری compiled_resources حاوی فایلهایی مثل layout_activity_main.xml.flat میشود.
مرحله 3- منابع را در یک APK موقتی لینک کرده، فایل R.java را ساخته و منابع را به فرمت پروتوباف تبدیل کنید.
aapt2 link --proto-format -o temporary.apk \
-I android_sdk/platforms/android-NN/android.jar \
--manifest project/app/src/main/AndroidManifest.xml \
-R compiled_resources/*.flat \
--auto-add-overlay --java gen
با این کار، فایل temporary.apk ساخته میشود که حاوی منابع و منیفست در فرمت پروتوباف (پروتکل بافرز گوگل) است. همچنین فایل R.java (در gen/my/package/R.java) ساخته میشود که توسط کد جاوا برای ارجاع به منابع مورداستفاده قرار میگیرد. این فایل باید حاوی android.jar برای پلتفرم هدف باشد (بخشی از Android SKD).
مرحله 4- حال، فایلهای منبع جاوا را کامپایل میکنیم. از آنجا که R.java ساخته شده است، به راحتی میتوان این کار را انجام داد.
javac -source 1.7 -target 1.7 \
-bootclasspath $JAVA_HOME/jre/lib/rt.jar \
-classpath android_sdk/platforms/android-NN/android.jar \
-d classes \
gen/**/*.java project/app/src/main/java/**/*.java
تکه کد بالا، فایلهای class. را در دایرکتوری classes ایجاد میکند. بر اساس وابستگیها، مسیر کلاس (classpath) میتواند شامل pathها یا jarهای دیگری باشد.
مرحله 5- در این هنگام باید فایل APK موقتی (که قبلا ساخته شده) را استخراج کنیم. پس:
unzip temporary.apk -d staging
یک APK تنها یک فایل زیپ نمایشی است. کد بالا باعث میشود تا تمام محتویات temporary.apk در دایرکتوری staging قرار داده شود.
مرحله 6- حال باید فایل staging/AndroidManifest.xml را به فایل staging/manifest انتقال دهیم (دایرکتوری که باید ساخته شود). سپس stating/dex/ را ایجاد کرده و از dx برای تبدیل بایت کد جاوا (در فایلهای class.) به بایت کد دالویک (مناسب برای اجرا روی اندروید) استفاده میکنیم.
dx --dex --output=staging/dex/classes.dex classes/
مرحله 7- محتوای ماژول اصلی را به یک فایل زیپ تبدیل میکنیم:
cd staging; zip -r ../base.zip *
مرحله 8- باندل را میسازیم:
bundletool build-bundle --modules=base.zip --output=bundle.aab
مرحله 9- و در نهایت آن را امضا میکنیم:
jarsigner -keystore mykeystore.jks bundle.aab my-id
به همین راحتی میتوانید یک فایل aab. را به وجود آورید.