react native 中文permissions拒绝之后怎么开启

中国领先的IT技术网站
51CTO旗下网站
苹果爸爸发飙,封杀 React Native?
所谓的动态下发代码,就是我们常说的热修复、热更新,就是在我们无需发布的版本的情况下,就可以修复bug ,发布功能,因为iOS审核的机制,这项能力在iOS界非常重要。
作者:stormzhang| 13:29
今天早上一上班,就收到了苹果发来的一封警告邮件,一看内容,就知道这是个大事啊,还赶紧发了个微博,然后,今天一整天,iOS界都被这个消息炸裂了!
这封警告邮件大概意思就是说,苹果将不再允许使用动态下发代码的机制,如果App内部使用了动态下发代码的框架,将有被拒的风险。
所谓的动态下发代码,就是我们常说的热修复、热更新,就是在我们无需发布的版本的情况下,就可以修复bug ,发布功能,因为iOS审核的机制,这项能力在iOS界非常重要。
在iOS界拥有动态下发能力的有以下几个框架:JSPatch、Rollout、React Native、Weex。
其中 JSPatch 跟 Rollout 是专门的热更新框架,JSPatch 国内应用使用很广泛,包括我们家的也是,Rollout
则是国外使用的较多,是这次针对的主要对象,之前苹果针对这种热更新是睁只眼闭只眼,而这次则是下定了决心要整改,毕竟绕过了苹果爸爸的审核机制,如果以后不加管理,岂不逃出了爸爸的法眼。
这个倒还好,大不了不用热更新罢了,但是一些 App 中使用 React Native 和 Weex
的开发者,同样有人收到了苹果的警告邮件,这可就炸开了锅,要知道 RN、Weex 这种是大厂推出的跨平台框架,这要是被封杀了,一些大厂的 App
要重写就夸张了,这可是致命的打击。
但是在还没确定结论的情况下,之前学很长时间 RN 的同学简直要懵逼了,还有一些没学的同学甚至幸灾乐祸,暗自庆幸,幸亏没学啊,甚至有谣言传有公司把整个 RN
部门都砍了,真是有点看不下去了,所以我觉得应该弄清楚原因,写篇文章。
了解到,这次事情的主要起因在 App Store Review Guide Line 的 2.5.2 这条:
2.5.2 Apps should be self-contained in their bundles, and may not read or
write data outside the designated container area, nor may they download,
install, or execute code, including other iOS, watchOS, macOS, or tvOS apps.
这是在 16 年 WWDC 之后新更新的一条规则。什么意思呢?意思是说,所有被执行的代码都应该包含在 App 里,不能下载代码到本地执行。下发的无论是
OC 还是 JS 或者其他形式的代码,都可以被认为违反了这条规则,都有被拒的风险。
看到这里,我大概就明白了,苹果本次主要是针对下发代码,而 React Native、Weex
这类框架刚好也具备了下发代码的能力,但是他们的主要职责不是为了解决热更新而存在的,而是一种跨平台的解决方案,所以,虽然苹果官方没说明,但是我认为,只是刚好在这个风口浪尖,躺枪了而已。
所以,有些人听风就是雨,不要这么着急下结论,RN、Weex
这种跨平台解决方案虽然现在还不成熟,使用范围也没那么广,我个人也不推荐现在在商业项目使用,但是暂时不用担心会被苹果封杀,如果真的被苹果封杀了,那么微信小程序就不会同意审核过了,因为本质上微信小程序也是类似
RN 的一套方案,请大家具备点基本的思考能力。
而且 React Native 官方也做了回应,说不会受影响,地址在这里:
看似苹果的事跟 Android 开发者无关,但是如果苹果封杀了React Native,那么Android界也会受影响,毕竟采用 RN
主要是为了跨平台,苹果都不支持了,谁还会用 RN 来开发Android 啊,故此,写篇文章给大家说明下。
顺便说下,针对这次苹果事件的解决方案,你们家的iOS App很可能会用到:
1. 国内App如果有在使用JSPatch的,那么请移除,目前没有其他更好的方案;
2. 更新或者移除一些第三方使用JSPatch的SDK,目前已知的有高德地图、BugTags、个推、Bugly。
另外,说个题外话,这次事件一出,JSPatch GitHub 官方库的 Issues
有人寻求证实与解决方案,谁知道引来一群吃瓜群众围观、盖楼,那场景相当壮观,只能说中国人把 GitHub 玩坏了,GitHub
本是一个讨论技术的开源社区,把这种不良的风气带到 GitHub 上真的看不下去,在这里呼吁大家,以后不要在 GitHub 干这种事!
地址在这里:
最后,这事一出,很多 iOS 开发者开骂苹果爸爸太霸道,其实我想说,知足吧,身在福中不知福,如果我谷爹能偶尔霸道一回,Android
开发者们估计要高兴疯了!
【本文为51CTO专栏作者&stormzhang&原创稿件,转载请联系原作者(微信号:googdev)】
【编辑推荐】
【责任编辑: TEL:(010)】
大家都在看猜你喜欢
薄荷科技 Android开发主管
本周排行本月排行
讲师:108833人学习过
讲师:27114人学习过
讲师:91250人学习过React Native实战(一):配置和起步
发表于 15:40|
作者廖祜秋
摘要:MDCC 2015平台与技术Android专场与会讲师——阿里巴巴工程师 廖祜秋以《React Native for Android》为主题,将在大会上深度分享React Native 下的 Android 开发,先行撰文对React Native进行实战,本文为第一篇。
10月14日-16日,由CSDN和创新工场联合主办的将在北京新云南皇冠假日酒店隆重召开,现在抢注大会门票,即享多重好礼!
Facebook开源React Native也势要统一移动端编程语言,而其提前发布React Native for Android更是引得国内外开发者一众热捧。MDCC
2015平台与技术Android专场与会讲师——阿里巴巴工程师 廖祜秋以《React Native for Android》为主题,将在大会上深度分享React
Native 下的 Android 开发,先行撰文对React Native进行实战,本文为第一篇。
图:阿里巴巴工程师 廖祜秋
以下为正文:
2015 年 9 月 15 号,React Native for Android 发布。至此,React 基本完成了对多端的支持。基于 React
/ React Native 可以:
HTML5、Android、iOS 多端代码复用;
实时热部署。
在接下来的时间,我会通过一系列文章来介绍 React Native。本文介绍环境配置以及如何建立一个简单的项目。(注:本篇文章 iOS 和
Android 开发都适用。)
目前使用 React Native 开发只能在 Mac 系统 上进行。写 iOS 的同学,应该都是 Mac (除了听说网易有些部门写 iOS
给黑苹果之外,哈哈哈哈)。 开发 Android 的同学, 如果公司配发的不是 Mac 的话,建议自己入手一个,能显著提高生产力,就当投资自己吧。我大阿里对
Android 开发也是不给 Mac 的(不知道公司什么思路,现在倒是可以申请 Mac air了,air的性能……),所以我也是自己买的。
需要安装的有:
Homebrew 是 Mac 中的一个包管理器。没有安装的话,点击
安装,我的版本如下:
mac-2:~ srain$ brew -v
Homebrew 0.9.5 (git revision ac9a7; last commit )
版本过低将会导致无法安装后续几个组件。可用 brew update 升级。
Node.js 需要 4.0 及其以上版本。安装好之后,npm 也有了。
安装 Node.js
nvm 是 Node.js 的版本管理器,可以轻松安装各个版本的 Node.js 版本。
安装 nvm 可以通过 Homebrew 安装:
brew install nvm
的方法安装。
然后安装 Node.js:
nvm install node && nvm alias default node
也可以直接下载安装 Node.js:
安装好之后,如下:
mac-2:react-native srain$ node -v
mac-2:react-native srain$ npm -v
这两个包分别是监控文件变化和类型检查的。安装如下:
brew install watchman
brew install flow
安装 React-Native
安装即可:
npm install -g react-native-cli
App开发环境的设置
XCode 6.3 及其以上即可。
这个比较麻烦。
设置环境变量:ANDROID_HOME
export ANDROID_HOME=/usr/local/opt/android-sdk
SDK Manager 安装以下包:
Android SDK Build-tools version 23.0.1
Android 6.0 (API 23)
Android Support Repository
初始化一个项目
文档提到:
react-native init AwesomeProject
初始化一个项目,其中 AwesomeProject 是项目名字,这个随意。等待一段时间之后(具体视网络情况而定),项目初始化完成。
进入到项目目录:
cd AwesomeProject
mac-2:AwesomeProject srain$ ls -l
drwxr-xr-x
476 Sep 21 09:52 android
-rw-r--r--
1023 Sep 21 11:47 index.android.js
-rw-r--r--
1065 Sep 20 11:58 index.ios.js
drwxr-xr-x
204 Sep 20 11:58 ios
drwxr-xr-x
170 Sep 21 10:31 node_modules
-rw-r--r--
209 Sep 20 11:58 package.json
其中 android 和 ios 中分别为两个平台的项目文件。index.android.js 和 index.ios.js 为两个页面对应的
不管是 iOS 还是 Android,在开发调试阶段,都需要在 Mac 上启动一个 HTTP 服务,称为“Debug Server”,默认运行在
8081 端口,APP 通 Debug Server 加载 js。
iOS 和 Android 的模拟器,连接 Mac 本机的服务都很方便。但是通过 USB 或者 WiFi 连接调试,就稍微麻烦一些了。
还是非常简单,XCode 打开项目,点击运行就好。修改 index.ios.js, 在模拟器中 ? + R 重新载入 js 即可看到相应的变化。
iOS 真机调试也简单,修改HTTP地址即可。
jsCodeLocation = [NSURL URLWithString:@"http://localhost:8081/index.ios.bundle"];
按照官方文档,需要一个模拟器(Genymotion模拟器也可以)。但是不像 iOS,Android 开发平时更多是直接用真机进行开发和调试,如何运行部署到真机,下面会提到。
运行命令:
react-native run-android
然后就会部署到模拟器,修改 index.android.js ,调出模拟器菜单键,选择重新载入 js 即可看到变化。
Android 真机调试
示例 App 直接部署到真机,红色界面报错,无法连接到 Debug Server。
如果是 5.0 或者以上机型,可通过 adb 反向代理端口,将 Mac 端口反向代理到测试机上。
adb reverse tcp:8081 tcp:8081
如果 5.0 以下机器,应用安装到测试机上之后,摇动设备,在弹出菜单中选择 Dev Setting & Debug Server host
for device,然后填入 Mac 的 IP 地址(ifconfig 命令可查看本机 IP)
关于修改 DevHelper 来进行和 iOS 一样的开发调试,后续关于热部署时,我会介绍到。
在 Android Studio 中调试开发
我们可能希望在 Android Studio 打开项目,然后编译部署到真机。
这个时候,在命令行启动 Debug Server 即可:
react-native start
结论和后续
本篇文章,iOS 和 Android 都适用。至此,环境配置和示例项目运行应该都好了。后续我会继续发几篇文章介绍:
重点介绍 Android 相关的开发:包括组件,源码分析等;
动态热部署;
多端代码复用。
官方文档:
时间仓促,水平有限,如有谬误,还请纠正,原始文档在。
将于10月14日-16日在北京新云南皇冠假日酒店召开。大会特设九大技术专场:平台与技术(iOS)、平台与技术(Android)、平台与技术(跨平台)、产品与设计、游戏开发、企业移动化、虚拟现实专场、硬件开发与技术、嵌入式开发。大会将聚集国内最具实力的产品技术团队,与开发者一道进行最前沿的探讨与交流。&
第一时间掌握最新移动开发相关信息和技术,请关注mobilehub公众微信号(ID: mobilehub)。
推荐阅读相关主题:
CSDN官方微信
扫描二维码,向CSDN吐槽
微信号:CSDNnews
相关热门文章8460人阅读
工作遇到问题摘要(3)
在react-native 0.26.0 版本 1. 引入头文件 var &类名 = './类名' 会报& 解决方法 export const 类名 = './类名';
2. 添加tabBar 时添加&selected = { this.state.selectedTab === 'FaceMash' } &这句话 ,会报&null not an object(evaluating this.state.selectedTab) &提示这个错误,解决方法添加 &constructor(props){
& & super(props);
& & this.state={
& & & & &selectedTab: 'FaceMash',
& & & &notifCount: 0,
& & & &presses: 0,
&这俩个一定要一起使用
在安卓真机上调试出现如下错误
解决步骤:1.找到manifests 文件夹下的 AndroidManifest.xml 打开在
application 前加
&uses-permission android:name=&android.permission.INTERNET& /&
这是添加网络请求的
2.&通过WiFi 来连接上你的开发者服务器让调试用电脑和你的手机必须处于相同的 WiFi 网络中下打开震动菜单 (摇动设备)前往&Dev Settings选择&Debug server host for device输入调试用电脑的局域网IP
:8081点击&Reload JS在安卓模拟器出现如上图所示的错误按照上面的步骤还是不能解决你的问题,
1.先看你的服务是否开启,如果没开启在终端运行react-native start 开启服务
2.在模拟器的浏览器里面输入
看看能否打开,如果不能打开时要打开你的虚拟机 VirtualBox 选中你正在运行的模拟器设备点设置选中里面网络 网卡2 查看下面链接方式选中是否是网络地址转换(NAT)选择其它方式是在模拟器无法上网
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:37319次
排名:千里之外
原创:22篇
转载:46篇
(7)(10)(2)(4)(5)(1)(4)(3)(5)(5)(2)(1)(1)(3)(1)(1)(3)(8)(1)(1)
(window.slotbydup = window.slotbydup || []).push({
id: '4740881',
container: s,
size: '200,200',
display: 'inlay-fix'react native初尝试
react native初尝试
这两天项目刚上完线,然后就想撸一把react native,大家或多或少都听说过它。刚刚终于是在android模拟器上跑了起来,看到了页面(刚刚的心情很是开心,哈哈哈),中间也遇到了一些问题,记录下来。学习的话,现在是去react native 中文档,点击首页下面的“开始使用React Native”,就会进入环境搭建页面,它会让你选择目标平台就是Android或者iOS了,其实这暂时不重要了,因为将来肯定是想要在这两个平台上都跑起来了,所以目前重要的是搭建开发环境了,后面会让选择开发平台,我是mac的,故而选择了macOS了,然后就是装Homebrew和Node了,按照官网提示一步步走应该没啥问题。如果环境安装ok的话,下来就是开发工具了,我选择的是WebStorm,因为我是Android开发,Android studio都是照着WebStorm它家的intellij idea出的,所以选择我们最熟悉的开发工具,另外现在前端同学用这个的也蛮多的了。好,接下来建项目,首先新建一个文件夹,我的就叫“reactfirst”,然后打开终端cd到这个目录下面执行react-native init &你的项目名字&,我的项目名字就叫“firstreact”,所以我的命令是react-native init firstreact,执行这个命令时候能够看到:它在下载项目所需要的一些依赖包,当创建成功时候能够看到如下:,接下来我们可以用webstorm打开项目,可以看到如下的目录结构:可以看到,里面有个android和ios文件夹,其实它俩一个就是android项目可用android studio打开,一个是ios项目可以用xcode打开,打开android目录,我们就可以看到很熟悉的android项目目录结构了,而打开ios目录,我目前还看不懂,哈哈。而index.android.js则是react native的android的入口文件,同样,index.ios.js则是react native的ios的入口文件了。package.json则是一些依赖包的配置,有点类似于我们的build.gradle文件吧。文件目录大致就是这个样子,不需要改什么,它就是可运行的。既然我是做android的,那就首先在android设备上运行下看看效果吧,首先在终端,cd到该项目的根目录下面,而我的就是firstreact目录了,然后执行react-native run-android就会执行安装操作,在这里遇到了两个问题。问题一,运行报错如下:A problem occurred configuring project ':app'.& You have not accepted the license agreements of the following SDK components:[Android SDK Platform 23, Android SDK Build-Tools 23.0.1].Before building your project, you need to accept the license agreements and complete the installation of the missing components using the Android Studio SDK Manager.总说我要用这个版本的sdk以及构建工具,需要接受同意证书,可是压根就没有什么证书呀,后来谷歌也无结果,但是我打开sdk跟目录看到有一个licenses文件夹,我就索性简单粗暴的将其拷贝到platform-tools下面,报错提示就是需要在这个目录下面accept了,后来发现,这个接受也只需要一次就够了,因为后面我把platform-tools的licenses文件夹删除了,依然是可以运行的的。问题二,就是在mac上一定要正确配置ANDROID_HOME路径了,否则总会报找不到对应版本sdk或者无法install sdk了。ANDROID_HOME是sdk的根目录,而不是我们平时要用adb命令配置的platform-tools的目录路径。如果没有正确配置ANDROID_HOME,那就把sdk路径配置到项目里面吧,大家应该都记得在android项目里面有个local.properties文件,里面就配置了sdk.dir就sdk根目录,将这个文件拷贝到我们新建的react native项目的android文件夹下面这个问题也能够解决。以上两个问题解决后,再次执行react-native run-android,会看到如下:会看到它在从jcenter下载很多依赖包,里面有我们熟悉的okhttp3等等了,就跟我们平时执行gradle clean install一样一样的。当这些包下载完毕,就会看到:已经install成功了,启动的activity也显示出来了,同时能够在模拟器上看到界面如下:至此算是成功的跑起来了,其实在启动的过程中会启动一个js server即js服务器了,意思就是react native代码会部署到这台服务器上面,这样改动了react native理论上是不需要重新安装这个apk的了。
本文仅代表作者观点,不代表百度立场。系作者授权百家号发表,未经许可不得转载。
百家号 最近更新:
简介: 冰点—我的平台你做主!
作者最新文章}

我要回帖

更多关于 react native video 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信