1.企业版
1.1. could not be downloaded at this time
a.Wi-Fi不稳定,建议换个稳定的Wi-Fi。或者使用4G,3G下载试试看
b.证书过期,进入苹果开发者编辑一下描述文件
c.重启手机 试试吧。假如好了呢。
1.2. iOS 9.0按钮应用之后无法打开
a.进入 设置 -> 通用 -> 设备管理.找到应用 信任即可
1.3. 测试时 invalid mode 'kCFRunLoopCommonModes' provided to CFRunLoopRunSpecific - break on _CFRunLoopError_RunCalledWithInvalidMode to debug.
a.runloop 作用的太多 超过其限制(本人出现的问题是 tableView 的 reloadData太多。也就是说在tableView正在帮你绘制视图时,你又连续发了好几个reloadData的请求)
1.4. 合并代码 编译时 duplicate symbol _OBJC_IVAR_$_GLQuickCheckWorkViewController._encourageLabel in:
a.某个target的某个文件编译了多次。需要在Build Phases 删除掉一次。然后重新加回来。
1.5. 网络请求失败
a. 查看响应状态码 然后看看是哪端的问题 //400+一般为服务端的问题 。。。 500+一般表示服务端问题
b.检查自己的url是否合法 (曾经有过url中出现空格 无法调用的现象)
1.6. 断点后控制台无法使用命令 po 打印一些值
a.某个类有多个分类,然后设置了同一个属性,并且这个属性对应的类型还是不一样的。因为一只提示某个属性有问题
(曾经 我和另外一个同事同时写了一个UIViewController的分类,他里面有一个属性 a是NSInteger ,而我的属性 a是NSString的。因而导致我每次断点到某个控制器之后使用po都无效)
1.7. 换一些文件或者框架后编译不通过
a.clean 一下,重新编译
b.根据崩溃信息查看 查看其.a 文件的路径是否正确
c.根据崩溃信息查看 使用lipo -info 查看.a , framework是否支持你需要支持的命令集
d.可能是你上次编译成功的文件(cocopods中引入的文件产生了.a文件)和你这次编译的文件产生了冲突。 找到编译成功的app文件(xxx.project->Products->右键 选取show in finder),删除相关文件。
1.8. Undefined symbols for architecture arm64: "_uregex_reset", referenced from:
a.arm64 是一种指令集 应该是要做个兼容
我出现的问题是debug模式下能编译通过,在release下面不能编译通过。后来才发觉在引入RegexKitLite 后 ,Other Linker Flags,release 下缺少了licucore。在后面加入 -licucore
1.9. warning
a.过期的方法 使用 下面的 方法帮你度过难关
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
代码
#pragma clang diagnostic pop
b.int NSInteger long 使用的时候出现的警告
单个文件屏蔽 添加 arc和mrc 一样在相应位置 添加量 -Wno-shorten-64-to-32
所有文件屏蔽 在build setting -> Other Warning Flags 中加入 -Wno-shorten-64-to-32
1.10. 连接代理时 一些https的请求无法请求成功 --- 错误信息:此服务器的证书无效。您可能正在连接到一个伪装成“restapi.amap.com”的服务器,这会威胁到您的机密信息的安全。
a. 去掉代理应该就好了。
b. 改为http即可
注: 测试人员为了使用代理抓https的包,会安装一些非正规的CA证书。有些IPhone手机会认证的,有问题会直接不请求。
1.11. this application is modifying the autolayout engine from a background thread,which can lead to engine corruption and weird crashes.This will cause an exception in a future release.
a. 不在执行main thread 中UI操作导致的。 (前几个xcode编译的好像会直接崩溃,现在只是会卡顿会,后面等主线程闲置就会正常操作了,不过在控制台会打印一段上面的文案)
1.12 Could not find a storyboard named 'Main' in bundle NSBundle
a. 个人在project无限删Main.sb 都没有成功。后来才意识到在info.plist 里面有个 Main storyboard file base name的配置,删除即可
1.13 编译报错 This application’s application-identifier entitlement does not match that of the installed application. These values must match for an upgrade to be allowed.
a. application-identifier冲突了,卸载之后重新编译run就好
1.14 打包报错 WARNING ITMS-90725: "SDK Version Issue. This app was built with the iOS 11.4 SDK. Starting March 2019, all iOS apps submitted to the App Store must be built with the iOS 12.1 SDK or later, included in Xcode 10.1 or later."
a. 其实就一个警告而已 说2019年3月份以后就只能用XCode10.1以上版本打包了
11.5 运行时错误 libc++abi.dylib: terminate_handler unexpectedly threw an exception
a. appdelete 的 window.rootViewController 为nil,会崩溃
2. 公司版
2.1.提交包到App Store,提示 framework只能兼容到iOS 8.0.
a. 刚开始我是拒绝的。我明明打动态库的时候最低版本是7.0.各种尝试。
不管怎么重新打包就是报同样的错误,而当时有cocopods错误,网速还不给力。无奈,直接把源文件丢进去了,然后才好。
不知道是否是xcode8.0不给打包iOS8.0以下的库。(当时 最低版本7.0是手写的,非选取)
2.2.打包时报错 lipo: can't write to output file
a. 磁盘内存不足,删除一些不重要的东西后 重新打包即可(保证足够的磁盘啊)
2.3.提交审核后,能再itunes中看到 但报警告: Your configuration home partition has fewer than 100 megabytes free; for best results Apple recommends increasing the amount of free space....
a.其实也是磁盘内存不足导致的。保证足够的存储空间吧少年,重新打个包吧。
2.4.审核之后直接拒绝 说是没有按照 苹果的2.5.2的规定
a.检查是否使用了JSPatch
b.检查是否使用了第三方框架(SDK中包涵了动态下载代码)(umeng老版,bugtags,个推,阿里百川的热修复,高德地图)
提交审核之前去掉了bugtags,阿里的热修复,以为这样就没事了,因为公司另几个app去掉这两个审核痛哟。然后审核之后还是被拒绝了,我是小心小心又小心,结局还是不是很愉快。
然后就是各种找问题,最后发觉是高德地图,刚好3.8号重发了一版,而我们确未更新,第一次被拒绝感觉真不好。
2.5. 程序内部使用的商品,只能走内购。程序外部使用的商品,不能走内购
a.我们产品表示不服,提交了一版的支付宝支付。过了几天直接被拒,并且还有截图,fuck。
2.6. 宽高 无限大,导致绘制视图的时候直接崩溃 NaN。
a.可使用函数 isnan(double) 可判断。 使用 NaN ><= 0,结果都是 false。
2.7 presentedViewController 和 presentingViewController的混淆
若 [self presentViewController:vc animated:YES completion:nil];
则 self.presentedViewController = vc; vc.presentingViewController = self.navigationController(即self的栈底控制器)
2.8 xcode 某些时候无法打包 iTunes Store Operation Error , An error occurred uploading to the App Store.
a. 如果更新过系统,或者升级过JAVA的SDK,可能是JAVA版本过高或不匹配导致的 在home目录下面
$ mv .itmstransporter/ .old_itmstransporter/
$ "/Applications/Xcode.app/Contents/Applications/Application Loader.app/Contents/itms/bin/iTMSTransporter"
2.9 审核失败的跟踪
a. 后台语音
We have started the review of your app, but we are not able to continue because we need additional information about your app.
然后我回了一封邮件,告诉审核者,我们的应用中使用了音频的后台录音,并没有使用音频的后台播放。然而还是被无情的拒绝了。
Your app declares support for audio in the UIBackgroundModes key in your Info.plist, but we were unable to play any audible content when the app was running in the background.
最后我选择了关闭了后台的音频选项 (Project -> Targets -> xxxxApp -> capabilities -> Background Models 关闭第一选项即可 audio,AirPlay,and Picture in Picture)
b. 内购 (提交的时候最好给出进行内购的步骤,即怎么进入内购UI,We have started the review of your app, but we are not able to continue because we cannot locate the in-app purchases within your app.)
app中第一次加入内购,必定会引起App Store审核组的高度重视。其实坑还是挺多,其中还出现过app1中加内购项目,然而他们竟然拒绝了我的app2(怀疑我们app2中有购买,却没有使用内购拒绝了我们).
c. app 描述不能出现敏感的东西 (以下apple给出的意思是我们描述中出现了网站,建议我们删除他,而我们的web端也是有购买服务的)
We noticed that your app description references the following URL that links to external mechanisms for purchases or subscriptions to be used in the app:
联系我们:
【官方网站】http://www.xxxxxx.com
【客服热线】400888888
Next Steps
To resolve this issue, please remove any URL that links to external purchasing mechanisms from your app description.
2.10 使用苹果私有方法被拒
1. Your app uses the "prefs:root=" non-public URL scheme, which is a private entity. The use of non-public APIs is not permitted on the App Store because it can lead to a poor user experience should these APIs change
使用8.0后出来的 UIApplicationOpenSettingsURLString 生成URL跳转即可
2.11 xcode各个版本 打包的一些问题
xcode 9.2 打包后部分小屏幕手机5s 会产生部分本地图片 形变扭曲 (换为 xcode9.1 , 9.3)
xcode 10.0 打包后ios9.3 手机直接崩溃了, 编译运行啥事没有,就是打包后会崩溃(换为 xcode 9.4)
注:很多人都是通过经验去避免(有时去google什么的),其实更好的方式是去了解苹果的审核文档。不过笔者目前还是第一类人。
>>>>>>>> 持续更新 <<<<<<<<<<