Xcode 8.0 提包遇到的问题
1. 在提交记账本1.0版本时曾遇到 extension 下含有不应该链接的framework的而导致提包出错的问题。
我的应用因为需要用到today extension 且 extension 与主应用操作的是同一份数据库,所以today extension中也有coredata framework,而正是因为有该framework导致提交出错,但是如果不包含coredata framework我的today extension肯定无法工作。两难之际看到cocoapods 关于该错误的处理,只需要在extension target 的build phases 下 New Run Script Phases ,在新建的Run Script 下加入以下脚本
cd "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/"
if [[ -d "Frameworks" ]]; then
rm -fr Frameworks
fi
然后clean 然后archive 就ok
详情参见:appex contains disallowed file 'Frameworks' (cocoapods 0.39.0.beta.4) · Issue #4203 · CocoaPods/CocoaPods · GitHub 中 @mikehouse 的回答
2. XCode 8.0 GM 版本提交应用。
在iOS 10.0 后苹果对于隐私控制更为严格,在 使用 xcode 8.0 application loader 提包后 itunes connect 会在线检测应用包中是否使用了 例如蓝牙,位置,相片库,日历等涉及用户隐私内容,并会检测应用包中如果使用了这些功能时是否加入了对相关权限的声明,如果没有加入,则应用包在itunes connect 处理后会被苹果秒删,相关错误描述会在开发者邮箱中体现。
一般来说,我们在应用中加入该申明即可,然而,我的应用并没有使用到日历和蓝牙功能,并且,在我在应用中加入了这两个申明后提包,依然被秒删,于是我去google找到了有相同遭遇的开发者提问,详情请移步 groups.google.com/forum/#!category-topic/google-admob-ads-sdk/ios/y-IxErXawxg
查看相关评论后发现是admob sdk中链接了日历,蓝牙等framework,
具体解决方案: 请移步admob 官网更新最新 admob sdk ,再次打包,提交,等待,success !
amob sdk 下载 : firebase.google.com/docs/admob/ios/download
另外:XCode 8.0 的自动签名只能用于debug版本(实质是生成了通用appid以及描述文件),如果需要打release包提交app store 还是得去开发者中心下载release版的描述文件。