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? 跟据官方的描 ...
随机推荐
- AD中如何插入logo(图片)
图片转成protel altium AD PCB封装 LOGO方法 1. 2. 3. 4.打开下列顺序文件夹 Examples-->Scripts-->Delphiscript Scrip ...
- [考试反思]NOIP模拟测试19:洗礼
[]260 []230[]210 []200[8]170[9]160 这套题一般,数据很弱,T1T2暴力都能A,而且都是一些思维题,想不到就爆0. 原因不明,很多一直很强的人在这一次滑铁卢了,于是我个 ...
- 我跟上家老板说过的最后一句话:转.NET Core吧
最近几天浩子终于刚刚脱离了令人发指工作,一者是年底了,一者是不要向生活低头,就在这时我选择了第二者. 上家是做物联网的,人数不多,七八名开发人员,感觉都还可以,都很年轻没有秃顶,糊里糊涂就选择了入职. ...
- 奶牛邻居——treap+契比雪夫距离+并查集
题目描述 了解奶牛们的人都知道,奶牛喜欢成群结队.观察约翰的N(1≤N≤100000)只奶牛,你会发现她们已经结成了几个“群”. 每只奶牛在吃草的时候有一个独一无二的位置坐标Xi,Yi(l≤Xi,Yi ...
- 大数据之路week01--day02我实在时被继承super这些东西搞的头疼,今天来好好整理以下。
这一周的第一天的内容是面向对象的封装,以及对方法的调用.实在时没法单独拿出来单说,就结合这一节一起说了. 我实在是被继承中的super用法给弄的有点晕,程序总是不能按照我想的那样,不是说结果,而是实现 ...
- canvas与工作流的不解之缘
html的标签 <canvas>用于图形的绘制,通过脚本 (通常是JavaScript)来完成,canvas简而言之就是个画布.上一篇文章我们提到工作流的一个重要组成部分:流程建模,也就是 ...
- linux 设置固定ip和dns
目录 1. centos 1.1 ifconfig 查看网卡名称 1.2 设置固定ip和dns 1.3 重启网络 2. ubuntu 2.1 ifconfig 查看网卡名称 2.2 设置固定ip和dn ...
- Golang stackError 补充go错误定位能力
用过go的都知道,go的error实现很简单,errors.New实现的error类并不存储堆栈数据,这导致一个问题,就是多次error return后,或panic后recover了,找不到触发异常 ...
- 力扣(LeetCode)求众数 个人题解
给定一个大小为 n 的数组,找到其中的众数.众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素. 你可以假设数组是非空的,并且给定的数组总是存在众数. 示例 1: 输入: [3,2,3] 输出: 3 ...
- 力扣(LeetCode)长按键入 个人题解
你的朋友正在使用键盘输入他的名字 name.偶尔,在键入字符 c 时,按键可能会被长按,而字符可能被输入 1 次或多次. 你将会检查键盘输入的字符 typed.如果它对应的可能是你的朋友的名字(其中一 ...