آموزشگاه برنامه نویسی تحلیل داده
آموزشگاه برنامه نویسی تحلیل داده

آموزش انتشار React Native App در Google Play Store

دوره های مرتبط با این مقاله

انتشار React Native App در Google Play Store

همه ی application های android باید قبل از اینکه قابلیت نصب داشته باشند، با یک گواهینامه امضای دیجیتال شوند. برای توزیع آن ها توسط Google Play ، باید با کلیدی امضا شوند که در Update های آینده هم از آن استفاده شود. از 2017 به بعد، امضا نسخه های نهایی توسط خود Google Play مدیریت می شود. اما قبل از اینکه فایل قابل نصب application روی Google Play آپلود شود، باید با یک Upload Key امضا شود. صفحه ی application signing در مستندات android این موضوع را مفصل توضیح داده است. در این بخش آموزش مراحل را خلاصه مورد بحث قرار می دهیم، و نیازمندی های package کردن JavaScript bundle را بیان می کنیم.

تولید یک Upload Key

می توانید یک private key با استفاده از keytool تولید کنید. دستور زیر در ویندوز باید از مسیر C:\Program Files\Java\jdkx.x.x_x\bin اجرا شود.


$ keytool -genkeypair -v -keystore my-upload-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000

این دستور از شما رمزی برای keystore و key و فیلدهای Distinguished Name برای کلید، می گیرد. Keystore در قالب فایلی به نام my-upload-key.keystore ذخیره می شود.

این Keystore حاوی یک کلید است که برای 10000 روز معتبر است. مقدار alias نامی است که بعدا هنگام امضای application از آن استفاده خواهید کرد، پس آن را به خاطر داشته باشید.

در Mac اگر نمی دانید پوشه ی JDK bin کجاست، دستور زیر را برای پیدا کردن مسیر اجرا کنید:


$ /usr/libexec/java_home

خروجی این دستور دایرکتوری JDK خواهد بود، که چیزی شبیه زیر است:


/Library/Java/JavaVirtualMachines/jdkX.X.X_XXX.jdk/Contents/Home

با دستور $ cd /your/jdk/path به این مسیر بروید و دستور زیر را با permission sudo اجرا کنید:


$ sudo keytool -genkey -v -keystore my-upload-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000

تنظیم متغیرهای gradle


  • فایل my-upload-key.keystore را در در پروژه ی خود در پوشه ی android/app بگذارید.
  • فایل ~/.gradle/gradle.properties یا android/gradle.properties را ویرایش کنید، و خطوط زیر را به آن اضافه کنید(*****ها را با مقادیر صحیح جایگزین کنید):

MYAPP_UPLOAD_STORE_FILE=my-upload-key.keystore
MYAPP_UPLOAD_KEY_ALIAS=my-key-alias
MYAPP_UPLOAD_STORE_PASSWORD=*****
MYAPP_UPLOAD_KEY_PASSWORD=***** 

این ها متغیرهای global در gradle خواهند بود، و بعدا در Gradle config برای امضای application از آن ها استفاده می شود.

نکته امنیتی: اگر نمی خواهید پسورد خود را صریح ذخیره کنید، و از OSX استفاده می کنید، می توانید پسورد را به شکل Keychain Access ذخیره کنید. در اینصورت می توانید دو ردیف آخر فایل بالا را خالی بگذارید.

افزودن signing config به Gradle config

آخرین مرحله config این است که release build ها را طوری تنظیم کنیم که با Upload Key امضا شوند. فایل android/app/build.gradle در پوشه ی پروژه را ویرایش کنید و signingConfigs را به آن اضافه کنید:


...
android {
    ...
    defaultConfig { ... }
    signingConfigs {
        release {
            if (project.hasProperty('MYAPP_UPLOAD_STORE_FILE')) {
                storeFile file(MYAPP_UPLOAD_STORE_FILE)
                storePassword MYAPP_UPLOAD_STORE_PASSWORD
                keyAlias MYAPP_UPLOAD_KEY_ALIAS
                keyPassword MYAPP_UPLOAD_KEY_PASSWORD
            }
        }
    }
    buildTypes {
        release {
            ...
            signingConfig signingConfigs.release
        }
    }
}
...

تولید key release

دستور زیر را در ترمینال اجرا کنید:


$ cd android
$ ./gradlew bundleRelease

bundleRelease gradle همه ی کدهای JavaScript لازم برای اجرای پروژه را در(Android App Bundle) AAB قرار می دهد. اگر می خواهید چیزی را در این فرایند تغییر دهید (مثلا نام پیش فرض فایل یا پوشه یا ساختار کلی پروژه را تغییر داده اید)، نگاهی به android/app/build.gradle بیندازید و تغییرات مورد نظراتان را اعمال کنید.

نکته: مطمئن شوید gradle.properties حاوی org.gradle.configureondemand=true نباشد چرا این باعث می شود فرایند build، bundling را برای JavaScript و asset های درون پروژه انجام ندهد.

AAB ساخته شده در مسیر android/app/build/outputs/bundle/release/app.aab ذخیره می شود و آماده ی upload در google play است

تست application release build

قبل از آپلود کردن release build روی Google Play ، آن را کامل تست کنید. تمام version های قبلی application را پاک کنید و آن را با دستور زیر نصب کنید:


$ react-native run-android --variant=release

توجه کنید، --variant=release فقط وقتی قابل استفاده است که مراحل گفته شده درمورد امضای application را انجام داده باشید.

می توانید packager instance های درحال اجرا را خاتمه دهید. دیگر به آن ها احتیاج ندارید، framework و کد JavaScript در Asset های APK هست و همین کافی است.

انتشار در Store های دیگر

به طور پیش فرض، APK ساخته شده کد native برای معماری CPU های x86 و ARMv7a را دارد. این قابلیت اشتراک application بین تقریبا همه دستگاه های android را آسانتر می کند. با این حال، این به این معنا نیز هست که بخشی از کدهای native روی هر device، اضافه است و این موجب بزرگ شدن حجم APK می شود.

می توانید برای هر CPU یک APK بسازید. برای این کار خطوط زیر را در android/app/build.gradle تغییر دهید:


- ndk {
-   abiFilters "armeabi-v7a", "x86"
- }
- def enableSeparateBuildPerCPUArchitecture = false
+ def enableSeparateBuildPerCPUArchitecture = true

هر دو فایل را روی Store های مختلف که دستگاه های هدف را پشتیبانی می کنند مثل Google Play و Amazon App Store، آپلود کنید. کاربران به طور خودکار APK مناسب device خود را دریافت خواهند کرد. اگر می خواهید آن را روی بازارهای دیگر مثل APKFiles آپلود کنید، که چند APK برای یک application را نمی پذیرند، خطوط زیر را نیز تغییر دهید تا یک APK کلی با binary هایی برای هر دو CPU ساخته شود:


- universalApk false  // If true, also generate a universal APK
+ universalApk true  // If true, also generate a universal APK

فعال کردن Proguard برای کاهش سایز APK (اختیاری)

Proguard ابزاری است که می تواند سایز APK را کاهش دهد. این کار را با حذف بخش هایی از bytecode ( و dependency هایش) که application از آن ها استفاده نمی کند انجام می دهد.

مهم: درصورت فعال کردن Proguard ، حتما application تان را کامل تست کنید. Proguard معمولا تنظیماتی مخصوص هر کتابخانه ی native که استفاده می کنید، دارد. app/proguard-rules.pro را ببینید.

برای فعال کردن Proguard، android/app/build.gradle را ویرایش کنید:


/**
 * Run Proguard to shrink the Java bytecode in release builds.
 */
def enableProguardInReleaseBuilds = true

مهاجرت از application های قدیمی android – React Native و استفاده از App Signing by Google Play

اگر از نسخه ی قبلی React Native استفاده می کنید احتمالا application تان از App Signing by Google Play استفاده نمی کند. توصیه می کنیم آن را فعال کنید. برای جایگزین کردن روش قدیمی امضای application با روش جدید، ابتدا یک Upload Key جدید بسازید. سپس config مربوط به امضای نسخه Release را در android/app/build.gradle طوری تغییر دهید که از Upload Key استفاده کنید. وقتی این کار انجام شد، برای ارسال release key اصلی به Google Play ، دستورالعمل های این لینک را دنبال کنید.

  • 43
  •    0
  • تاریخ ارسال :   1398/06/11

دانشجویان گرامی اگر این مطلب برای شما مفید بود لطفا ما را در GooglePlus محبوب کنید
رمز عبور: tahlildadeh.com یا www.tahlildadeh.com
ارسال دیدگاه نظرات کاربران
شماره موبایل دیدگاه
عنوان پست الکترونیک

ارسال

آموزشگاه برنامه نویسی تحلیل داده
آموزشگاه برنامه نویسی تحلیل داده

تمامی حقوق این سایت متعلق به آموزشگاه تحلیل داده می باشد .