Developer

帮他人提交Mac应用

最近做的一个外包项目要提交到应用市场了,但是他的开发者账户是个人账户,无法添加其他成员;同时我又不能要求他修改自己的Apple ID密码,然后发给我,这太不安全了。因为无法在XCode里面添加开发者账户,所以就不能使用XCode内置的工具上传应用了。对于这种情况,只能使用Apple提供的ApplicationLoader来进行应用发布,但是如何创建一个正确签名、可发布的应用包就成了很大的问题。 根据开发者文档来看,ApplicationLoader只接受ipa(iOS)、pkg(OSX与IAP)还有zip文件,因为我做的是Mac应用,所以就要想办法创建一个可用的pkg包。 经过一些搜索与尝试,最终还是成功把应用包提交了,下面就把过程总结一下。 生成app文件 具体如何archive,如何校对设置我就不详细说明了,如果有需要的话请自行google “App Distribution Guide”,值得一提的是,因为我们在XCode中没有证书与签名,所以在导出app的时候,只能选择最后一项(”Export as a Mac Application”)。 所需证书 创建pkg需要两步签名,首先要对刚刚生成的”.app”签名,这里需要用到”Mac App Distribution”这个证书;接下来还要为生成的安装包签名,这里要用的是”Mac Installer Distribution”这个证书。 生成签名请求 虽然不能直接访问开发者账户,但是要将应用提交到应用市场一定要有开发者签名,这就需要有账户的人配合了。首先你要做好准备工作,或者说写申请。这里说的申请就是在本地创建一个签名请求。打开Keychain Access工具,按照下图选择: 因为要生成两个证书,而且根据我个人的测试,证书跟签名请求是一一对应的,所以在这一步需要创建两个签名请求文件,建议用”AppCertificateSigningRequest.certSigningRequest”跟”InstallerCertificateSigningRequest.certSigningRequest”来命名,其他的能区分的命名方式都可以。 指导他人生成证书 接下来就要用这个签名去请求证书了,具体的过程是: 访问开发者网站,登陆Member Center。 在Mac应用页面中,选择”Certificates, Identifiers & Profiles”中的”Certificates”那一项。 点击右上角的”+“按钮,创建新证书。 在”Production”分类中选择”Mac App Store”。 在下一步页面中,选择”Mac App Distribution”。 在下一步页面中,选择”AppCertificateSigningRequest.certSigningRequest”文件。 点击”Generate”来生成证书(证书文件名默认为”mac_app.cer”)。 重复1-7步,在第5步选择”Mac Installer Distribution”,在第六步中上传”InstallerCertificateSigningRequest.certSigningRequest”文件。这里第7步生成的证书的默认文件名是”mac_installer.cer”。 导入证书 分别双击导入”mac_app.cer”与”mac_installer.cer”,导入的时候选择“login”来导入当前用户的钥匙链中。导入之后最好通过名字过滤搜索,确认导入成功。 应用签名 有了证书之后就可以对之前生成的”.app”文件签名了。命令如下: codesign -f -s "3rd Party Mac Developer Application: XXX" --entitlements “YYY.entitlements” "ZZZ.app" 其中”3rd Party Mac Developer Application: XXX”就是证书中的那个名字,”YYY.entitlements”就是应用对应的entitlements的路径,”ZZZ.app”就是之前生成的app文件。 安装包签名 接着使用productbuild工具来生成安装包,命令如下: