关于react-native项目在android上面的打包部署过程

其实在react官网上面就已经有了这个过程,但是在我前几天打包部署的时候出现了一些问题。想记录一下。
初始化一个react-native项目应该都不陌生了。我是按照官网上面用的Android Studio打包的。

1.将项目中的android下的app文件夹用Android Studio打开,然后点击Build->Generate Signed APK

步骤1

2.created new …

步骤2

3.按照图片填写该填的,填完了之后一路next finish。

这里写图片描述

以上步骤完成后就会在app文件夹里生成一个app-release.apk的文件,这个文件以及可以直接在安卓系统上面安装了,但是会发生闪退现象,完全点不开。这是因为React-Native的android平台下默认没有生成资源文件也就是我们所有的js图片文件等等。

所以我们就要生成JS Bundle文件:

1、在`Android/app/src/main/`文件夹下 创建一个assets文件在工程目录下,可手动,也可以在项目根目录下用命令行进行创建,命令行命令如下

mkdir -p Android/app/src/main/assets

2、这个也是在项目根目录下运行下面这段命令,生成Bundle文件

React-native bundle –platform android –dev false –entry-file index.android.js –bundle-output android/app/src/main/assets/index.android.bundle –assets-dest android/app/src/main/res/

加粗部分的文件是你项目根目录下面的主 index.js文件。以前的react-native初始化出来的项目,跟目录下会有index.android.jsindex.ios.js 这两个平台下的js文件。但是有的只有一个index.js文件。

成功了之后就可以在刚刚创建的asset文件夹下面看到生成的bundle文件了。
然后再此进行打包,在Android Studio里面。点击Build->Generate Signed APK后在弹出的框内有刚刚创建好的keystore,里面可能保存了密码,如果没有直接输入刚刚你设置的密码,一路点击next finish,再次生成app-release.apk,这次生成的会覆盖上一次的。然后在安卓上面安装,就不会出现闪退现象。

命令行发布版本

1、签名生成秘钥

在项目跟目录下打开命令窗口,输入

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

它会生成一个叫做my-release-key.keystore的密钥库文件,一定要保管好你的密钥库文件,不要上传到版本库或者其它的地方–alias参数后面的别名是你将来为应用签名时所需要用到的,所以记得记录这个别名。
加黑部分的名字都是可以自定义的,但是一定要记得。

2、设置gradle变量

把刚刚生成的my-release-key.keystore文件放到android/app文件夹下。
编辑~/.gradle/gradle.properties(没有这个文件你就创建一个),添加如下的代码(注意把其中的**替换为相应密码)。

注意:~表示用户目录,比如windows上可能是C:\Users\用户名,而mac上可能是/Users/用户名。

MYAPP_RELEASE_STORE_FILE=my-release-key.keystore
MYAPP_RELEASE_KEY_ALIAS=my-key-alias
MYAPP_RELEASE_STORE_PASSWORD=*****
MYAPP_RELEASE_KEY_PASSWORD=*****

上面的这些会作为全局的gradle变量,我们在后面的步骤中可以用来给应用签名。将里面等号里面的星号改成自己刚刚设置的密码。

3、添加签名到应用的gradle配置中

编辑你项目中的android/app/build.gradle文件,添加如下的签名配置:

...
android {
    ...
    defaultConfig { ... }
    signingConfigs {
        release {
            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
        }
    }
}
...

signingConfigs 里,以我的项目为例,就改成这个样子:

signingConfigs { 
   release { 
    storeFile file("/Users/Gary/Desktop/EDC/android/app/my-release-key.keystore")
        storePassword "123456"
        keyAlias "my-key-alias"
        keyPassword "123456"
    }
  }

4.生成发行APK包

cd android && ./gradlew assembleRelease

cd android表示切换到安卓目录下,打开命令行运行./gradlew assembleRelease

./gradlew assembleRelease在macOS和Linux系统中表示执行当前目录下的名为gradlew的脚本文件,运行参数为assembleRelease,注意这个./不可省略;而在windows命令行下则需要去掉./。

如果没有出错的话,就说明apk文件打包完成了,然后到你的这个目录下:

/android/app/build/outputs/apk

猜你喜欢

转载自blog.csdn.net/weixin_38706214/article/details/78250525
今日推荐