概要

  • react native
  • 环境搭建
  • hello react native
  • react native 发布

react native

优势

  1. 不用再学习 OC,Swift,Java,Kotlin 等
  2. 复用 react 开发的种种好处
  3. 开发体验好(即时编译)
  4. 编译出来的是原生应用,不是 html5 app,也不是 hybrid app
  5. 可以方便的和原生代码写的控件集成

劣势

  1. 还在发展中,更新频繁,既有可能存在暗坑
  2. 性能调优的方式没有真正的原生开发多

环境搭建

npm install -g react-native-cli
npm install -g create-react-native-app
npm install -g watchman

hello react native

  1. 创建工程

    create-react-native-app sample
  2. 启动工程

    cd sample
    yarn start
  3. 通过 expo 来查看运行结果

发布

android 发布

下载 android 环境

  1. 下载 android sdk(如果不用 android studio 开发,可以只下载 sdk 即可)
  2. 下载地址: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

配置签名

  1. 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 文件夹下

  2. 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

react-native 简介及环境的更多相关文章

  1. react-native —— 在Windows下搭建React Native Android开发环境

    在Windows下搭建React Native Android开发环境 前段时间在开发者头条收藏了 @天地之灵_邓鋆 分享的<在Windows下搭建React Native Android开发环 ...

  2. react native 学习一(环境搭配和常见错误的解决)

    react native 学习一(环境搭配) 首页,按照http://reactnative.cn/docs/0.30/getting-started.html#content上的介绍,下载安装pyt ...

  3. React Native 简介:用 JavaScript 搭建 iOS 应用(2)

    [编者按]本篇文章的作者是 Joyce Echessa--渥合数位服务创办人,毕业于台湾大学,近年来专注于协助客户进行 App 软体以及网站开发.本篇文章中,作者介绍通过 React Native 框 ...

  4. React Native 简介:用 JavaScript 搭建 iOS 应用 (1)

    [编者按]本篇文章的作者是 Joyce Echessa--渥合数位服务创办人,毕业于台湾大学,近年来专注于协助客户进行 App 软体以及网站开发.本篇文章中,作者介绍通过 React Native 框 ...

  5. react-native —— 在Mac上配置React Native Android开发环境排坑总结

    配置React Native Android开发环境总结 1.卸载Android Studio,在终端(terminal)执行以下命令: rm -Rf /Applications/Android\ S ...

  6. React Native搭建开发环境 之 --走过的坑

    React Native是使用JavaScript和React编写原生移动应用 我的开发平台是基于windows系统,所以只支持android,要是想开发ios系统,那就只能考虑使用沙盒环境 接下来就 ...

  7. 《React Native 精解与实战》书籍连载「React 与 React Native 简介」

    此文是我的出版书籍<React Native 精解与实战>连载分享,此书由机械工业出版社出版,书中详解了 React Native 框架底层原理.React Native 组件布局.组件与 ...

  8. 【React Native开发】React Native For Android环境配置以及第一个实例(1)

    年9月15日也公布了ReactNative for Android,尽管Android版本号的项目公布比較迟,可是也没有阻挡了广大开发人员的热情.能够这样讲在2015年移动平台市场上有两个方向技术研究 ...

  9. 一、React Native 搭建开发环境(1)(Mac OS - IOS项目篇)

    React Native是Facebook推出的一个开发IOS和安卓APP的技术.至于更多的详情,这里不再描述,大家可以自行百度它的定义. 原因:由于我想在一台电脑上同时开发IOS和Android两个 ...

  10. React Native IOS ---基础环境搭建(前端架构师)

    React Native -IOS 开发环境搭建 web架构(基础) 安装依赖 * 必须安装的依赖有:Node.Watchman 和 React Native 命令行工具以及 Xcode. npm 镜 ...

随机推荐

  1. 翻译:SET PASSWORD语句(已提交到MariaDB官方手册)

    本文为mariadb官方手册:SET PASSWORD的译文. 原文:https://mariadb.com/kb/en/library/set-password/我提交到MariaDB官方手册的译文 ...

  2. VUE 组件通信总结

    1.prop 父组件传递给子组件,即通过VUE本身具有的Props属性来传递值 Child组件 <template> <span>{{message}}</span> ...

  3. 玩儿虫那些事(四)—— 使用curl

    目录 一.爬一个简单的网站 二.模拟登录新浪 三.各种请求的发送 四.使用curl 五.模拟登录QQ空间 六.selenium的使用 七.phantomjs的使用 八.开源框架webmagic 九.开 ...

  4. C#泛型。

    作用: 使用泛型可以实现算法重用. class Program { static void Main(string[] args) { MyClass<string> myClass = ...

  5. C#实现多态之接口。

    一.什么是接口? 接口就是一种规范协议,约定好遵守某种规范就可以写通用的代码. 定义了一组具有各种功能的方法(只是一种能力,没有具体实现,就像抽象方法一样,“光说不做”). 理解:内存该做成什么样的: ...

  6. Tomcat 8005/8009/8080/8443端口的作用

    --关闭tomcat进程所用.当执行shutdown.sh关闭tomcat时就是连接8005端口执行“SHUTDOWN”命令--由此,我们直接telnet8005端口执行“SHUTDOWN”(要大写, ...

  7. C# 未能加载文件或程序集“ Newtonsoft.Json” Json格式错误

    原因:版本不一致,所使用的dll和配置文件中的版本不一致.解决: (1)查看所使用的Newtonsoft.Json.dll版本 ,然后把对应的版本修改在配置文件中如下,比如版本为“4.5.0.0” 修 ...

  8. Netty 系列四(ChannelHandler 和 ChannelPipeline).

    一.概念 先来整体的介绍一下这篇博文要介绍的几个概念(Channel.ChannelHandler.ChannelPipeline.ChannelHandlerContext.ChannelPromi ...

  9. js 判断数组中的值是否都相等

    function isAllEqual(array) { if (array.length > 0) { return !array.some(function(value, index) { ...

  10. HTML之元素分类(HTML基础知识)

    HTML之元素分类 一.按照块级元素还是行内元素分类 块级元素(block-level)和行内元素(inline-level,也叫作“内联”元素). a.块级元素(独占一行) 块级元素:其最明显的特征 ...