Android和IOS的app发布的流程有一个相同之处,就是都需要先将编译好的app签名,然后上传到market里,但两者的复杂度是冰火两重天。Android可以手动通过集成在eclipse里的工具进行签名,或者可以用ant进行自动化签名。但IOS app的发布过程非常的痛苦。

发布IOS app有两种方式,一种称为AD_HOC,由于这种方式需要预先获取设备的UDID,因此适合在企业内部发布;另一种方式众所周之的方式就是发布到app store里。Xcode4集成了这两种发布方式,在Xocde4的Organizer窗口里,切换到Archives选项卡,当使用Archives方式编译后,编译出来的文件会出现在这个选项卡里。这个选项卡里还有三个按钮,分别是Validate、Share和Submit,其中Validate按钮是用作验证格式和签名是否正确的,而Share则是以ipa格式发布,Submit则是上传到App Store里。这两个发布方式的具体操作可以查看苹果的文档:https://developer.apple.com/ios/manage/distribution/index.action,如果是Xode4以上的可以看这里:

http://useyourloaf.com/blog/2010/12/23/creating-iphone-ad-hoc-distribution-builds.html。

抛开发布流程的复杂度不说,其中有几个关键步骤是非常值得分享的。

1、  在Archive编译完成后,如果点share或submit,会提示错误:Thiskind of archive cannot be signed,如果点Validate校验,会提示错误:does not contain a single–bundle application or contains multipleproducts. Please select another archive, or adjust your scheme to create asingle–bundle application。出现这些错误,一般是你的项目里包含了其它库,例如cocos2d。xcode4下默认会将cocos2d编译成一个后缀名为.a的静态库文件,生成的archive包里的application下有两个目录,一个是.app的文件,还有一个是usr的目录,里面是cocos2d编译出来的.a文件,所以会校验不通过。解决方案如下,先在project navigator里点击项目的图标,在右边的项目配置界面里点击名为cocos2d libraries的target,在Building Setting里找到Skip Install的项目,将值改为YES。

2、  当在项目中需要用到apple的推送功能时,需要增加一个Entitlements.plist文件,通过xcode的添加文件向导可以向项目里添加这个文件。如果是需要使用ipa格式发布,当在Archive编译完成后,点击validate或share的时候,如果出现以下错误:this bundle is invalid. the application-identifier entitlement isnot formatted correctly,请将对应的Entitlements.plist文件的内容按下图填写。

3、  如果是要想发布到appstore里,在点击Submit按钮并开始上传文件后,若出现application failed codesign verification. the signature was invalid,or it was not signed with an iPhone distribution certificate这样的错误提示时,如果你已经确认已经正确地使用了appstore的签名,请检查一下Building Setting里的Code Signing Entitlements的选项,这里是不需要填入任何文件的路径的,这是appstore和AD_HOC的最大不同。

 

iOS-APP发布应注意要点的更多相关文章

  1. [转载]ios app 发布遇到的问题uinewsstandapp=true

    原文地址:ios app 发布遇到的问题uinewsstandapp=true 作者:Capacity To include newsstand features, the info.plist mu ...

  2. iOS app 发布错误 ERROR ITMS-90167: "No .app bundles found in the package"

    今天iOS 上传 APP 突然发生了这个错误,在排查非证书错误后感到非常奇怪, 因为昨天刚刚上传了另一个APP,一切正常. 仔细回忆了下 昨天和今天唯一的不同就是我升级了 电脑操作系统至 macOS ...

  3. iOS app发布流程

    http://www.xuebuyuan.com/1980497.html http://blog.csdn.net/alincexiaohao/article/details/38725367 ap ...

  4. iOS app 企业内部发布及HTTPS服务器配置

    转自: http://www.cnblogs.com/cocoajin/p/4082488.html iOS企业内部发布及HTTPS服务器配置 一:所需的条件 1. 苹果开发者证书,企业版 299$ ...

  5. ios app的真机调试与发布配置

    1.打开应用程序—>[钥匙串访问]—>[证书助理]—>[从证书办法机构请求证书]     2.在[用户电子邮件地址]填入apple账户用的邮箱,选择[存储到磁盘],点击[继续],会在 ...

  6. iOS 制作发布证书,发布到App Store

    ---恢复内容开始--- 1.登陆 iOS Dev Center 选择进入iOS Provisioning Portal. 2.在 iOS Provisioning Portal中,点击App IDs ...

  7. hbuilder IOS APP 打包与发布

    ---恢复内容开始--- 准备:苹果开发者账号,一个Mac系统 没有账号可以再这里注册 https://developer.apple.com/ 因为账号是公司的,自己并没有注册过,这里就不进行阐述了 ...

  8. hbuilder IOS APP 打包与发布2

    在上一篇的<hbuilder IOS APP 打包与发布>中,请求 的 是APP ids .  ios开发证书 .和开发配置文件  ,   这一篇中就不写发布证书和配置文件的请求,因为流程 ...

  9. 【2】IOS APP打包发布

    目的: 本文的目的是对IOS APP打包发布做了对应的介绍,大家可根据文档步骤进行mac环境部署: 申请苹果开发者账号 此处略 创建申请证书 这样做的目的就是为你的电脑安装发布许可证,只有这样你的电脑 ...

随机推荐

  1. ffffffuzzzzzzzzzzzzing

    为了克服现有 Fuzzing 技术对目标程序缺乏理解.测试完全随机且盲目的缺点,提出了新方法:基于动态符号执行的智能测试技术. 先通过静态分析获得危险点,然后通过符号执行收集路径条件,最后利用约束求解 ...

  2. hdu 3661 Assignments (贪心)

    Assignments Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  3. Selenium2+python自动化31-生成测试报告

    前言 最近小伙伴们总有一些测试报告的问题,网上的一些资料生成报告的方法,我试了都不行,完全生成不了,不知道他们是怎么生成的,同样的代码,有待研究. 今天小编写一下可以生成测试报告的方法.个人觉得也是最 ...

  4. POJ3694 Network

    题目大意:已知连通图G有N个点m条无向边,有Q次操作,每次操作为增加一条边,问每次操作后图上有几个桥. 如果添加一条边进行Tarjin搜索一次时间复杂度为m*m*q很大,会超时.真的超时,我试过.看了 ...

  5. HttpURLConnection请求网络数据

    //使用线程 new Thread(){            public void run() {                try {                    //先创建出了一 ...

  6. XML的Pull解析

    //通过xml解析串    private void XMLtoStr(String result) {        News news=null;        try {             ...

  7. js取最小最大值--Math.min()、math.max()

    一.Math.min() 返回一组表达式中最小者 eg: var n = Math.min( 2 , 30 ,1 , 200-10 , 300*22 , 20-30 ); alert(n); //打印 ...

  8. 获取滚动条ScrollBar宽度

    function getScrollBarWidth () { var inner = document.createElement('p'); inner.style.width = "1 ...

  9. mysql and 和 or 的 优先级和 查询问题

    1. select * from trade where id=1 and cid=1 or pid=2 ; 2. select * from trade where cid=1 or (pid=2 ...

  10. Jade之Interpolation

    Interpolation jade为不同的需求提供了一些特殊的操作符.详见Github = 将右边的值赋予左边,或者替换为右边变量的值. //- 赋值,js格式即可. - var title = & ...