概要
- react native
- 环境搭建
- hello react native
- react native 发布
react native
优势
- 不用再学习 OC,Swift,Java,Kotlin 等
- 复用 react 开发的种种好处
- 开发体验好(即时编译)
- 编译出来的是原生应用,不是 html5 app,也不是 hybrid app
- 可以方便的和原生代码写的控件集成
劣势
- 还在发展中,更新频繁,既有可能存在暗坑
- 性能调优的方式没有真正的原生开发多
环境搭建
npm install -g react-native-cli
npm install -g create-react-native-app
npm install -g watchman
hello react native
-
创建工程
create-react-native-app sample
-
启动工程
cd sample yarn start
-
通过 expo 来查看运行结果
发布
android 发布
下载 android 环境
- 下载 android sdk(如果不用 android studio 开发,可以只下载 sdk 即可)
- 下载地址:https://developer.android.com/studio/index.html
配置 android 环境
解压 sdk 到 opt/android
配置 .zshenv / .bashenv
export ANDROID_HOME=/opt/android
export PATH=$PATH:$ANDROID_HOME/tools
export PATH=$PATH:$ANDROID_HOME/platform-tools
安装 platform-tools
cd $ANDROID_HOME
./tools/bin/sdkmanager platform-tools
安装 build-tools
cd $ANDROID_HOME
./tools/bin/sdkmanager "build-tools;23.0.1"
创建签名
yarn eject
cd android
keytool -genkey -v -keystore my-app-key.keystore -alias my-app-alias -keyalg RSA -keysize 2048 -validity 10000
创建签名时,密码用 123456
配置签名
-
vim ./android/gradle.properties
MYAPP_RELEASE_STORE_FILE=my-app-key.keystore MYAPP_RELEASE_KEY_ALIAS=my-app-alias MYAPP_RELEASE_STORE_PASSWORD=123456 MYAPP_RELEASE_KEY_PASSWORD=123456
把生成的文件 my-app-key.keystore 放入 android/app 文件夹下
-
vim ./android/app/build.gradle
android { defaultConfig {... ...} signingConfigs { 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 } } }
发布
cd android
./gradlew assembleRelease
生成的 apk 在 app/build/outputs/apk 下
附录
启动一直卡在 Starting packager…
修改如下内核参数后再启动:
sudo sysctl -w fs.inotify.max_user_watches=1000000
永久修改此参数,可以把这个配置加入到: /etc/sysctl.conf 中
./gradlew assembleRelease 时无法运行 aapt
java.io.IOException: Cannot run program "/opt/android/build-tools/23.0.1/aapt": error=2, No such file or directory
安装 确实的 package
sudo apt-get install lib32stdc++6 lib32z1
Couldn't find preset "babel-preset-react-native-stage-0/decorator-support"
安装相应的 package
cd ..
yarn add babel-preset-react-native-stage-0
cd android
./gradlew assembleRelease