• 随笔:24
  • 图书:28|
  • 留言: |
  • 总访问量:76078|

9WY博客

欢迎您的访问

react-native: ios android 打包方法

作者/ WY

安卓打包:

React Native应用生成release版本的APK

为了部署Android应用,我们需要生成release版本的APK(APK文件是Android应用安装包文件,iOS安装包文件是ipa,该格式用于发布安装应用)。通常讲,有以下五个步骤:

(1)生成签名秘钥

(2)设置gradle变量

(3)添加签名到应用的build.gradle配置中

(4)生成release版本的APK

(5)在设备上安装release版本的APK

首先需要向你的应用生成一个keystore和key,首先先在终端切换到桌面,再输入“ keytool -genkey -v -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000”命令,如下图所示:

按照上图执行完以后会在桌面生成一个“my-release-key.keystore”文件,将此文件拷贝到项目的android/app/目录下:


接着在终端输入 vi ~/.gradle/gradle.properties命令,在 vi ~/.gradle/gradle.properties文件中添加如下内容:

MYAPP_RELEASE_STORE_FILE=my-release-key.keystore

MYAPP_RELEASE_KEY_ALIAS=my-key-alias

MYAPP_RELEASE_STORE_PASSWORD=liyuechun

MYAPP_RELEASE_KEY_PASSWORD=liyuechun

需要把上面的liyuechun替换成你之前调用keytool时使用的密码。

在~/.gradle/gradle.properties文件中添加上面的信息后,我们就成功的把她们加入到gradle通用配置中了,PS:gradle是用来构建React Native项目的工具。

现在我们已经设置好了gradle变量,接着需要把我们的签名配置添加到应用的gradle配置中。用Sublime打开android/app/build.gradle文件,然后添加如下签名配置,PS:我用红线框起来的内容是需要添加的,这里使用了之前在~/.gradle/gradle.properties文件中定义的变量。

OK,接下来到了我们声明签名版APK的时候了

进入项目根目录,在终端运行npm start命令

$npm start

然后在项目根目录下再次运行下列命令:

$mkdir -p android/app/src/main/assets

$ curl “http://localhost:8081/index.android.bundle?platform=android&dev=false&minify=true” -o “android/app/src/main/assets/index.android.bundle”

$cd android

$./gradlew assembleRelease

上面的代码中,首先我们创建了一个assets/ 目录来存储打包的JavaScript文件。然后,通过curl从React Native包管理器获取了打包的JavaScript文件。最后,使用gradlew来构建release版本的APK

ares/android/app/build/outputs/apk/app-demoRelease.apk

如何确认Release版本的APK包生成成功,

也可以直接将手机通过数据线和电脑连接,并且打开调试模式,切换到项目根目录路径下面,通过react-native run-android直接安装在手机上。



利用 ./gradlew build 命令把debug、release环境的包都打出来

  • ./gradlew assembleDebug 编译并打Debug包

  • ./gradlew assembleRelease 编译并打Release的包

除此之外,assemble还可以和productFlavors结合使用,具体在下一篇多渠道打包进一步解释。

  • ./gradlew installRelease Release模式打包并安装

  • ./gradlew uninstallRelease 卸载Release模式包

ios打包(临时真机打包)

先在xcode里配置证书 此步骤省略。

手动设置IP

RCTBundleURLProvider在接口中暴露了jsLocation属性,可以通过setJsLocation手动设置IP。

NSURL *jsCodeLocation;

[[RCTBundleURLProvider sharedSettings] setDefaults];#if DEBUG[[RCTBundleURLProvider sharedSettings] setJsLocation:@"192.168.1.101"];#endifjsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index.ios" fallbackResource:nil];

另需要在Info设置NSAppTransportSecurityNSAllowsArbitraryLoadstrue即可。

总之

RCTBundleURLProvider类做了一些消息和属性的封装,可以通过判断是否DEBUG环境然后做不同的设置。


关于WY

24岁,是一个专注于web前端与用户体验设计的个人网站,记录博主学习和成长的一个自媒体博客。.[更多]

E-mail:252999979@qq.com
QQ:252999979
用手机阅读《react-native: ios android 打包方法》

扫描用手机阅读此文
支持Android/iPhone

退出阅读 | 首页