这段时间公司的App赶了一个全新的6.0大版本,997的日子过了一个多月,终于算是基本完成了整个新版本的项目,然后,上线的时候,出现了一个莫名其妙的问题------构建版本莫名的消失!
一开始以为公司网络问题,回家重复上传以后还是照样不行,特征表现为刚上传上去以后在活动里可以看到构建版本正在处理,大约过10分钟左右,刷新页面,构建版本消失,连着上传了十几个版本,最后都是这种情况,因为开发账号是前总监的,所以邮件无法收到,此时已经慌的一批,脑袋瓜子嗡嗡滴。
接下来开始了两天的查找原因,网上搜索到的答案无非有以下两个原因:1.info.plist缺少权限 解决:添加对应权限即可 2.使用了苹果的私有的Api,这种情况苹果大多会给开发者账号的邮箱发送邮件告知是使用了哪个私有api,然后去你自己的项目里全局搜索,找到私有Api删除并修改你的逻辑即可。
如果你能确定不是因为你缺少权限的导致构建版本消失,然后又没有收到使用私有Api的邮件,那么你接下来要做的工作就是使用各种办法去检测项目里是否有私有Api,可以使用苹果推荐的方法 strings或者grep或者一些大神写的工具,具体的使用方法可以百度,上面说的都很详细。
!!!重点在这!!!然而我就是那么的悲催,各种方法检测以后没有发现私有Api,info.plist里面几乎添加了所有的权限,用到的没用的权限全部都添加上了,打包提交到苹果商店,上传完成显示正在处理,10分钟以后刷新页面,构建版本又消失了!!!彻底的头大了!!!关键是收不到苹果的邮件,只能自己挨着去尝试。
最后把问题临时定位到是私有api的问题,将项目所有代码都删掉,只留了appdelegate和一个根控制器,打包上传,发现可以构建版本可以正常显示了,那么可以进一步定位问题了,可能是某个类或者库使用了私有api,但是我可以非常肯定的是我自己写的代码没有使用私有api,平时开发时会特别注意这些,从而将问题定位到了第三方的库,大厂的sdk也不会有问题,那么范围又缩小了,应该是github上一些作者自己的三方,将这种三方全部删除掉,然后打包上传,发现也是正常的,果不其然,问题就出在这些库上,仔细排查发现有一个LBXPermission的库,瞬间锁定它,有种预感告诉我就是他的锅,删除这个库,打包上传,如我所料,构建版本正常显示(这里说一下,构建版本刚传上去的时候是没有图标的,而且文字是灰色的,过一会刷新以后如果有图标并且文字是蓝色的了,那么恭喜你,你的构建版本不会消失了),这个库是一个封装的询问权限的,使用相机或者相册的时候我会调用这个库的api来询问用户,最后把该库中没用的类都删除掉了,只留了相机和相册的两个类
总结:虽然我在info.plist里面添加了足够多的权限,但是图片中红框的几个类可能用到了我没添加的权限,或者是NetReachability使用了私有的api(只是猜测,没有去验证)!
网友评论