精华内容
下载资源
问答
  • React Native应用设备运行及调试

    万次阅读 2016-06-01 20:16:31
    React Native应用设备运行及调试(一)前言前面的课程我们已经对React Native的环境搭建以及开发的IDE做了相关的讲解,今天我们的主要讲解的是应用设备运行(Running)以及调试方法(Debugging)。本节的前提条件就是...

    React Native应用设备运行及调试

    (一)前言

    前面的课程我们已经对React Native的环境搭建以及开发的IDE做了相关的讲解,今天我们的主要讲解的是应用设备运行(Running)以及调试方法(Debugging)。本节的前提条件就是大家已经搭建了React Native的相关环境。

    (二)创建React Native项目

    需要调试运行应用,首先我们需要使用react-native init project-name 创建项目,这个步骤虽然在之前我们已经讲过,在此再演示一下。

    2.1 命令行创建项目

    命令行运行:react-native init TestOne [注].该命令创建项目时间有时候会比较耗时,一般几分钟吧,请耐心等待!运行日志截图如下:
    这里写图片描述

    2.2 相应目录结构

    目录结构如图所示:
    这里写图片描述

    2.3导入IDE

    打开Atom 或者WebStorm后者VS Code,进行编写代码即可。

    (三)应用运行(Running)

    3.1 iOS平台运行

    如果使用Atom或者WebStorm打开应用进行编码,通过点击项目下ios文件下的项目文件打开并运行。如果是选择iOS模拟器,直接 command+R 运行项目 ;如果是iOS真机设备,那修改AppDelegate.m文件如下图所示:

      jsCodeLocation = [NSURL URLWithString:@"http://Your Computer IP address :8081/index.ios.bundle?platform=ios&dev=true"];
    

    并且真机与电脑需在同一个WiFi环境下。最后这些设置都完成以后,连上真机设备,选择真机,command + R 运行程序。

    3.2 Android平台运行

    首先Android平台程序运行也分两种,Android模拟器和Android真机。

    1. Android 模拟器
      Android模拟器,使用的是genymotion。因为genymotion相当于是一个Android虚拟机,运行相当流畅快速,需要安装genymotion教程私聊我。现在我就假设已经安装好了Android虚拟机。
      在终端运行 adb devices 查看当前通过android 调试桥连接的Android设备有哪些,如果Android虚拟机准备成功,就如下图所示:
      这里写图片描述
      现在就可以在终端输入 react-native run-android 进行运行应用。

    2. Android 真机
      如果你需要应用运行在真机设备中,那么我们首先设备要开启USB调试模式。具体真机怎么样打开USB调试模式,请百度点击打开USB调试模式。如果参考百度的做法出现任何问题,概不负责。
      真机打开USB调试模式之后,然后连接电脑,再次命令行adb devices可以查看当前的设备列表信息,如下图所示:
      这里写图片描述

    现在大家可以看到里边有一台设备已经连接了,不过如果我们需要运行应用的话,那我们必须确保当前只有一台设备已经连接即可了。自此,光是连接了设备并没有完成步骤,还是要让设备和电脑在同一个WiFi环境下面。

    接下来我们命令行运行以下命令:

    react-native run-android

    接着就开始编译代码了,然后运行程序到设备中了。其实这时,你会发现会发生屏幕是红色的。截图如下:
    这里写图片描述

    解决步骤如下:

    • Android 5.0以上及更高版本通过以下方式:
      使用adb reverse命令
      首先你的设备连接电脑,然后打开USB调试模式。接着命令行运行
      adb reverse tcp:8081 tcp:8081

      然后我们就可以使用Reload JS和其他的开发选项了。

    • Android5.0以下版本解决方式:

    a. 摇晃设备或者命令行输入adb shell input keyevent 82,打开开发者菜单,如下效果:
    这里写图片描述
    b. 点击Dev Setting进入,然后选择Debug server host & port for device
    c. 输入电脑的IP地址和端口号(主要查看电脑的IP地址,这边用我的IP地址和端口,具体根据实际情况哦),截图如下:
    这里写图片描述

    d. 回到开发者菜单,然后选择点击Reload JS.重新加载即可。

    3.3 实时访问服务器数据(目前指本地服务器)

    在开发过程中,修改了js文件之后,我们不可能每次都需要重新运行项目,可以采用实时刷新来重新加载js文件。

    a. 在iOS设备上,相对Android是很简单的,我们只需要command + R之后,就可以重新加载js文件,而并没有重新运行项目。

    b. 在Android平台上,相对复杂。由于在现在很多设备都取出了Menu键,这时候我们可以通过摇晃设备来进行打开菜单,点击Reload JS重新加载 js 文件。

    (四)应用调试(Debugging)- 针对Android应用设备

    4.1 访问应用内开发者菜单

    Android设备通过摇晃设备或者点击菜单键(不过现在很多手机已经没有这个模拟按键了)。如果你使用genymotion模拟器,可以点击模拟器右下方向下的箭头,然后再点击出现的那个长方形的按钮,就会出现选项框。
    【注意】如果我们的APP正式发布的话(Release版本)。默认情况下我们采用gradle的assembleRelease来进行构建即可。或者通过代码ReactInstanceManager的setUseDeveloperSupport方法来进行设置是否开启调试支持。

    4.2 应用刷新

    正常情况下,如果我们只是修改应用的JS代码的话,那么我们可以直接点击Reload JS选择实时刷新即可。但是如果我们修改Android项目中的资源文件(例如res/drawable文件中图片)或者修改Android的源代码,那么就需要重新编译生成应用才可以生效。

    4.3 Chrome开发调试工具

    应用进行调试的时候,我们可以使用Chrome来调试js代码,点击开发菜单中的Debug in Chrome。然后会打开一个网页: http://localhost:8081/debugger-ui 界面截图如下:
    这里写图片描述

    不过第一次打开需要安装React DevTools(最好翻墙一下)。
    安装方法教程:
    http://facebook.github.io/react/blog/2015/09/02/new-react-developer-tools.html

    Chrome添加开发调试插件:
    这里写图片描述

    安装完插件,回退到原来的界面,然后刷新一下即可:
    这里写图片描述

    打开开发者工具:
    想必做过Web前端开发的人都知道:Chrome中可以使用option+cammod+i打开或者Chrome选择菜单-更多工具-开发者工具来进行打开控制台。不过如果我们的程序出现异常话,可以开启(Pause On Caught Exceptions)。这样程序出现异常的时候,程序会暂停执行可以更好的调试错误。

    4.4..实时刷新JS

    我们可以进行那个如下修改,当我们前端JS代码发生更改的时候,自动让设备进行刷新界面。

    在Android平台上面,打开开发者菜单,选择Dev Settings,然后点击Auto reload on JS change选择,不过有些版本好像没有这个更选项了,默认自动刷新的。

    转载自:http://www.lcode.org/

    展开全文
  • 在嵌入式设备运行高性能Java

    千次阅读 2016-06-13 22:34:03
    在嵌入式设备运行高性能Java 作 者: ARM中国 摘 要: 在过去几年里,无线手持设备 市场对Java产生了巨大的需求增 长,主要的增长力量来自于移动游 戏。广大消费者,网络运营商,服 务/内容提供商以及手机...
    在嵌入式设备上运行高性能Java

    作 者:
    ARM中国

    摘 要:
    在过去几年里,无线手持设备
    市场对Java产生了巨大的需求增
    长,主要的增长力量来自于移动游
    戏。广大消费者,网络运营商,服
    务/内容提供商以及手机制造商强
    烈渴望手机的Java性能更强劲,支
    持更多更复杂的应用,为产业链各
    方带来更多商机和收入。本文重点
    关注嵌入式设备Java平台的需求,
    尤其是Java虚拟机(JVM)。 目前存
    在若干解决嵌入式设备Java性能问
    题的方案,文章将分别提到这些不
    同的方案,然后详细介绍ARM公
    司的硬件Java加速技术—Jazelle®
    DBX(Direct Bytecode eXecution)


    应用广泛的移动Java

    Java已经在各个领域得到了广泛的
    应用,尤其是无线移动领域,全球超过
    100个移动运营商已经推出了Java下载服
    务。Java也正成为其它嵌入式设备的支持
    标准,比如机顶盒。Java应用的快速增长
    源于以下几点:
    1 Java的设计初衷“一次编译,到处
    运行”表明Java具备很好的可移
    植性。开发和发布Java应用都很
    便捷,快速上市,节省成本;
    2 Java有着广泛的支持网络,众多的
    第三方在开发各色各样的Java应用;
    3 Java平台固有的安全性适合运营商
    网络下载;
    4 Java字节码代码密度较高,程序可
    以较小以适合内存资源有限的嵌入
    式设备。
    可以说,现在Java游戏已经发展成
    一项产业了,三维图像、多人连线等更
    高级的支持也不鲜见。网络运营商和手
    机制造商希望出现更具可玩性的游戏甚
    至跳出游戏应用,发展诸如商务,定位,
    视频等各种各样的增值服务,以带来更多
    的收入。


    嵌入式设备上的Java性能

    目前市场上已经有大量宣称支持
    Java的手机,从技术上来看,许多中
    低端手机基本上是在30-50MHz ARM-
    7TDMI处理器上运行一个小型的软件字节
    码解释器,相对较慢。这对许多的Java小
    游戏是够用了,因为其性能是由系统的图
    形处理能力决定的,对Java的要求不是特
    别高。但是市场发展变化很快,越来越多
    的Java应用需要更强的图形处理能力,以
    及一个强大的Java虚拟机。
    说到手持设备上的Java性能,我们
    不得不提一下Java性能评测。理论上,
    任何Java程序都能在支持Java的设备上
    运行,Java评测程序当然也不例外。许
    多网站提供了各种各样的Java评测程序,
    用户可以很方便的比较各款手机的Java性
    能。比如著名的来自www.jbenchmark.
    com 网站的JBenchmark,此评测指标已
    经被各杂志媒体广泛引用。手机厂商当然
    不甘示弱,努力使得自己产品的Java性能
    指标位于前列。ARM公司也积极地通过
    EEMBC协会(The Embedded Microprocessor
    Benchmark Consortium)定义一项
    业界Java评测标准。



    嵌入式Java虚拟机的设计限制

    几种加快Java执行速度的传统方法,
    软件方案有JVM解释器优化,即时(JIT,
    just-in-time)编译,预先(AOT, aheadof-
    time)编译等;硬件方案有专用Java处
    理器,Java协处理器。这些方法在提高性
    能的同时,通常也会增加对功耗、内存的
    需求,尤其是硬件方案,影响到了系统平
    台的成本。
    JIT或AOT编译是把字节码动态地编
    译成目标平台的本地码,然后直接执行。
    AOT编译方案,顾名思义,就是在应用下
    载完后,编译所有代码,而实际上某些代
    码很有可能根本就执行不到。JIT编译方
    案则是运行到某段代码之前,只对这一段
    作即时的编译。这种即时处理策略,会让
    用户在选择启动应用程序后,不得不等待
    很长的一段时间,程序才真正运行起来。
    另外研究显示,动态编译会导致代码膨胀
    4-6倍[1]。因此,除了减慢应用程序启动
    速度,无论JIT或AOT方案,都额外需要
    很大的内存来保存编译生成的本地码。


    动态编译技术

    有一种弥补JIT编译器缺点的方法就
    是采用通常被称为动态自适应编译(DAC,
    Dynamic Adaptive Compiler)的混合软件
    方案, 它可以看成是JIT编译器和字节码
    解释器的组合。在开始阶段,程序解释执
    行,同时软件对代码作分析并决定哪些关
    键代码需要被编译。这些关键代码被鉴别
    出来后,即被编译成本地码运行。
    采用了DAC方案,JIT编译的一些负
    面影响可能会减少,但是JIT毕竟无法提
    供最好的速度性能,启动时间和代码膨
    胀的问题仍会比较突出。
    在完成关键代码分析前,程序得运
    行于慢速的解释器模式,然后暂停下来
    编译。应用程序启动时,许多函数方法仅
    运行一次,理想情况下不应该编译这些代
    码。从用户体验角度来看,影响是很明显
    的,尤其是程序启动阶段,会感觉到较长
    时间内程序没有任何用户响应。
    因为纯软件的解释器是很慢的,大
    多数DAC方案实际上很少做代码分析,
    而编译几乎所有的函数方法,就象赌博
    一样,赌这个函数方法接下去会执行很
    多次。如果没有赌对,那会付出更多的
    代价—不但花费了更多的编译时间,而
    且编译产生的那些不再运行的代码耗费
    了宝贵的内存资源。
    代码膨胀总会消耗完内存资源,
    DAC必须从内存中删掉以前编译好的代
    码,为新的编译让出空间,接下去如果运
    行到刚被删掉的代码,又得重新编译。这
    样产生了性能平滑度问题,因为在编译新
    代码或重编译过程中,程序得暂停执行。
    比如在切换游戏场景时,玩家会感觉到难
    以忍受的等待。
    尽管动态编译存在一些缺点,可现
    在嵌入式设备的硬件配置也越来越高,
    尤其是RAM或ROM,因此诸如DAC甚至
    一些AOT方案变得很有吸引力。然而,
    我们也看到一个系统平台中许多的组件
    是用Java开发的,越来越多的可下载应
    用是用Java写的,多Java程序并发执行
    的需求也开始产生。这些发展趋势意味
    着Java对内存的需求是无止境的。


    硬件加速

    硬件Java加速方案通常需要加入额外
    的芯片,以及更多的功耗。专用Java处理
    器支持直接执行Java字节码,看起来性能
    不错,但是系统集成和开发的复杂度大幅
    上升。Java处理器不会支持已有的很多操
    作系统和应用程序,它得和其他的嵌入式
    处理器配合使用。
    Java 协处理器是把Java字节码翻译
    成主处理器的指令。这当然需要许多软
    硬件集成工作,要在操作系统加入对协
    处理器的支持尤其困难。同样协处理器
    需要额外的板上空间,额外的功耗,本
    身也很贵。另外,协处理器和主内核之
    间的松耦合连接方式决定了其运行速度
    是相对较慢的。


    硬件架构扩展和Jazelle DBX技术概要

    在已有处理器架构上加硬件扩展可
    以同样支持直接运行Java字节码,而且
    保持了操作系统和应用程序的兼容性。架
    构扩展方案相当于为处理器附加了一套指
    令集,重用已有的处理器资源,不会增加
    额外的硬件成本和功耗。带扩展的内核能
    够同时执行Java字节码及本地码,开发者
    可以充分利用已有的操作系统、应用程序
    开发技术,在Java程序可移植性和性能之
    间取得很好的平衡。
    传统的ARM处理器都支持两套指令
    集:32位ARM指令集和16位Thumb®指令
    集。通常使用Thumb指令集的代码大小约
    为ARM代码的35-40%,但会轻微降低程
    序性能。指令集支持在ARM和Thumb代
    码之间互相作函数调用,程序员可以在
    编译时分别从性能和代码密度的角度考
    虑以决定不同部分的代码编译成ARM或
    是Thumb。
    Jazelle DBX是一种硬件架构扩展
    技术,为ARM处理器引入了第三套指令
    集—Java字节码。新指令集建立了一种新
    的状态,处理器在此状态下处理Java字节
    码取指、译码,维护Java操作数栈。
    为了减少芯片尺寸提高性能,Jazelle
    DBX没有设计成传统形式的微引擎,而是
    融入流水线中的一个有限状态机。和协处
    理器或专用处理器设计不同的是Jazelle
    DBX和主处理器共用缓存,这都会对功
    耗和性能带来益处。
    另一个重要的设计考虑是确保Jazelle
    DBX技术不会影响实时性能,仍保
    持与操作系统中已有ARM异常处理代码
    的兼容。


    Jazelle DBX技术细节

    J a z e l l e D B X技术增加了一条新
    的“Java跳转”指令来进入Java状态。
    此指令支持条件执行,先检查条件标
    志,如果条件满足,处理器进入Java状
    态,跳转到指定目标地址,开始执行
    Java字节码。
    在Java状态下,PC寄存器仍是32位
    寻址Java 代码。字节码取指、译码分别
    在两个流水级完成(对应ARM/Thumb状
    态下为一个译码流水级)。32位取指操作
    一次性可以取4个Java字节码,性能优势
    明显。
    CPSR寄存器新定义了一个Java状态
    指示位。这很重要,因为在处理中断或其
    它异常时,CPSR会自动保存或恢复程序
    运行状态。


    Jazelle DBX技术允许所有的Java指
    令是“可重新开始”的。这样在执行
    Java指令过程中,即可响应中断,从而
    减少中断延迟,确保实时性能。
    在Java状态下,有若干个ARM寄存
    器可以功能复用 (包括栈指针,栈顶四
    项,局部变量0等)。正是这些硬件重用
    设计,才使得只用了很少的附加逻辑(约
    一万两千门)就实现了一个Java机。把所
    有Jazelle DBX扩展所需的状态用ARM寄
    存器保存,也保证了和现有操作系统
    异常处理代码的兼容性。
    把栈顶四项保存在ARM寄存器中对
    Java性能也很有益。大量的程序分析显
    示大多数程序的栈深度是很小的,所以
    这项策略可以尽量减少内存访问。硬件
    也可自动处理栈溢出或下溢。
    对于一个高度优化的商业J a v a虚
    拟机( J V M ),运行评测程序或复杂的
    MIDP2.0应用,Jazelle DBX技术通常可
    带来约2-4倍的性能提升,而且对实时性
    不会产生任何影响。
    在嵌入式设备上,运行速度还不是
    唯一的考虑因素。功耗,存储器占用,
    集成的难度,系统成本,用户体验等都
    很重要,需要很好的平衡。
    Jazelle DBX技术把Java字节码分为
    3类:直接执行的,模拟执行的和未定义
    的。大多数Java字节码(ARM926EJSTM
    支持134个)可由硬件直接执行;余下
    的由一些简短的高度优化的ARM指令序列
    来模拟。把原先虚拟机中的解释器拿掉,
    替换以ARM专有的代码( 称为VMZ,这些
    代码甚至比替掉的代码更小)。
    统计分析表明在一段典型的程序
    代码中,需要模拟执行的字节码不会超
    过5%。这就是为什么ARM决定Jazelle
    DBX硬件扩展只支持直接执行部分的字节
    码,而非全部。要知道,Jazelle DBX硬
    件设计约为一万两千门,而大多数的专
    用Java处理器或协处理器通常有6万到
    10万门的规模。这样的设计策略把硬件
    逻辑的复杂度减到最小,功耗低,系统
    集成难度低,却仍能表现出很高的整体
    Java性能。
    未定义的字节码与模拟执行的字节
    码截然不同。一旦执行到未定义的字节
    码,处理器退出Java态,进入ARM态执
    行异常处理。有了这样的机制,就可以
    以软件补丁的方式,实现对未来可能会
    扩展的Java字节码支持。


    为帮助用户使用J a z e l l e D B X,
    ARM公司提供了JTEKTM软件包(Java
    Technology Enabling Kit),其中包含了
    VMZ源代码,为一个现有的Java虚拟机和
    操作系统集成JTEK通常只需几天时间。
    ARM也和主流的Java平台供应商合作,
    如Aplix/iasolution,Sun等,在他们的
    软件产品中加入了Jazelle DBX支持。另
    外,ARM和众多操作系统厂商合作,主流
    的如WindowsCE, SymbianOS, PalmOS,
    Linux以及许多实时专有的操作系统都也
    支持Jazelle DBX。
    TECHNOLOGY IN-DEPTH
    Information Quarterly [20] Number 4, spring 2006
    TECHNOLOGY IN-DEPTH
    Information Quarterly [21] Number 4, Spring 2006


    Jazelle DBX技术和动态编译

    前面讨论中我们提到,动态编译技
    术会带来一些固有问题,比如程序启动时
    间长,代码膨胀,性能上不够流畅等。而
    Jazelle DBX技术正好可以弥补动态编译
    技术的这些不足。

    使用Jazelle DBX技术,原先依靠纯
    软件解释执行的程序,其启动延迟显著
    减少。用户按下确认键启动程序,主界
    面马上出现程序正式运行,这种性能表
    现无疑会带来很好的用户体验。需要指
    出的是Java评测程序很少把程序启动时
    间这项作为评测项之一;ARM公司开发
    了ARMFLO评测软件,专门评价程序的

    启动时间和运行过程中的平滑度。


    表1显示了ARMFLO和其它两个有
    代表性的Java应用Oplayo[2]和Navitime[
    3],分别运行于Sun CLDC-HI,集
    成了JTEK-M的CLDC-HI,以及集成了
    JTEK-K的CLDC/KVM上的启动时间。
    评测结果清楚显示了Jazelle DBX技
    术显著减少程序启动时间,甚至使得
    CLDC-HI动态编译方案和KVM解释执行

    方案两者的启动时间很接近了。

    在DAC方案中加入Jazelle DBX支
    持意味着编译可以少一些而解释则多一
    些,这样节省内存且不影响性能。Jazelle
    DBX技术也可以减少编译进一步提
    高DAC方案的性能:
     那些无需或很少重复运行的代码,不
    必参与编译,节省编译消耗的时间;
     部分代码解释执行,意味着有充分
    的时间用以编译出高质量的本地代
    码,运行更快;
     更有效地利用内存,也是更好地利
    用缓存和存储带宽,这点对16位数
    据总线尤显重要。


    对于解释器方案,如K V M或基于
    KVM的Java虚拟机,Jazelle DBX的加速
    表现特别明显,这样一个VM就能以良好
    的性能表现运行在许多不同类型的嵌入
    式设备上。
    有了Jazelle DBX支持,DAC编译器方
    案可以少做一些编译,对ROM, RAM等硬
    件资源的要求相对低了很多(通常ROM需
    求减少约33%),一个Java VM同样可以
    运行于更多的嵌入式设备上。



    结论

    移动Java游戏促进了Java在无线设
    备上的应用,Java固有的端对端的安全
    性和Java应用开发的快捷性使Java成为
    新的收入增长点。在资源有限的嵌入式设
    备上也需要高性能的Java平台,Jazelle
    DBX这样的加速技术正是应对了这样的
    需求,其他一些硬件或纯软件加速方案
    将极大地受益于Jazelle DBX,并避免原
    有的各种缺点。
    通过各种新特性的加入,A RM处
    理器架构持续创新。ARM公司将在未来
    架构发展中,继续支持Jazelle DBX以
    及后续的新技术。目前采用了Jazelle
    DBX技术的手机已经被证明几乎是市场
    上Java性能最好的,提供了极佳的用户
    体验。Jazlle技术和相应的JTEK软件包
    将更广泛的促进Java在嵌入式设备
    上的应用,更多更新的移动Java应
    用随之涌现。



    参考
    [1] Code Cache Management in Dynamic
    Optimization Systems. Kim Hazelwood
    Cettei.
    http://www.eecs.harvard.edu/~cettei/
    docs/phdthesis.pdf
    [2] http://www.oplayo.com/
    [3] http://www.navitime.co.jp
    展开全文
  • 本人第一次使用HBuilder联安卓机调试自己写的demo,遇到了一些棘手的问题,解决后把它记录下来希望能帮助刚进入这...真机运行:检测不到手机设备     解决办法: 1. 首先通过数据线连电脑的USB接口使你的androi...

    本人第一次使用HBuilder联安卓机调试自己写的demo,遇到了一些棘手的问题,解决后把它记录下来希望能帮助刚进入这一领域的新手解决遇到的相同问题

    问题描述1:使用HBuilder开发工具新建一个 移动APP后,选中的index.html页面,点击菜单栏运行按钮下的子菜单-->真机运行:检测不到手机设备

     

     

    解决办法:

    1. 首先通过数据线连电脑的USB接口使你的android手机与PC连接,确保在电脑上能检测到你的手机设备,如果PC没有检测到手机设备,可以通过手机连接,如果手机助手还是提示没有检测到手机设备,那么很可能是你的数据线与手机型号不匹配的问题,普通的手机充电线(如用于手机充电宝连接手机的充电线连接手机后,电脑是没法识别手机设备的)。PC连接手机设备成功后会在我的电脑界面显示手机型号图标,如下图所示

    2. 参考Hbuilder官方文档链接http://ask.dcloud.net.cn/article/69 中关于Chrome调试Android应用的指导依次进行“检查设备版本”-->“显示开发者选项”-->“开启USB调试”-->“连接PC”等操作

    问题描述2: HBuilder能检测到手机设备后,再次选中App项目,点击运行“运行(M)”-->"真机运行"-->"HBuilder基座运行"后报以下错误

    解决办法:点击“请使用手机助手手动安装”后的链接后进入android_base.pak文件所在的目录,选中android_base.pak文件右键后点击“使用vivoAPK安装器打开”并给电脑授权后在弹出的安装界面选择“安装”,安装完成后手机屏幕上会有了一个HBuilder的应用程序

    (因为本人的手机已经安装了HBuilder应用,所以显示为“覆盖安装”)

    再次运行移动App项目,终于启动成功,问题解决!!

    展开全文
  • (一)前言 前面的课程我们已经对React Native的环境搭建以及开发的IDE做了相关的讲解,今天我们的主要讲解的是应用设备运行(Running)以及调试方法(Debugging)。本节的前提条件就是大家已经搭建了React Native的相关...

    转载请标明出处:

    http://blog.csdn.net/developer_jiangqq/article/details/50508534

    本文出自:【江清清的博客】


    ()前言       

            【好消息】个人网站已经上线运行,后面博客以及技术干货等精彩文章会同步更新,请大家关注收藏:http://www.lcode.org

           前面的课程我们已经对React Native的环境搭建以及开发的IDE做了相关的讲解,今天我们的主要讲解的是应用设备运行(Running)以及调试方法(Debugging)本节的前提条件就是大家已经搭建了React Native的相关环境。如果没有请关注第一讲(点击进入)

             刚创建的React Native技术交流3群(496508742),React Native技术交流4群(458982758),请不要重复加群!欢迎各位大牛,React Native技术爱好者加入交流!同时博客左侧欢迎微信扫描关注订阅号,移动技术干货,精彩文章技术推送!

    ()创建React Native项目  

            需要运行和调试应用,首先我们需要使用react-native init xxproject来创建一个项目,这个步骤虽然在之前我们已经讲过了,不过这边在演示一下。

            2.1.命令行运行:react-native init TestOne   [].该命令创建项目时间有时候会比较耗时,一般几分钟吧,请耐心等待!运行日志截图如下:


           2.2.在相应目录生成项目,项目的目录机构如下:


          2.3.最后我们通过IDE引入该项目(Atom或者WebStorm),进行编写代码即可。

    ()应用设备运行(Running)

             [注意].如果你需要应用运行在真机设备中,那么我们首先设备要开启USB调试模式。具体真机怎么样打开USB调试模式,请百度哈(点击打开USB调试模式)

             真机打开USB调试模式之后,然后连接电脑,命令行adb devices可以查看当前的设备列表信息,不过我现在电脑没有连接真机,所有只有会显示模拟器信息了。      


    现在大家可以看到里边有一台设备已经连接了,不过如果我们需要运行应用的话,那我们必须确保当前只有一台设备已经连接即可了。接下来我们命令行运行以下命令:

    react-native run-android


    接着就是开始编译代码,然后运行程序到设备中了。

    [注意]

    在真机上运行时可能会遇到白屏的情况,请找到并开启悬浮窗权限。比如小米系统设置(点击设置)

            3.1.从设备上面访问实时服务器数据(这边服务器指本地代码)

    当我们启动开发服务的情况下,我们可以通过以下两种方法来更新远程代码来快速的更新修改我们的应用

          [注意]现在很多Android设备以及那个去除了Menu按键了,这时候我们可以通过摇晃设备来进行打开菜单,然后完成应用的重新加载,调试以及其他功能。

    • Android 5.0以上及更高版本,可以使用adb reverse命令

    首先你的设备连接电脑,然后打开USB调试模式。接着命令行运行

    adb reverse tcp:8081 tcp:8081

    然后我们就可以使用Reload JS和其他的开发选项了。

    • Android 以下版本可以通过Wifi连接

    .手机和电脑USB连接并且电脑和手机设备在同一个Wifi网络环境下

    .react-native run-android运行应用。

    .现在发现"红色",继续下面的步骤进行解决,截图如下:


    .摇晃设备输入adb shell input keyevent 82,打开开发者菜单,如下效果:


    .Dev Settings进入,然后选择Debug server host& port for device

    .输入电脑IP址和端口号(主要查看电脑的IP地址哦,这边用我这边的IP地址和端口,具体要根据实际情况哦),截图如下:


    .回到开者菜单,然后选择点击Reload JS。重新加载以下即可。


    ()应用调试(Debugging)-针对Android应用设备

            4.1.访问应用内开发者菜单       

            Android设备我们可以摇晃或者点击菜单键(不过现在很多手机已经没有这个模拟按键了)。如果你使用的是genymotion模拟器,你可以打开应用,然后发现屏幕右下方有一个箭头,点击然后点击菜单图标即可。截图如下:



    [注意]如果我们的APP正式发布的话(Release版本)。默认情况下我们采用gradle的assembleRelease来进行构建即可。或者通过代码ReactInstanceManagersetUseDeveloperSupport方法来进行设置是否开启调试支持。

     4.2.应用刷新

            正常情况下,如果我们只是修改应用的JS代码的话,那么我们可以直接点击Reload JS选择实时刷新即可。但是如果我们修改Android项目中的资源文件(例如res/drawable文件中图片)或者修改Android的源代码,那么就需要重新编译生成应用才可以生效。

     4.3.Chrome开发调试工具

           开发的应用进行调试的时候,我们可以使用Chrome来调试js代码,点击开发菜单中的Debugin Chrome。然后会打开一个网页: http://localhost:8081/debugger-ui   界面截图如下:


    不过第一次打开需要安装ReactDevTools(最好翻墙一下)

    安装方法教程:

    http://facebook.github.io/react/blog/2015/09/02/new-react-developer-tools.html       

    Chrome添加开发调试插件:


    安装完插件,回退到原来的界面,然后刷新一下即可:


            如何打开开发者工具:

    想必做过Web前端开发的人都知道:Chrome中可以使用option+cammod+i打开或者Chrome选择菜单-更多工具-开发者工具来进行打开控制台。不过如果我们的程序出现异常话,可以开启(Pause On Caught Exceptions)。这样程序出现异常的时候,程序会暂停执行可以更好的调试错误。

    真机调试方法:

           .针对Android 5.0或更高版本的设备,可以通过USB连接,然后使用adb命令建立一个设备到电脑的转向端口:命令如下:

    adb reverse tcp:8081 tcp:8081

    或者摇晃打开开发者菜单,选择DevSettings,然后Debug server host for device中设置电脑的IP和端口号。

           .针对Android5.0以下的设备,连接方式Wifi,其他步骤差不多哦。

     4.4..实时刷新JS

            我们可以进行那个如下修改,当我们前端JS代码发生更改的时候,自动让设备进行刷新界面。

             Android平台上面,打开开发者菜单,选择Dev Settings,然后点击Auto reload on JS change选择,不过有些版本好像没有这个更选项了,默认自动刷新的。

    ()最后总结

              今天我们主要讲解了React Native应用设备运行方式和真机方式,主要材料来自React Native官网,这边所有步骤我已经全部测试过下的。因为讲解起来和实际使用还是回遇到各种问题的。大家有问题可以加一下群React Native技术交流群(282693535)或者底下进行回复一下。

           尊重原创,转载请注明:From Sky丶清(http://blog.csdn.net/developer_jiangqq) 侵权必究!

           关注我的订阅号(codedev123),每天分享移动开发技术(Android/IOS),项目管理以及博客文章!(欢迎关注,第一时间推送精彩文章)

    关注我的微博,可以获得更多精彩内容

     

    展开全文
  • 提示:如果该位置位于这台电脑上,请确保设备或驱动器已连接,或者光盘已插入,然后重试。如果该位置位于网络上,请确保你已连接到网络或Internet,然后重试。如果仍然找不到该位置,则它可能已移动或删除。 主要...
  • 本文只针对已经安装并可以正常在威联通nas设备运行Aria2进行远程下载的用户,至于如何在威联通上如何安装Aria2不在本文探讨范围,请参考以下帖子: 威联通Qnap安装Entware-ng和Aria2 QNAP 威联通 NAS ...
  • 提供:ZStack云计算 系列教程本教程为如何配置Linux服务,确保崩溃或重启后自动加以运行系列两篇中的第一篇。内容简介本教程将讲解如何配置系统服务,旨在遭遇崩溃或服务器重启后能够自动加以运行。本示例使用MySQL...
  • 当然,如果您的系统上没有运行“ Windows音频设备图隔离”,则无需进行任何故障排除! 为什么有时会消耗这么多系统资源? (Why Does It Sometimes Consume So Many System Resources?) Unfortunately, poorly ...
  • 如果该位置位于这台电脑上,请确保设备或驱动器已连接,或者光盘已插入。如果该位置位于网络上请确保已连接到网络或Internet,然后重试。如果仍然找不到该位置,则他可能已移动或删除电脑桌面不可用解决方案 电脑桌面...
  • 左键点击系统开始按钮处,依次选择设置-更新和安全-针对开发人员,选择开发人员模式。再重新点击运行
  • 参考如下文章,把API级别设置正确即可。 https://blog.csdn.net/lan120576664/article/details/42387977 ...   通过AVD模拟器部署程序的方法: ...
  • 作为一名大四狗和前端菜鸟,刚来公司实习的第一天老大就安排了我准备用react-native进行移动端的开发其实我对react-native这新玩意懂得不多,只知道它很强大,可以实现跨平台运行啦~所以得抓紧时间布置开发环境来学习...
  • 手机查看正在运行的服务

    千次阅读 2019-01-25 14:21:36
    首先确保开启了开发者选项(以小米6为例) 1、未开启:点击设置==》我的设备==》全部参数==》快速点击MIUI版本(直到提示开发者选项开启)其他手机类似 2、已开启:点击设置==》更多设置==》开发者选项==》正在运行...
  • 后台运行

    万次阅读 2011-12-14 18:34:53
    我从苹果文档中得知,一般的应用在进入后台的时候可以获取一定时间来运行相关任务,也就是说可以在后台运行一小段时间。 还有三种类型的可以运行在后以, 1.音乐 2.location 3.voip 文二 在IOS后台执行是...
  • Android官方入门文档[2]运行你的应用程序 这节课教你 1.运行在真实设备 2.运行在模拟器
  • 如何运行应用依靠两样事情:一台运行安卓系统的设备,AS。这节课将展示如何安装并运行应用到真实的设备上和安卓模拟器上,这两种情况都适用于AS和命令行工具。 在真实的设备运行 如果你有一台运行安卓的设备,...
  • Windows 8 中的运行时内存减少

    千次阅读 2011-10-15 22:41:52
    Windows 8 的运行时内存使用是确定 Windows 8 系统要求以及将承载 Windows 8 的大量设备类型的一个重要因素。如您所知,我们要在基于 SoC 的低功耗设备上交付完整的 Windows 8 体验。这就使得保留大量内存供多个并行...
  • IOS后台运行

    万次阅读 2014-11-28 15:34:13
    IOS的后台运行程序
  • 在KVM中运行苹果操作系统

    千次阅读 2019-01-27 06:37:34
    由于版权的关系,MacOS目前只能在苹果自家的硬件设备运行,虚拟机方面只有VMWare。本文介绍一种在Linux KVM下运行的方式,请确保在MacOS下运行你的Linux虚拟机,当然一般的Linux系统可以, 但是因为版权的问题,...
  • 运行维护管理制度

    万次阅读 2019-05-20 15:13:45
    第一条为保障公司信息系统软硬件设备的良好运行,使员工的运维工作制度化、流程化、规范化,特制订本制度。 第二条运维工作总体目标:立足根本促发展,开拓运维新局面。在企业发展壮大时期,通过网络、桌面、系统等...
  • 设备扫码巡检微信小程序

    千次阅读 2020-09-25 13:53:04
    缺陷隐患上报慢:发现设备运行异常或存在缺陷时,不能及时上报,维修人员无法快速响应 检查不到位:纸笔记录容易错漏,文字描述不够直观,记录真实性得不到保证 数据处理繁琐:纸质记录的数据,后期统计...
  • ART运行时垃圾收集(GC)过程分析

    万次阅读 多人点赞 2015-01-26 00:58:26
    ART运行时与Dalvik虚拟机一样,都使用了Mark-Sweep算法进行垃圾回收,因此它们的垃圾回收流程在总体上是一致的。但是ART运行时对堆的划分更加细致,因而在此基础上实现了更多样的回收策略。不同的策略有不同的回收...
  • 工作量证明生态的现状与运行原理

    万次阅读 2019-05-14 10:04:27
    工作量证明生态的现状和运行原理,Part-1 2019 年是密码学货币的 51% 攻击之年,因为 51% 攻击曾经似乎只是一些市值微不足道的密码学货币面临的问题,然而我们发现如今那些拥有比较高的知名度和市值的密码学货币...
  • 设备分配

    千次阅读 2017-10-08 09:34:07
    ----- 在多道程序环境下,系统中的设备供所有进程共享。为防止诸进程对系统资源的无序竞争,特...在有的系统中,为了确保在CPU与设备之间能进行通信,还应分配相应的控制器和通道。 1、设备分配中的数据结构 ---
  • 停止运行-应用程序已经终止,或者还未启动。 不活动-应用程序处于前台但不再接收事件(例如,用户在app处于活动时锁住了设备)。 活动-app处于“使用中”的状态。 后台-app不再屏幕上显示,但它仍然...
  • pci设备身份识别码介绍说明

    千次阅读 2013-10-11 12:22:56
    通过VID、DID、SID、SVID、RID及CC等6个识别代码对某一个PCI设备进行最终身份识别,并通过这些代码引导操作系统检测设备状态、发现新设备,安装设备不同版本的驱动等工作,并最终确保设备在系统平台内正常安全运行。...
  • 导读:之前推荐过一篇等级保护安全设备配置方案,那么,这些安全设备都是什么样的设备呢?有什么功能?如何部署?给大家推荐这篇安全设备知识点汇总。   网络安全等级保护网络设备、安全设备知识点汇总 本文...
  • 设备的分配

    千次阅读 2019-08-27 21:07:11
    当进程向系统提出I/O请求后,由设备分配程序按照一定的策略把所要求的设备分配给该进程,为确保CPU与设备之间能进行通信,还应分配相应的控制器和通道。 二、设备分配时应考虑的因素 系统必须具有一种合理的设备...
  • Android CTS测试

    千次阅读 2017-08-08 19:19:36
    CTS全称Compatibility Test Suite兼容性测试工具,为了保证开发的应用在所有兼容Android的设备上正常运行,并保证一致的用户体验,Google制定了CTS来确保设备运行的Android系统全面兼容Android规范,Google也提供了...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 234,631
精华内容 93,852
关键字:

如何确保设备运行