当前位置: 首页 > news >正文

门户网站舆情怎么做做网站推广方法有哪些

门户网站舆情怎么做,做网站推广方法有哪些,沧州网站建设推广,专业网站建设案例zsource 命令是什么#xff1f; 美团 App 在 2015 年就已经基于 CocoaPods 完成了组件化的工作。在组件化的改造过程中#xff0c;为了能够加速整体工程的构建速度#xff0c;我们对需要集成进美团 App 的组件进行了二进制化#xff0c;同时提供一个叫做 cocoapods-binary … zsource 命令是什么 美团 App 在 2015 年就已经基于 CocoaPods 完成了组件化的工作。在组件化的改造过程中为了能够加速整体工程的构建速度我们对需要集成进美团 App 的组件进行了二进制化同时提供一个叫做 cocoapods-binary 的 CocoaPods 插件来支持本地工程使用二进制。因此美团 App 的开发者在集成开发时除了自己正在开发的组件其他的组件都以二进制的形式存在。 使用二进制虽然会给工程带来构建速度的提升但是会带来一个新的问题在调试工程时那些使用二进制的组件无法像源码调试那样看到足够丰富的调试信息。例如如果程序在二进制组件的代码中崩溃我们只能看到该组件的堆栈信息和一些不明所以的汇编代码 和业界大多的组件化方案类似美团 App 的组件化方案也提供了将一个组件从二进制切换到源码的机制。美团工程的开发者能够使用一系列配置和命令来切换组件的源码和二进制状态但每次切换都需要重新执行 pod install。这种方式在组件化的初期是没有什么问题的。但随着美团 App 的组件数量不断增长即便是只切换一个组件的状态单次 pod install 的时间也增长到了分钟级。而且这种方式每切换一次就必须重新编译运行一次 App在追查一些偶现崩溃问题时开发体验非常不友好也不利于崩溃问题的快速定位分析。 为了解决以上提到的这些问题我们利用 CocoaPods 的插件机制为 CocoaPods 的 pod 命令增加了 zsource 子命令开发者可以在使用二进制构建工程的同时非常快速地将一个组件调出源码进行调试具体的使用效果可以看一下如下的屏幕录制 zsource 命令的开发始末 在推出 zsource 功能后很多同学都对 zsource 背后的技术原理十分感兴趣。其实 zsource 整个功能的开发流程也十分的有趣就像小说一样分为几个不同的时期 原理猜想查阅资料简单粗暴的尝试柳暗花明工程化原理猜想 如果让我们猜想 Xcode 断点调试功能的实现原理可能大部分人都会猜这样一种可能Xcode 在编译 Debug 版本的二进制过程中在二进制中某个字段存储了该二进制所对应的源码的文件地址。当我们在 Xcode 中打断点进行调试的时候Xcode 会根据二进制中这个字段中存储的源码文件地址打开对应的源码文件并在 UI 上展示该源码文件。 道理好像没有什么问题但是事实是这样吗在某次团建回国的航班上我们组成威和志宇两位同学在提出这种猜想后拿出电脑做了一个这样的小实验 实验中他们分别创建了两个 Xcode 工程 A 和 B工程 A 会产出一个二进制 libA.a。工程 B 中会接将 A 的产出 libA.a 拖到工程中然后设置 A 中代码的符号断点然后编译运行。结果发现当断点断在 A 中的代码时Xcode 会直接跳转到 A 的源文件中并且可以继续增加断点以及正常的单步调试。 通过这个实验成威和志宇同学确定了猜想的正确性。那么接下来需要做的就是确定二进制中这个源文件地址信息具体藏在哪一个字段中。 查阅资料 我们都知道苹果的 Mach-O 二进制文件使用的是 DWARF 这种格式来存放调试相关的数据的。但因为我们很难从这个问题中提炼几个精确的关键词在搜索引擎中检索所以很难通过简单的几次检索就获取到我们想要的答案二进制这个字段的名称在初期甚至无法确定这个字段应该是从 Mach-O 的资料中检索还是从 DWARF 的资料中检索。 在没有太好的搜索结果的情况下我们一度曾经想尝试去从头去啃一啃找到的一些二进制相关的文档 osx-abi-macho-file-format-referenceIntroduction to the DWARF Debugging FormatDWARF 1.1.0 Reference简单粗暴的尝试 然而由于对二进制格式不是那么熟悉也不太了解二进制相关的词汇和概念所以阅读文档的速度就非常缓慢。 不过技术的有趣之处就在于有时候你可以基于我们的猜想任意去尝试跳过艰辛的文档阅读过程。在文档阅读遇到挫折后我们猜想二进制中很有可能也是用字符来存储这些源码信息的那么如果我们就把二进制当做字符来看是不是能搜到一些东西呢 于是我们试着做了一个比较简单的二进制文件二进制文件中仅仅包含一个 ZSCViewController然后用 xxd 这个命令尝试读取二进制中的内容考虑到 xxd 的输出会折行我们选取了 ZSCViewController 字符串的子串进行过滤 xxd ./libZSource.a | grep -C 5 ZSCViewControlle果真得到了一些结果 通过这个实验我们确定了二进制中源码文件的路径确实是用普通的字符来存储的紧接着我们用 MachOViewer 来查看二进制文件以获取到更友好的二进制信息。利用 MachOViewer我们可以发现这些信息都存在了二进制的 “__debug_str” Section 中。 虽然还是不确定这个地址所对应的字段叫什么但研究到这里我们还是有所进展的最起码我们可以假定这个路径一定是紧跟在 “Apple LLVM version 10.0.0 ” 字符后面的然后利用一些读取 Mach-O 的 Ruby 库比如 ruby-macho基于这个假定来读取这个路径为这个特性的工具化提供一丝可能性。 柳暗花明 简单的尝试没有得到想要的答案但透过 Section 的名字可以确定源码文件的路径信息和 DWARF 有关。 长时间和 CI 打交道的经验告诉我们对于每一种二进制格式苹果公司都会提供一个可以专门用于解析的命令行工具所以我们就尝试找了找有没有解析二进制中 DWARF 格式的命令行工具。 功夫不负有心人我们找到了 dwarfdump那么用它来看看之前的那个二进制文件 dwarfdump ./libZSource.a | grep ZSCViewContro果然有了更好的输出 这里我们注意到了 AT_name 这个字段名。拿着这个字段名去前面给出的 DWARF 1.1.0 Reference 文档中查阅我们可以得知 An AT_name attribute whose value is a null-terminated string containing the full or relative path name of the primary source file from which the compilation unit was derived. 进一步查询我们可以找到另一个和他类似的字段 —— AT_comp_dir An AT_comp_dir attribute whose value is a null-terminated string containing the current working directory of the compilation command that produced this compilation unit in whatever form makes sense Forelax the host system. 看起来这两个字段就是我们所苦苦追寻的答案了。 工程化 通过实验以及找到的这两个字段的描述我们基本可以确定即便工程是使用二进制构建只要二进制 AT_name 字段中的路径存在对应的源码文件App 一样可以使用源码进行断点调试。这种调试方式除了修改源码再次构建不能生效以外其他的调试场景都和直接使用源码构建无异。考虑到我们日常的调试场景绝大多数都只需要查看其他组件的源码并不需要修改把这个功能工程化还是非常有意义的。 那接下来的事情就比较简单了 首先我们需要确定大部分美团使用的组件二进制的编译目录是相同的。这样就方便我们在本地某个路径下统一管理下载的源码文件。接下来我们通过 dwarfdump 这个命令获取源码文件应该在的路径然后通过给 CocoaPods 增加命令将源码文件下载并放置在对应的路径中。幸运的是查看完美团 App 的几百个组件后我们发现只有少数近一年内没有制作过二进制的组件路径比较不同其他都相同因此可以先忽略这一小部分组件。如果这部分组件需要支持该功能只要再制作一次二进制即可。 确定方案以后写代码就很简单了最终我们利用 CocoaPods提供了 zsource 的三个命令 总结 zsource 功能整体的开发过程基本上都是基于一个个的猜想和实验来完成的整体的开发上线过程实际上只花了两个晚上。但如果在没有基础知识的情况下选择把上文中提到的参考资料都看懂后再动手可能会花费更多的时间。这一个有趣的验证过程也充分说明有时候我们可以不拘泥于冗长的文档以及资料通过类似逆向工程的方式非常快速地拿到我们需要的答案。此时我们再回过头去看文档可能会获得比直接看文档更好的效果。 最后非常感谢成威老师和志宇同学对技术的崇高追求即便在飞机上也愿意拿出电脑验证自己的猜想为 zsource 后续的工程化落地提供了更多的可能。 作者简介 宇杰美团 iOS 工程师2016 年加入美团先后参与美团 App 持续集成平台建设、美团 App ReactNative 平台化等工作。目前在参与美团 App 工程效率提升和 Flutter 应用的相关工作。
http://www.sadfv.cn/news/35224/

相关文章:

  • 做的好的排版网站台州网站seo
  • 建材网站模板什么是移动端网站适配
  • 网站建设与规划方案书晋城企业网站建设价格
  • 建网站需要多少资金WordPress用户中心开发
  • 阿里云建设个人网站服务器网站建设流程
  • 郑州做商城网站公司网站策划方案实例
  • 网站邮箱设置用户体验的互动展示网站
  • 外贸网站建站注意事项及价格济南哪个网站建设最好
  • 广州优化网站哪个网站域名解析
  • 聊城那里有做网站微信公众号seo
  • 墙绘网站建设推广杭州seo
  • 楚雄市网站建设公司星悦做任务网站是
  • 人社局网站建设管理工作总结网站建设公司的正反
  • 网站建设制作免费上海注册公司收费
  • 十堰网站整站优化公司花都五屏网站建设
  • 安阳市城乡建设规划局网站二手房网站谁做的更好
  • 做app+的模板下载网站wordpress4.7中文
  • 青岛模板做网站wordpress建官网怎样
  • 深圳app网站建设陈俊兵著名办公空间设计
  • 西安金融网站建设宁波网站建设模板制作
  • win2008的iis7建网站流程公司网站建设推广方案
  • 钦州市住房和城乡建设局网站网上商城制作需要多少钱
  • 洛阳建站推广公司网址导航推广
  • 聊城手机网站公司西安易扬众和网站建设
  • 百度 网站 说明广州番禺做网站
  • 在手机上建网站公司设计一个网站需要多久
  • 开源做网站需要申请账号吗宁波哪家公司做网站好
  • 商城网站开发周期wordpress换了固定链接404
  • 龙岗中心城有学网站建设北京公司注册最新政策
  • 网站开发比较流行的框架美术主题资源网站建设