今是昨非

今是昨非

日出江花红胜火,春来江水绿如蓝

开发中遇到的问题(一)

刚入职新公司,遇到了几个问题,感觉需要记录一下,顺便分享。#

问题 1 界面和代码对应#

由于刚入职,所以不知道哪个界面对应的代码是哪里,又加上项目比较老,比较大,如何才能快速找准界面和代码之间对应,这是第一个难题。

做法:

  1. 最开始,我是先走一遍 app 的所有界面,大概知道都有哪些,然后开始看代码命名,根据名字猜测可能是哪个界面,然后验证是否正确。但是随后发现这样很累,而且因为代码比较老,有些类重写了,老的都没有删除,命名又很像,所以有些根本没办法对应;而且这样效率很低,如果项目不大还好,但是项目大,时间又紧,那这样根本就行不通。
  2. 然后晚上下班,走在路上的时候,突然想起来之前看到的一篇博客,Method Swizzling 和 AOP 实践,这里面介绍用 Method Swizzling 来实现给每个界面加统计,然后我就想,既然都能给每个界面加统计了,那肯定也能打印每个界面的信息。所以,我就用 Method Swizzling 实现替换 ViewWillAppear: 方法,然后每次界面出现的时候都会打印当前类名。这样我只需要运行 app,然后点击界面,然后就会打印当前类。很轻松就能找到界面对应代码。

问题 2 模拟器运行没问题,直接运行真机也没问题,但是打包出来的显示就不对#

开发新版本,打包给测试,结果测试说你这显示不对;然后我仔细看看,确实所有显示数字的地方都出错了,但是我在模拟器上运行没错啊,所有的数据都正常啊

排查:

  1. 最开始我以为是证书的原因,但是想想不太可能,如果是证书的问题话,造成的后果是打不了包,而不应该是打包数据不对。然后我在想,会不会是因为我打包的时候少设置了什么?但是也没有排查出来,而且也没人告诉我需要特别设置的。
  2. 于是就需要定位错误,然后我上真机,直接运行,妹的,也没错啊,这是什么鬼。
  3. 然后求人问佛,想想,会不会是因为 scheme 的问题,因为如果说打包和直接运行有什么不同的话,那就是 scheme 了。于是我把 scheme 改为 release 直接运行,报错了。。。。。无奈,就把 scheme 改为 debug,打个包(打包是个很痛苦的事,电脑卡,项目大,编译要等几分钟,亲测,我点击 archieve,然后去上厕所,回来发现还没编译完。。。。。。),安装,结果显示还是不正确。欲哭无泪啊。。。。
  4. 然后测试催我,于是我找旁边的人帮我打个包,结果发现,他打的包就没问题。。。所以我以为确实是我打包的时候少选了什么,但是发现不了啊。
  5. 第二天来,测试又催着打包,没办法,接着查,发现敌情 —— iOS 开发遇到的坑之三 -- 使用 asi 框架在 xcode 下正常运行,但是打包时却不能进行网络访问asi 打包 ipa 的坑,然后我按照说明改了一下,编译打包,见证奇迹的时刻到了,好了,丫的,果然是这个问题。项目比较老,所以用的 asi,一直没有替换,然后我以前还没用过,但是神奇的是,我旁边的那个 iOS,他的编译条件就是 - fno-objc-arc,但是打出来的包就没问题,这点好生奇怪!

问题 3 模拟器运行没问题,真机运行出问题#

上个问题刚改好,晚上测试提个 bug,点击链接跳转 web,加载失败,安卓就可以

排查:

  1. 测试刚提过来的时候,我检查了一下,发现模拟器上是没有问题的,测试告诉我,安卓也是没有问题的,所以我就在想,丫的,莫非又是打包出问题了?但是我把链接替换成百度,就没有问题啊。
  2. 老规矩,上真机,然后单步调试,链接没错啊,但是确实加载不出来啊,难道是 webView 的那个界面写错了(我新来的,所以用的是之前已有的加载 web 的类),然后一步一步调试,发现每次加载的时候,都在链接后面拼接了 "?source=app",哈哈哈,我果然聪明,注释掉,运行,shit,怎么还不行;然后后台告诉我,这个其实不会影响链接,所以我乖乖的又把注释给打开了。
  3. so,那到底是为神马,还是后台说,你试试其他手机可以打开吗?把这个链接复制到浏览器里,看看能直接打开吗?然后我试了一下,丫的,果然,在浏览器里也打不开。然后换其他测试机,发现可以,可以,可以啊,原来测试都没看其他的手机啊。。。。(Ps:我的手机还没加到测试帐号里,所以一直不能用),唉,但是手机明明联网了啊,为什么就是不行呢,为什么啊,后来想想,首先:我们公司的网是有限制的;再次:这个链接本来就是测试的链接,有可能前端没配好。
  4. 但是,不是我的问题,为什么我会改这么长时间啊?为什么呢?对啊,为什么呢?
加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。