React Native 打包生成apk文件

    xiaoxiao2021-03-25  62

    在上一篇文章中我记录了Android原生接入React Native的一些知识点,那么接入开发完毕之后就需要打包生成正式apk文件,本篇文章就开始介绍如何打包。

    先说明一下,平时开发RN的时候,首先需要react-native start 开启服务,然后通过react-native run-android 就安装到手机或者模拟器了,然后也能运行。但是这里打的测试包其实不包含js代码,而是通过连接js Server来显示的。但是正式打包肯定不能这么干,所以相比较而言RN这种打包apk与我们平时Android打包,区别就在于RN要把js那部分打包进去。然后网上有很多关于RN打包生成apk的文章,说的也很好,比如【React Native开发】React Native进行签名打包成Apk(5)这篇文章。但是呢,其实这些文章记录的跟我的情况还不一样,我的是Android原生接入RN,而大部分文章写的是RN工程包含android,然后打包生成apk文件。

    所以,整个工程的结构都不一样,因此我也是尝试很多次才打包成功。。

    步骤如下:

    首先第一步需要一个签名文件,这个一般都有吧,没有的话可以通过android studio生成,比较简单。将签名文件复制到工程的app moudle目录下需要对Android工程进行配置

    工程配置如下:

    修改项目中gradle.properties文件: MYAPP_RELEASE_STORE_FILE=youdo.jks MYAPP_RELEASE_KEY_ALIAS=qndroid MYAPP_RELEASE_STORE_PASSWORD=rzq123456 MYAPP_RELEASE_KEY_PASSWORD=rzq123456

    说明一下,填写的时候将签名文件的名称、密码、别名、别名密码都替换一下,应该没啥问题

    在moudle的gradle的文件下,进行如下配置: // 配置签名文件 signingConfigs { release { storeFile file("youdo.jks") storePassword "rzq123456" keyAlias "qndroid" keyPassword "rzq123456" } } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' signingConfig signingConfigs.release } } 生成签名包 由于是Android接入RN的,所以不存在react.gradle文件,接下来需要在main目录下生成assets文件,然后生成index.android.bundle文件放在这个文件夹下,在android studio的Terminal进行以下操作:

    step 1: mkdir -p app/src/main/assets (在main目录下生成assets)

    step 2: curl -k “http://localhost:8081/index.android.bundle” >app/src/main/assets/index.android.bundle (生成index.android.bundle)

    step 3:./gradlew assembleRelease (打包生成apk文件,注意以上操作均在 Android工程的根目录 ,如果命令行打包卡住,用as的图形化界面打包试试)

    到此为止,Android接入RN 项目的apk文件就生成了, 但是具体项目中其实还是需要多渠道打包的,可以统计各个渠道app的下载量,一般用友盟统计的比较多吧,下面介绍一些多渠道打包的配置:

    首先在AndroidManifest.xml的application下添加 : <meta-data android:name="UMENG_CHANNEL" android:value="${UMENG_CHANNEL_VALUE}" /> 接着在app的build.gradle文件下添加: // 多渠道设置 productFlavors { kuan {} xiaomi {} qh360 {} baidu {} wandoujia {} } productFlavors.all { flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name] } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' signingConfig signingConfigs.release } } 配置完成之后,就需要打包了,可以重复上面的那个打包步骤,命令行或者as的图形化界面打包都是可以的

    总结说明

    对比下来,Android接入RN之后,跟以前原生的Android工程打包唯一的不同点就是需要将js打包进来,也就是在打包之前需要额外的生成index.android.bundle文件。官网以及其他的文章介绍中生成这个文件的命令不同,比如其他地方生成这个文件的命令是curl -k "http://localhost:8081/index.android.bundle" >android/app/src/main/assets/index.android.bundle, 我们这个工程生成这个文件的命令是curl -k "http://localhost:8081/index.android.bundle" >android/app/src/main/assets/index.android.bundle,那是因为我们这个项目结构跟他们的不一样,这个是Android接入RN,其实本质都是一样的,只要找对文件的位置就ok了。

    转载请注明原文地址: https://ju.6miu.com/read-37585.html

    最新回复(0)