
ساخت 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
لیست دانلود 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 کدنویسی کنیم.
ممنون از اینکه این مقاله را خواندید!