ساخت apk اندروید با ری اکت نیتیو و گردل

در مقاله قبل گفتیم با htmlcss و phonegap میتوان apk خروجی گرفت و اپلیکیشن اندروید ساخت. حالا میخواهیم در این مقاله بگوییم که با React Native و gradle میتوان apk ساخت. حتی بدون Android Studio.

توسعه اندروید مانند توسعه دیگر فریمورک هاست

برای ساخت apk تنها بسته های توسعه اندروید کافی هستند. منظور همان SDK است. SDK Platform و SDK Build-Tools . فقط باید مراقب نسخه اندروید باشید. اینکه از ورژن اندروید 11 استفاده میکنید مهم است. پوشه بندی را یاد بگیرید و مانند توسعه ری اکت و انگولار و ند جی اس، اندروید را با پوشه هایش و sdkmanager توسعه دهید.

نیازی به اندروید استادیو هست؟ نیازی به دستگاه متصل یا virtual هست؟

نیازی به اندروید استادیو نیست. نیازی به AVD هم نیست. نیازی به adb هم نیست. virtual devices یا connected devices هم نمیخواهد. زیرا به ترتیب system-image و android 11 را بصورت پیشنیاز لازم دارد که ما نداریم. بنابراین هربار apk خروجی گرفته و در گوشی خود تست میکنیم.

سوال: پس از تولید apk با sdk های android11 فقط در اندروید 11 میتوان apk را نصب کرد؟

خیر! من در تبلت خودم که ورژن 6 اندروید را دارد هم نصب کردم.

آغاز عملیات (برای خروجی گرفتن apk)

کافیست به ویدیو ها و نوشته ها توجه کنید و اجرا کنید.

پیشنیاز Node.js Java

در دایکومنتیشن به مقاله set up environmetn بروید. ان مقاله را اجرا کنید. نیازی نیست این بخش از این مقاله را بخوانید. فقط برای مرور نوشته شده است.

همانطور که میدانید اندروید با زبان جاوا توسعه داده میشود. برای نصب کردن زبان جاوا در ویندوز میتوان از chocolaty استفاده کرد. شبیه کامند زیر است که میتوان از سایت شکلاتی کپی کرد. همچنین میتوانید از اینجا جاوا ورژن 17 را دانلود کنید بجای اینکه با کامند زیر ورژن اول را دانلود کنید. بنابراین دو تا پوشه در program files خواهد بود یکی openjdk و دیگری java و برای JAVA_HOME میتوانید هرمسیر را انتخاب کنید.

نصب کردن chocolaty

Set-ExecutionPolicy Bypass -Scope ...

نصب کردن java و node

choco install -y nodejs.install openjdk8

گام 1: قالب اولیه react-native init

راه اندازی قالب اولیه با کامند زیر باعث میشود تا تمام پکیج های گلوبال موردنیاز در توسعه با React Native بصورت اتوماتیک نصب شوند. فقط کافیست صبر کنید.

npx react-native init app

گام 2: ساخت فایل keystore

در همان دایکومنتیشن مقاله دیگری به نام publish on playstore است. عنوان Generating an upload key را میخوانیم.

ارور: keytool در ترمینال شناخته نشده است.

برای رفع این ارور وارد عملیات زیر میشویم:

موقعیت مکانی نرم افزار keytool را کپی میکنیم

با پاورشل ادمین وارد ادرس میشویم (بهتر است ویدیو بالا را تماشا کنید)

برای فراخوانی نرم افزار اینگونه نامش را بنویسیم:

./keytool ...

گام 3: شناساندن keystore به گردل (پسورد و …)

پس از ساخته شدن فایل keystore

ان را به داخل پروژه، دایرکتوری android/app میبریم

برای شناساندن این فایل به گردل دوبار کدنویسی میشود:

یکبار در gradle.properties

یکبار در app/build.gradle

اجرا کردن گردل

گردل را در مسیر android اجرا کنیم

cd android
./gradlew bundleRelease

ارور: دانلود نشدن گردل

کافیست از پروکسی استفاده کنیم داخل فایل gradle.properties

systemProp.http.proxyHost=fodev.org
systemProp.http.proxyPort=8118
systemProp.http.nonProxyHosts=*.jitpack.io, *.maven.org
systemProp.https.proxyHost=fodev.org
systemProp.https.proxyPort=8118
systemProp.https.nonProxyHosts=*.jitpack.io, *.maven.org

ارور: دانلود نشدن bundletool.jar

هربار سعی کردم با gradlew در مسیر android بیلد بگیرم نشد. تا اینکه با نصب اندروید استادیو و امتحان کردن بیلد در انجا یک راهنمایی به سایت گردل شد. در سایت گردل نوشته بود flatDir و بصورت دستی دانلود کرده بودم تا اینجوری بیارم داخل پروژه و این راه هم ارور داد اما احتمالا باعث پاک شدن cache شد. شایدم اینبار بخاطر تنظیم proxy در کنار منوی sdk manager در اندروید استادیو بود. شانسی درست شد. و باندل تول دانلود شد.

ارور: پیدا نشدن SDK Location

نرم افزار Android SDK Release دانلود کنید و نصب کنید. (جایگزین: اندروید استادیو)

هنگام نصب مسیر را در هر جایی میتوانید تنظیم کنید. (اینجا دسکتاپ در فولدر SDKLocation قرار دادیم)

فایل local.properties را در دایکتوری android میسازیم و داخلش ادرس میدهیم:

sdk.dir=C:\\Users\\Shervin\\Desktop\\SDKLocation

حالا یکبار دیگر گردل را اجرا میکنیم.

ارور: پیدا نشدن build-tools 30.0.2

لینک دانلود Platform 30.0.0

لیست دانلود buil-tools 30.0.2 (فیلتر ش ک ن)

پس از دانلود در پوشه قرار میدهیم (طبق ویدیو)

تبدیل aab به apk

فایل aab تولید شده را از دایرکتوری app/build/output/bundle/app.aab برمیداریم

ان را به داخل یک فولدر به نام دلخواه (اینجا aab2apk) میبریم.

فایل جار bundletool دانلود شود. (فیلتر ش ک ن)

در دایرکتوری aab2apk داخل فولدری به نام خودش قرار بگیرد.

اینگونه استفاده شود تا apks بدست اید: (به مقادیر داده شده توجه شود)

java -jar "bundletool.jar" build-apks --bundle=app.aab --output=app.apks --mode=universal --ks="MyTestApp/android/app/my-upload-key.keystore" --ks-pass=pass:Shervin --ks-key-alias=my-key-alias --key-pass=pass:Shervin

برای تبدیل apks به apk (مطابق مقاله نیاز به جیسون دارد)

java -jar "bundletool/bundletool.jar" extract-apks --apks=app.apks --output-dir=/apk --device-spec=pixel2.json

اغاز توسعه adb با bluestacks

اندروید استادیو هنگامی که دکمه پلی زده میشود مترو ران نمیکند. برای ری اکت نیتیو yarn run android را اجرا میکنیم. بنابراین بهتر است adb را نصب کرده و سپس در همان visualstudio کدنویسی کنیم.

ممنون از اینکه این مقاله را خواندید!