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的最大不同。

 

最新文章

  1. 白银5kg
  2. 45、Docker 加 tensorflow的机器学习入门初步
  3. Android实用代码模块集锦
  4. LinkedList其实就那么一回事儿之源码分析
  5. 免费素材下载:iOS 8 矢量 UI 素材套件
  6. leetcode 145. Binary Tree Postorder Traversal ----- java
  7. 【初识】KMP算法入门(转)
  8. dynamic_cast,const_cast,static_cast,reinterpret_cast 详解
  9. PI数据库的使用-PI System Management Tools
  10. My.Ioc 代码示例——Lifetime 和 ILifetimeScope
  11. grunt之dev-pro环境切换
  12. Android之查看外部依赖jar的源代码_android private libralies does not allow modifications to source
  13. Eclipse生成jsp 如何将GB18030 改成默认UTF-8
  14. PowerDesigner中几个使用技巧
  15. ucloud发送短信的php sdk
  16. scrapy 通过FormRequest模拟登录再继续
  17. PAT甲级1131 Subway Map【dfs】【输出方案】
  18. thread == 售票
  19. Edit Distance问题在两种编程范式下的求解
  20. form表单自动回车提交

热门文章

  1. 获取DataGridView中的的选中行
  2. jsp学习---css基础知识学习,float,position,padding,div,margin
  3. python学习笔记-Day4(2)
  4. TableView刷新指定的cell 或section
  5. Android性能优化方法(四)
  6. #笔记#JavaScript进阶篇一
  7. wiredtiger - hazard pointers
  8. 1.2 Broadcast
  9. linux tcp协议状态机
  10. 学习WCF之——wcf程序的创建