前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何开发适配安卓和iOS双平台的React Native应用

如何开发适配安卓和iOS双平台的React Native应用

作者头像
IT架构圈
发布2018-05-31 15:40:36
3.3K0
发布2018-05-31 15:40:36
举报
文章被收录于专栏:IT架构圈

众所周知用React Native是可以开发跨平台的Android和iOS App。我们可以用React Native开发Android应用也可以开发iOS应用,那么如何让我们开发的React Native应用适配Android和iOS双平台呢?

在这篇文章中我将从布局、组件选择、图片、性能问题、Bugs等几个方面来谈一谈Android和iOS的适配问题。

布局

React Native在布局方面采用的是Flexbox,为了能让代码有更高复用性以及兼容性,我们可以将Android和iOS的样式尽量保持一致。

善用Platform.OS

为了提高代码的兼容性,我们有时需要判断当前系统的平台,然后做一些适配。比如,我们在使用StatusBar做导航栏的时候,在iOS平台下根视图的位置默认情况下是占据状态栏的位置的,我们通常希望状态栏下面能显示一个导航栏,所以我们需要为StatusBar的外部容器设置一个高度:

代码语言:javascript
复制
<View style=>
    <StatusBar {...this.props.statusBar} /> </View>;

源代码

另外,在为视图设置阴影的时候我们需要用到Shadow Propsapi,而该api支持iOS平台,在Android平台下设置阴影我们需要用到elevation

留意api doc的android或ios标识

并不是所有React Native的一些api或组件的一些属性和方法都兼容Android和iOS,在React Native的api doc中通常会在一些属性或方法的前面加上android或ios的字样来标识该属性或方法所支持的平台,如:

代码语言:javascript
复制
android renderToHardwareTextureAndroid boolios shouldRasterizeIOS bool

在上述代码中,renderToHardwareTextureAndroid bool只支持Android平台,ios shouldRasterizeIOS bool只支持iOS平台,所有我们在使用这些带有标记的属性或方法的时候就需要考虑对于它们不兼容的平台我们是否需要做相应的适配了。

组件选择

React Native发展到现在已经有相当丰富的组件来供开发者使用,那么从适配Android和iOS平台的角度如何甄选这些组件呢?

比如,我们要开发一款应用需要用到导航组件,在React Native组件中有NavigatorIOSNavigator两个导航组件来供我们选择,从api doc中我们可以看出NavigatorIOS只支持iOS平台,Navigator则两个平台都支持。 所以如果我们要开发的应用需要适配Android和iOS,那么Navigator才是最佳的选择。

另外,类似的例子还有底部导航的TabBarIOSToolbarAndroid 等。

心得:为了提高代码的复用性与兼容性建议大家在选择React Native组件的时候要多留意该组件是不是兼容Android和iOS,尽量选择Android和iOS平台都兼容的组件。

图片适配

开发一款应用少不了的需要用到图标。无论是Android还是iOS,现在不同分辨率的设备越来越多,我们希望这些图标能够适配不同分辨率的设备。为此我们需要为每个图标提供1x、2x、3x三种大小的尺寸,React Native会根据屏幕的分辨率来动态的选择显示不同尺寸的图片。比如:在img目录下有如下三种尺寸的check.png

代码语言:javascript
复制
└── img
    ├── check.png
    ├── check@2x.png
    └── check@3x.png

那么我们就可以通过下面的方式来使用check.png

代码语言:javascript
复制
<Image source={require('./img/check.png')} />

提示:我们在使用具有不同分辨率的图标时,一定要引用标准分辨率的图片如require('./img/check.png'),如果我们这样写require('./img/check@2x.png'),那么应用在不同分辨率的设备上都只会显示check@2x.png图片,也就无法达到图片自适配的效果。

性能问题

对于大多数想用React Native开发应用的开发者来说,都很关心React Native的性能问题,React Native和H5+WebView以及原生应用之间的性能对比是:WebView<React Native<原生应用。从大多说采用React Native开发应用的开发者的反馈来看,React Native的性能是远大于WebView但略低于原生应用,毕竟React Native和原生语言之间还需要一个Bridge。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-03-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 编程坑太多 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 布局
    • 善用Platform.OS
      • 留意api doc的android或ios标识
      • 组件选择
      • 图片适配
      • 性能问题
      相关产品与服务
      容器服务
      腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档