记录一次iOS上架被拒
审核被打回提示Guideline 2.1 - Performance - App Completeness
这个问题是编译崩溃,无法运行,在苹果官方回给你的邮件下面
会把错误日志一起给你,我们需要的就是通过这个去发现错误到底在哪里
在我们打开这个错误日志的时候会发现crashed,就是崩溃的地方,但是都是二进制的地址
这时我们需要解析carsh文件
1:我们把苹果返回给我们的carsh文件保存到本地,用.Carsh类型
2:找到Xcode 自带的 symbolicatecrash工具来解析 .crash 文件
/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash
2:找到跟 .crash 文件对应的 .xcarchive 文件(我们打包上线的那个包里面)
dSYMs文件夹里的.dSYM
把这些全都放到一个文件夹下面,输入命令后
cd /Users/admin/Desktop/你的文件夹名字
./symbolicatecrash ./MyAppName.crash ./MyAppName.app.dSYM > MyAppCrash.log
myappname就是你对应的app相关文件名字,对应改一下,最后的.log文件就是我们生成的可以看的文件
如果提示 "DEVELOPER_DIR" ,则需要接着在终端输入
export DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer
这时就可以看到我们的log文件里室友东西的了
这时我们再看刚才的报错就一目了然了,发现在调用百度地图时返回的代理方法中数组操作越界的问题,在BaiduMapLoction.m文件的197行
打开发现果然是有个数组在进行操作,我们在这上面加一个非空判断即可
虽然测试几遍并没有问题,之前更新也没出现这个问题,应该是在美国审核人员允许app位置授权后,百度的地图无法正确拿到或者无法拿到值,所以才导致崩溃
在进行修改后重新打包审核,第二天就过了
以此记录