昨天终于成功地向APP STORE提交了应用,个人感觉用AIR做IOS开发就是个坑啊。出了问题之后,问苹果的技术支持,人家说“对于非XCODE环境下开发及发布所造成的问题我们在资料库中无法找到相应的解决方案”。那问adobe的技术支持吧,“你按照开发者中心的教程执行了吗?”“是的”“你能成功生成IPA文件吗?”“是的”“OK,那么你的问题应该去找苹果的技术支持”。。。。我++,简直有种在天朝上访被踢皮球的感觉。

所以,我将我遇到的问题在这里一一记录下来,以便备忘及帮助到同样适用AIR开发IOS的同学。

1.我们清楚,在IOS开发中,有这么几种文件:

1-1.证书签名请求CSR文件,在MAC下生成

1-2.IOS开发者/分发证书*.cer文件,通过上传CSR到IOS开发者中心后下载生成

1-3.P12格式的证书文件,通过从IOS开发者中心下载cer文件,然后在MAC下转换格式导出,这个文件决定了你在FB(flash builder)中能否生成IPA文件

1-4.配置概要文件 *.mobileprovision,关联了设备的UDID,在IOS开发者中心创建并下载。这个文件决定了在你的开发过程中产生的IPA文件能够运行在哪些设备上

而最终在FB中生成IPA所需要的文件为1-3和1-4,我之前很SB地认为这2个文件之间没有什么直接关系,但是实际上一旦你在IOS开发者中心重新替换了CSR文件之后,你的原有的配置概要文件就会全部失效,需要重新创建并下载。在替换了CSR文件之后没有重新创建并下载mobileprovision文件,这是我所犯的第1个错误

2.在adobe开发者中心所提供的教程中,有如下的原文“将生成CSR以获得IOS开发者/分发证书”“根据需要生成IOS开发者证书或IOS分发证书”。它的意思是,cer、p12、mobileprovision文件均有2种类别,一种对应的是开发阶段,一种对应的是分发(即发布)阶段(distribute )。即,我要在设备上进行调试或运行我的程序,在生成IPA时需要选择由开发者证书cer文件所导出的P12文件和在IOS开发者中心创建并下载的的用于开发的mobileprovision文件;而当我导出发行版IPA需要提交到APP STORE时,这时需要选择由分发者证书导出的P12文件和用于分发的mobileprovision文件。在导出发行版时忘了更新P12和mobileprovision文件,这是我犯的第2个错误

    3.承接2,在导出用于分发的P12证书时,需要注意一个细节,这个细节步骤是在导出用于开发的P12证书时所没有的。在导出分发P12证书之前,需要先在开发者中心创建分发的cer文件那个界面里点击下方的链接下载一个WADR名称开头的cer文件,然后将这个文件在MAC下添加进钥匙串,这个文件中会在你导出P12文件时附带上苹果的签名。如果你没有这个步骤直接选择导出P12,将无法通过提交APP时的证书签名验证。在导出用于分发的P12证书之前没有下载WADR并添加进钥匙串,这是我犯的第3个错误

    4.在1中,我提到“替换CSR文件”,什么情况下需要我们替换CSR文件呢?这涉及到一个非常隐晦非常微妙的问题。在我的发布过程中,遇到了这样一个情景:在设备上可以调试及运行,但是发布后提交应用时一直无法通过应用验证,并且保证前面所提到的1、2、3都没有问题,让人百思不得骑姐。最后发现问题所在:在生成CSR文件时,除了填写开发者账号邮箱之外,还需要填写一个常用名称(common name),而这个名称必须和你在申请IOS开发者账号时所填写的名称一致。而坑爹的是,这个一致性要求仅仅在提交APP时才进行验证,即在之前在开发阶段,即使名称是乱填写的,也不会影响到你在设备上调试或运行程序。我最后发现问题所在为我在生成CSR文件时所输入的名称对比和证书中显示的名称在First Name和Last Name之间少了一个空格。。。。(网上还有一种说法是国外程序员的验证方式是Last Name在前First Name在后)在生成CSR文件时填写的常用名称和IOS开发者账号中的名称不一致,这是我犯的第4个错误

AIR for IOS开发问题小结的更多相关文章

  1. IOS开发GCD小结

    0. Brief Introduction GCD,全称Grand Central Dispath,是苹果开发的一种支持并行操作的机制.它的主要部件是一个FIFO队列和一个线程池,前者用来添加任务,后 ...

  2. iOS开发-Autolayout小结

    昨天重点学习了下Autolayout,把以前没有吃透的概念重新理解了下,现在感觉整个人都是棒棒哒. 上一个项目是使用计算坐标代码的方式来布局UI界面,这种方式的缺点在于当苹果发布新尺寸设备时需要重写代 ...

  3. iOS开发——NSString小结

    1.创建常量字符串. NSString *astring = @"This is a String!";   2.创建空字符串,给予赋值. NSString *astring = ...

  4. iOS开发UI篇—UITableview控件使用小结

    iOS开发UI篇—UITableview控件使用小结 一.UITableview的使用步骤 UITableview的使用就只有简单的三个步骤: 1.告诉一共有多少组数据 方法:- (NSInteger ...

  5. iOS开发网络篇—网络请求(HTTP协议)小结

    iOS开发网络篇—网络请求(HTTP协议)小结 iOS开发网络篇—网络请求(HTTP协议)小结 1. 聊一下HTTP协议(协议的完整的通信过程) 2.通信过程 1> 请求 * 客户端 --> ...

  6. IOS开发,知识点小结,ios开发中经常使用的宏定义总结

    IOS开发,从应用跳转到用浏览器打开网页: [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http:// ...

  7. iOS开发之山寨版新浪微博小结

    在之前的博客IOS开发之新浪围脖中获取微博的内容是使用我自己的access_token来请求的数据,那么如何让其他用户也能登陆并获取自己的微博内容呢?接下来就是OAuth和SSO出场的时候啦.OAut ...

  8. iOS开发系列--无限循环的图片浏览器

    --UIKit之UIScrollView 概述 UIKit框架中有大量的控件供开发者使用,在iOS开发中不仅可以直接使用这些控件还可以在这些控件的基础上进行扩展打造自己的控件.在这个系列中如果每个控件 ...

  9. IOS开发基础知识碎片-导航

    1:IOS开发基础知识--碎片1 a:NSString与NSInteger的互换 b:Objective-c中集合里面不能存放基础类型,比如int string float等,只能把它们转化成对象才可 ...

随机推荐

  1. state/ui-router

    state/ui-router 一个状态对应于一个页面位置 通过定义controller.template和view等属性,来定义指定位置的用户界面和界面行为 通过嵌套的方式来解决页面中的一些重复出现 ...

  2. linux中crontab和at

    1. Red Hat的发行版本中,通常还可以使用工具ntsysv设置服务的自启动状态. #类似chkonfig 服务名 on|off 2.系统服务脚本目录:/etc/init.d 3.ps: -a:显 ...

  3. 分页控件(PageControl)的相关属性说明

    UIPageControl *pageControl = [[UIPageControl alloc] init]; pageControl.center = CGPointMake(w * ); p ...

  4. vijos P1037搭建双塔

    P1037搭建双塔 Accepted 标签:动态规划 背包     描述 2001年9月11日,一场突发的灾难将纽约世界贸易中心大厦夷为平地,Mr. F曾亲眼目睹了这次灾难.为了纪念“9?11”事件, ...

  5. Sharepoint中有关文件夹的操作

    1.GetItemsWithUniquePermissions根据返回数量和是否返回文件夹获取唯一权限的列表项集合 对于SharePoint对象模型中SPList的GetItemsWithUnique ...

  6. ElasticSearch 高可用分布式集群搭建,与PHP多线程测试

    方案: 使用HAproxy:当其中一台ElasticSearch Master宕掉时,ElasticSearch集群会自动将运行正常的节点提升为Master,但HAproxy不会将失败的请求重新分发到 ...

  7. .NET DLL 保护措施详解(三)最终效果

    针对.NET DLL 保护措施详解所述思路完成最终的实现,以下为程序包下载地址 下载 注意: 运行环境为.net4.0,需要安装VS2015 C++可发行组件包vc_redist.x86.exe.然后 ...

  8. Cocos2d-JS加速度计与加速度事件

    在很多移动设备的游戏使用到了加速度计,Cocos2d-JS引擎提供了访问加速度计传感器的能力.本节我们首先介绍一下加速度计传感器,然后再介绍如何在Cocos2d-JS中访问加速度计.加速度计加速度计是 ...

  9. C#代码配置IIS 操纵IIS

    前言: IIS到目前经历了四个版本分别为 IIS4.0  IIS5.0 IIS6.0 IIS7.0,其中IIS6.0 IIS7.0是在5.0的安全问题的基础上获得的发展,目前为止.6.0版本以后的都是 ...

  10. Facade模式和Mediator模式

    相同的目的:把某种策略施加到另一组对象上. Facade从上面施加策略. 其使用是明显且受限的.当策略涉及范围广泛并且可见时. 约定的关注点.都同意使用Facade而不是隐藏于其下的对象. Media ...