专栏首页我只不过是出来写写iOSweex踩坑记(一)——weex打开iPad模拟器

weex踩坑记(一)——weex打开iPad模拟器

最近的一个项目中用到了阿里的weex开发框架,着手写这系列的文章,我会把项目工程中碰到的各种问题以及解决方案一一呈现出来。记录一下那段不分昼夜的9107工作历程,同时也给后来准备入坑的weex开发者,尤其是对于iOS端原生开发者提供一系列参考和帮助。首先要吐槽下,同为混合开发框架,React Native的技术社区完善不知道甩了weex几条街,但还是希望自己的经验能为weex开发者带来一些帮助

weex 集成过程在官网已经有比较详细的介绍(官网链接) 项目在立项初,决定使用 weex 混合开发框架运行在 iPad 端上。按照官网的流程,很顺利的创建了一个新 weex 空白项目 接下来,碰到了第一个坑。在项目工程路径下执行 weex run ios 命令后,发现没有 iPad 相关的模拟器,只有 iPhone 相关机型的。总不能和领导说,weex 不支持 iPad 端模拟器调试? 想了想,既然 weex 调用的是 Xcode 中的模拟器,那么肯定会获取到 Xcode 中模拟器列表。如果强行给 weex 调用一个不存在的模拟器会发生什么?带着疑问,去尝试调了下,weex 果然报了错,而且给出了下面的 weex 内部文件报错路径

~/.xtoolkit/node_modules/weexpack/lib/utils/index.js

猜测这个可能就是控制调试Xcode模拟器的文件,打开该文件后尝试在源码中搜索一些模拟器相关的关键词,比如:SimulatoriPad。 也许是自己运气好,一下子就发现了问题根源,如下图

weex源码问题根源

原来是 weex 执行文件中,将从 Xcode 获取到的模拟器列表中,包含 Watch、TV、iPad 模拟器全部过滤掉。 果断删除掉源文件中的下列代码,然后保存退出。

|| line.indexOf('iPad') >= 0 

再次执行 weex run ios命令,等待一阵后。得偿所愿,看到了 iPad 端相关的模拟器列表,选中指定的 iPad 模拟器,成功运行了起来。 (PS:自己的Xcode中只保留了部分机型模拟器)

成功找到iPad模拟器

虽然问题成功解决,但细细回想,为什么 weex 中默认是要屏蔽 iPad 端的模拟器调试呢?后来和前端开发的同事交流了下,因为牵扯到屏幕适配问题,而这又是另外一个坑。。

在后续的开发过程中,碰到了一次 Xcode 自动升级,从9.4.1升至10.0版本。关于 Xcode 这次升级,对于开发者影响最大的就是官方iOS12.0中全部采用 libc++ 代替 lstdc++ 的动态库,在 Xcode 中无法找到 lstdc++.6.0.9.tbd 动态库。而项目使用的 SuperMap SDK 又要必须 lstdc++.6.0.9.tbd 支持,我在superMap论坛上提问并得到官方的回复后(问题链接),无奈的决定将 Xcode 回滚至9.4.1版本。 因为 Xcode 版本回滚缘故,导致 weex 运行时找不到 device的错误,因为模拟器路径缓存问题(安装回旧版本,模拟器虽然显示11.4老版本)

weex提示找不到Device

这时,需要重启Mac,然后在 Xcode 中手动添加模拟器。添加完成后,再次运行 weex 命令,即可正常调用模拟器

Xcode手动添加模拟器

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • RAC(ReactiveCocoa)介绍(九)——RACSubject流程分析

    之前介绍了RACSignal类以及使用方法,这次要介绍的是RACSignal的子类:RACSubject。 先看下RACSubject基本使用方法:

    我只不过是出来写写代码
  • imageNamed与dataWithContentOfFile加载图片的区别

    1、使用imageNamed函数: [UIImage imageNamed:@"ImageName"];

    我只不过是出来写写代码
  • RAC(ReactiveCocoa)介绍(二)——map映射

    Map(映射) RAC中包含两种映射方法map、flattenMap,映射方法是将原信号中的内容映射成新的指定内容。 通过对比,从map的实现方法中可以看出...

    我只不过是出来写写代码
  • 写给前端工程师的10条实用原则

    为了保证可读性,本文采用意译而非直译。另外,本文版权归原作者所有,翻译仅用于学习。

    Fundebug
  • 为什么很多大学教的软件技术都是过时的,还乐此不疲的继续教学生这些淘汰的课程?

    这种现象在大学里面是事实存在的,这种属于历史遗留下来的问题,毕竟学校和直接社会上企业出发点有着本质的区别,很多人在校的大学生反应在学校开设的课程感觉距离直接出去...

    程序员互动联盟
  • ExtJs十三(ExtJs Mvc图片管理之三)

    现在要完成目录的编辑操作。因为目录的编辑只是改变目录名称,因而使用Cellediting插件就可完成工作。要完成这个不难,首先在目录树的定义中加入以下语句隐藏列...

    aehyok
  • weex 踩坑笔记 【原创】

    weex 踩坑笔记 Write By CS逍遥剑仙 我的主页: www.csxiaoyao.com GitHub: github.com/cs...

    CS逍遥剑仙
  • Xcode10 Pod第三方库找不到lstdc++ 6.0.9

    苹果在XCode10和iOS12中移除了libstdc++这个库,由libc++这个库取而代之,苹果的解释是libstdc++已经标记为废弃有5年了,建议大家使...

    ZY_FlyWay
  • 带你入坑01-weex-搭建环境

    安装 Node.js 环境成功后,npm 包管理工具也会自动安装成功 输入下面命令检查一下

    酷走天涯
  • 硬件工程师离不开的那些电路设计工具,你会有几个呢

      EDA技术是在电子CAD技术基础上发展起来的计算机软件系统,是指以计算机为工作平台,融合了应用电子技术、计算机技术、信息处理及智能化技术的 最新成果,进行电...

    用户6754675

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动