خروجی apk از اپ ریکت نیتیو(Release apk from ReactNative)

به نام خدا

با سلام خدمت دوستان گرامی و گرانقدر;
خوب همونطور که همتون میدونید و جریان هستید و طی پست های قبلی که نوشتم(نصب ری اکت نیتیو اندروید و نصب ری اکت نیتیو آی او اس) حالا که ما اپ خودمون و نوشتیم و آماده شده باید یک نسخه از اون رو برای نصب نهایی و قرار دادن روی اپ استورها آماده کنیم و طبیعتا به همین راحتی ها هم که فک میکنید نیست و یک سری مراحل داره .

حالا با من همراه باشین تا با هم این کارو انجام بدیم.

اولین قدم اینه که باید یک فایل مخصوصی رو که اپ ما بهش نیاز داره رو تولید کنیم.

پس از جستجوی ویندوز `cmd` رو جستجو میکنیم و روش کلیک راست میکنیم و اونو به حالت Run as Administrator باز میکنیم و آدرس و هرجا که دوس دارید قرار بدید مثلا دسکتاپ میزارید و دستور زیر رو وارد میکنیم(وقتی این دستور رو بزنید چنتا سوال ازتون میپرسه که زیاد مهم نیست فقط یکجا ازتون رمز میخواد که باید رمز دلخواه بدین و اون رمز و یادتون نره که تو مرحله های بعدی بهش نیاز داریم)

keytool -genkeypair -v -keystore ds-release-key.keystore -alias ds-key-alias -keyalg RSA -keysize 2048 -validity 10000

خوب تو این مسیری که دادید یک فایل به اسم ds-release-key.keystor میسازه که باید اونو کپی کنید و تو پوشه Android پروژه خودتون بریزیر (تو این مسیر C:\project\test\android\app مثلا).

بعد از اینکه این فایل و ریختین باید بریم و چنتا فایل و ویرایش کنیم.

اولین فایلی از پروژمون که باید ویرایش کنیم فایل gradle.properties هست که توی همون پوشه Android میتونید پیداش کنید. حالا که پیداش کردین بازش کنید (با هر ابزار ویرایشی که دارین) و این چند خط کد رو بهش اضافه کنید :

MYAPP_RELEASE_STORE_FILE=ds-release-key.keystore 
MYAPP_RELEASE_KEY_ALIAS=ds-key-alias 
MYAPP_RELEASE_STORE_PASSWORD=رمزی که بالاتر گفتم بهتون
MYAPP_RELEASE_KEY_PASSWORD=رمزی که بالاتر گفتم بهتون

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

فایل بعدی که باید یکم ویرایشش کنیم build.gradle هست که تو پوشه app که داخل Android پروژتون هست قرار داده (android/app/build.gradle)

این فایل و بازکنید و دنبال signingConfigs بگردین که مثل کد زیر هست و باید بهش کد زیر رو اضافه کنید.

قسمت release رو بهش اضافه کنید

signingConfigs {  
        debug {...}       
        release {     if (project.hasProperty('MYAPP_RELEASE_STORE_FILE')) {                 
         storeFile file(MYAPP_RELEASE_STORE_FILE)                 
         storePassword MYAPP_RELEASE_STORE_PASSWORD                
         keyAlias MYAPP_RELEASE_KEY_ALIAS                 
         keyPassword MYAPP_RELEASE_KEY_PASSWORD             }         
         }     
  }

یکم پایین ترش هم باید این کد رو جایگزین کنید

buildTypes {         
                release {             
                ...             
                signingConfig signingConfigs.release         
              }     
}

اما یک کد یکم جادویی تر هم هست که اگر بزارید میتونه خیلی حجم اپ رو بیاره پایین پس کد زیر رو جایگزین کد موجود بکنید

defaultConfig {
     ...
      ndk {
            abiFilters &quotarmeabi-v7a&quot, &quotx86&quot
       }
}       

این کد باعث میشه که فقط برای دو نوع سی پی یو خروجی گرفته بشه.

خوب حالا که همه این فایل هارو تغییر دادیم باید دستور اجرای خروجی و هم بدیم و دیگه کار تموم.
پس آدرس پوشه Android پروژتونو توی Cmd وارد کنید.


pushd C:\project\test\android

و دستور زیر رو بزنید (یادتون باشه که حتما cmd رو به حالت Run as Administrator باز کرده باشین)

gradlew assembleRelease

این دستور رو که زدین اگر خطا خورد کارهای بالا رو تکرار کنید و مطمئن بشین که درست انجام دادین اگر هم خطای دیگه ای داد خطاشو اگر توی نت جستجو کنین راهکارشو بهتون میده(اگه همه این کارها رو درست انجام داده باشین نباید خطایی بده اصلا).
حالا که با موفقیت انجام شد میتونید تو این مسیر وارد بشید و فایل .apk خودتون رو بردارید و حالشو ببرید :)

C:/project/test/android/app/build/outputs/apk/release/app-release.apk

امیدوارم که تونسته باشم خوب توضیح داده باشم و گیج نشده باشین از توضیحاتم و این پست بتونه براتون راهگشا بوده باشه و مشکلتون رو حل کنه .

یا علی