hybrid app初体验,和react-native一起飞
第一次启动了react-native的示例,今天主要把其中遇到的坑与解决的办法分享给大家。如有疏漏、错误还望指正。
首先还是要从hybrid app这个概念说起(如果对于这个过程不感兴趣的同学,可以直接往下翻,从开始配置react-native看起)。hybrid app就是混合应用。从我个人的理解,本以为就是在原生的app里面嵌入一些网页(webview),直到最近去体会了一把ionic,以及react-native才感受到了自己的肤浅,具体怎么肤浅了呢,一会再详细说,先来看看做一个hybrid app我们该从何入手。
是的,假如我想做一个hybrid app,那么我要怎么做呢?从哪里下手呢?首先我想到了,网上可定有很多hybrid app的框架,我要弄个框架,体验一下(其实,博主之前还先去简单的了解了一下原生应用,下载了android studio试用了一下)。还是百度一下:
除去前两个是百度推广的广告,阅读了后边几个链接以后,一个框架逐渐进入了我们的视野:ionic framework。跟着这篇文档的入门教程:ionic2安装入门我初步的把ionic的web内容部署到了本地。这其中要科学上网下载一些东东,还要安装python2(配置环境变量),速度也很慢。
到执行:
$ ionic serve
的时候,我们在浏览器里访问127.0.0.1:8100就可以看到我们的demo在浏览器里运行了:
是一个简单的tab页面,用鼠标点一点,挺流畅的,不卡。
这里让我产生了一些疑惑,hybrid应用不是混合应用么,怎么这个demo里,一行原生的代码也没有,就搭建出了一个简单的tab ui了呢?这里完全用web前端的代码进行编写,就算后边用一些其他的方式去编译,封装进原生的应用,可它本质不还是一个web app么。那么hybrid app到底是什么呢?
带着这样的疑惑我又百度了一下hybrid app的百度百科,其中有一段讲分类,hybrid app可以分为:多View混合型、单View混合型、web主体型,等三种类型。那么ionic框架搭建的app就属于第三种web主体型了。
那么既然已经有了这么一个demo,我就想把它打包成一个apk,放到手机上跑一下,看看什么效果喽。根据文档说明,我们需要首先给这个项目增加一个平台的支持:
ionic platform add android //博主是穷人用安卓机
就这样,博主的电脑开始了无尽的下载与编译过程,断断续续,重启了三次,耗时两天,还是没有完成这个编译的过程,最后的画面停留在了下载某些jar包的过程中(几个小时没动了,科学上网后,重启两次也到这里不动了):
ionic,我们的缘分就到这里吧,借用宋冬野的一句歌词:爱上一匹野马,可我的家里没有草原。ionic你还是在长城外边驰骋吧。
恰逢等待ionic下载的间隙,我又开始了react-native的学习。react-native是最近很火热的一套移动应用开发解决方案(我开始把它归到hybrid app里,但随着认识的加深,我发现它并不是通常意义上的hybrid app,它使用js编写程序,解译后交给原生应用去渲染ui,或者直接调用原生代码,相比其他hybrid app在页面上进行混合,它更多的是在程序内部、编码方式上进行的混合),具体的介绍网上一大堆,大家自己看喽。
开始配置react-native
跟着这篇文档,开始安装我们的react-native:react-native安装
Chocolatey这个大家可以不装的(老外用linux习惯了,对windows的手动下载安装配置很不屑,所以想出来搞了这个自动安装其他软件的软件,要科学上网的),下边的内容可以手动安装就好了,该科学上网的就科学上网吧。不得不说,这篇文档,我给打100分,写的非常的详尽,比英文版的还要详尽,非常的实用。容易出问题的有几点:
1.React Native运行Android时提示要下载: gradle-2.4-all.zip ,下载失败,出现错误。这里有为先贤给填了坑:下载gradle-2.4-all.zip失败解决办法
2.在安装android studio后,可以打开Tools–>Android–>SDK Manager,勾选上Show Package Details,然后在Android SDK Build Tools中勾选Android SDK Build-Tools 23.0.1。(必须是这个版本)进行下载安装(避免出现这个错误:failed to find Build Tools revision 23.0.1)。
3.增加ANDROID_HOME环境变量,并在Path环境变量中增加:%ANDROID_HOME%\tools;%ANDROID_HOME%\platform-tools两个配置(避免出现Could not get BatchedBridge Error关于这个错误还可以参考这个链接:Could not get BatchedBridge Error)。
配置好以后,通过usb连接上我们的电脑和手机(安卓手机,启用开发者模式,启用usb调试,小米手机要额外增加配置:设置–>更多设置–>开发者选项–>(滑动到页面最底部)关闭“启用MIUI优化“–>完事会重启,这样做可以避免的问题:com.android.ddmlib.InstallException: Failed to establish session react-native),然后运行:
react-native init AwesomeProject
cd AwesomeProject
react-native run-android
也是要等待一会,下载很多jar包什么的,相比ionic这个过程比较短,半个小时之内就搞定了,直到出现了:
看到你的手机上顺利的启动了这个demo:
好的,react-native已经正常的启动了,可以去学习react-native的语法与组件知识了,继续加油吧,同志们。
hybrid app初体验,和react-native一起飞的更多相关文章
- 谈谈APP架构选型:React Native还是HBuilder
原文链接 导读:最近公司的一款新产品APP要进行研发,老大的意思想用H5来做混合APP以达到高效敏捷开发的目的.我自然就开始进行各种技术选型的调研,这里重点想说的是我最后挑选出的2款hybrid ap ...
- Hybrid App: 了解JavaScript如何与Native实现混合开发
一.简介 Hybrid Development混合开发是目前移动端开发异常火热的新兴技术,它能够实现跨平台开发,极大地节约了人力和资源成本.跨平台开发催生了很多新的开源框架,就目前而言,在混合开发中比 ...
- 二、React初体验之React组件创建
(中间因为应付各种考试,处理其他事情,隔了好时间没更新,现在终于有时间了,续上!) 本文为React初始体验,因此先不考虑文件如何组织,尽量以最简单的方式让大家了解React其中的原理. 在创建组件( ...
- Hybrid APP基础篇(二)->Native、Hybrid、React Native、Web App方案的分析比较
说明 Native.Hybrid.React.Web App方案的分析比较 目录 前言 参考来源 前置技术要求 楔子 几种APP开发模式 概述 Native App Web App Hybrid Ap ...
- 基于webview的Hybrid app和React Native及html5
基于webview的Hybrid app和React Native及html5 React Native 结合了 Web 应用和 Native 应用的优势,可以使用 JavaScript 来开发 iO ...
- 利用C#开发移动跨平台Hybrid App(一):从Native端聊Hybrid的实现
0x00 前言 前一段时间分别读了两篇博客,分别是叶小钗兄的<浅谈Hybrid技术的设计与实现>以及徐磊哥的<从技术经理的角度算一算,如何可以多快好省的做个app>.受到了很多 ...
- 聊聊Web App、Hybrid App与Native App的设计差异
目前主流应用程序大体分为三类:Web App.Hybrid App. Native App. 一.Web App.Hybrid App.Native App 纵向对比 首先,我们来看看什么是 Web ...
- 如何用 React Native 创建一个iOS APP?
诚然,React Native 结合了 Web 应用和 Native 应用的优势,可以使用 JavaScript 来开发 iOS 和 Android 原生应用.在 JavaScript 中用 Reac ...
- React Native是一套使用 React 构建 Native app 的编程框架
React Native是一套使用 React 构建 Native app 的编程框架 React Native at first sight what is React Native? 跟据官方的描 ...
随机推荐
- 清华大学教学内核ucore学习系列(1) bootloader
ucore是清华大学操作系统课程的实验内核,也是一个开源项目,是不可多得的非常好的操作系统学习资源 https://github.com/chyyuu/ucore_lab.git, 各位同学可以使用g ...
- Matplotlib 设置
# 导入相关模块 import matplotlib.pyplot as plt import numpy as np 设置 figure Matplotlib 绘制的图形都在一个默认的 figure ...
- numpy.array 基本操作
import numpy as np np.random.seed(0) x = np.arange(10) x """ array([0, 1, 2, 3, 4, 5, ...
- 石头剪刀步(rps):dp,概率&期望
既然已经给std了,直接扔代码啦.代码注释还是不错哒. 因为我也有点懵,不明白的或有不同见解的一定要在评论区喷我啊! #include<bits/stdc++.h> using names ...
- Charles破解安装及基本使用
一.Charles简介 1.Charles是一款代理服务器,通过成为电脑或者浏览器的代理,而后截取请求和请求结果达到抓包目的. 2.Charles是用Java写的,能够在Windows,Mac,Lin ...
- vue自定义长按指令
1.前言 在word中,当我们需要删除一大段文本的时候,我们按一下键盘上的退格键,就会删除一个字,当我们长按住退格键时,就会连续不停的删除,这就是键盘按键的长按功能.那么我们也想在网页中让一个按钮也具 ...
- 考试T1护花
传送门 这题的提议似乎有什么问题,只要约翰选好了要抓那头牛,他就不会吃草了,站在原地傻等? 这题就是贪心,但在用cmp中比较单位时间吃草数量时,要用double型,不然可能会有点一样... 还有就是主 ...
- 大数据之路day04_2--经典bug(equals与==比较不同,break的跳出不同)
一.equals与==比较不同 在实现某个人去5个商场去购物,控制台输入是否购物(Y/N)的时候,在比较出了问题,发现无论输入什么都是false,后来查阅资料发现,字符串的比较,==和equals不一 ...
- csp-s m 80 题解
写在前面:(扯淡话) 这次考试是AB组分开考,但是觉得题目并不是很水,所以就来写一下题解,其实这次由于翘掉了午休,所以考试的前半部分还是比较困的(越做越清醒!)今天调完还是很有感触的! 正文: T1 ...
- 期末考试(正解:三分单峰函数 me~)
好久没有水过杂题了! 今天lsc终于刚过了三道考试题来水杂题了! 期末考试 首先一看还是一脸mb(这是正常现象,毕竟我不像一些大神可以一眼出正解)然后我就被颓了标签,知道是三分单峰函数,但是自己实在是 ...