Xcode 9 在 Jenkins 中使用 Xcode integration 插件打包失败的处理

问题概述

自己使用 Jenkins 来做 iOS 项目的持续集成,升级 Xcode 9 之后,编译完成之后打包会一直报如下所示的错误:

error: exportArchive: "APPNAME.app" requires a provisioning profile with the Push Notifications feature.
Error Domain=IDEProvisioningErrorDomain Code=9 ""APPNAME.app" requires a provisioning profile with the Push Notifications feature." UserInfo={NSLocalizedDescription="APPNAME.app" requires a provisioning profile with the Push Notifications feature., NSLocalizedRecoverySuggestion=Add a profile to the "provisioningProfiles" dictionary in your Export Options property list.}
** EXPORT FAILED **
Failed to build /Users/Tolecen/.jenkins/workspace/APPNAME/build/APPNAME_release.ipa
Build step 'Xcode' marked build as failure
Finished: FAILURE

因为 Xcode 9 默认不允许访问钥匙串的内容,必须要设置 allowProvisioningUpdates 才会允许,但是由于 Xcode integration 插件封闭,并不能对其进行修改加上这个属性,所以决定使用 Shell 脚本代替插件。

继续阅读

三个在编程中最容易忽略的安全性措施

近日,由于很多应用基于非官方渠道下载的Xcode打包的APP,被嵌入了恶性代码,将很多软件包括多个知名软件推向了风口浪尖,在iOS上造成如此大范围影响的安全事件,还是极少见的。但是,事情已经发生,也许已经造成严重损失,也许还没有产生太恶劣的后果,不管哪种,总归要面对,要本着对用户负责的态度妥善解决。很多厂商应该已经在抓紧修复这个问题,但是有一些却还在说风凉话,比如网易云音乐。

继续阅读