AppStore 打包上传后提示“二进制文件无效” 的解决方法
昨天提交打包提交App,将包上传到iTunes Connect之后,以为就能发布了,便点击构建版本,发现没有刚刚上传的包,于是就点击"预发行"看一下,会看到"已上传",过不久再刷新一次再看,就变成了二进制无效,无比的郁闷,上传了五六次都是二进制文件无效。
在检查了app是否支持64位以后,我以为是传错了版本,把debug版本传上去了,排查了后发现不是。
查了很多的资料都说是使用了私有API或者是iDFA设置不对的问题,但是茫茫多的代码和引用的第三方库,鬼知道那里用到了私有API或者iDFA,一行行的查工作量也太大了。幸好找到了stackoverflow上一个问答,可以方便的检测私有api,地址。为了防止失效截个图:
但是可惜,没查出来。。。
检查IDFA的方法:
步骤:
1、打开终端cd到要检查的文件的根目录。
2、执行下列语句:grep -r advertisingIdentifier . (别少了最后那个点号)。
依然没有。。。
这个时候想到去邮箱里看一下苹果发的邮件(其实应该首先去看的),看到了这个 105549utkrk6dkip4zndhh.png不允许监听锁屏通知???
立刻去全局查询关键字:CFNotificationCenterGetDarwinNotifyCenter;screenLockStateChanged;NotificationLock;screenLockStateChanged;
一无所获。。。
但是我觉得会监听锁屏通知的应该是那些需要在后台做操作的功能,于是我先去排查了一下应用里的音频功能,然后在一个没有被引用的监听方法里发现了这个:com.apple.springboard.lockstate
因为之前的码哥废弃了这个监听,改用
applicationProtectedDataWillBecomeUnavailable:
但是原来的代码没有删除也没有注释
现在苹果不管你用没用只要你代码里有"com.apple.springboard.lockstate"关键字就判断二进制文件无效,我真的是躺枪(:зゝ∠)!