[转] ios打包IPA的各类问题和解决方法

 

最近作了一个东西,在打包ipa文件时遇到了各类问题,纠结了我好几天。android


因为我一直是作android的,在打包时觉得ios打包也和android同样:用IDE(eclipse)生成一个签名证书,而后打包。事实证实ios的打包比这复杂多了。下面介绍一下我遇到的各类问题。ios


1.证书问题xcode

要打包ipa首先须要设置code sign identity,一个应用须要打包至少须要三个要素:证书,APP ID,还有一个容易被忽略的provisioning profile。app

证书的申请流程处处均可以找到,这里只简单介绍一下,首先使用钥匙串建立一个certSigningRequest文件,而后登陆apple developer的ios developer申请证书,将certSigningRequest文件上传,生成一个证书,将它下载下来便可。eclipse

接着是APP ID,仍然是到apple developer建立,通常是公司域名的倒写加应用名。ide

我以前一直觉得到这里就结束了,就archive,结果每次都悲剧。问题出在provisioning profile上,以前一直不理解为何要这个东西,当我建立以后就知道它存在的理由了。你们知道应用在发布以前,要在没有越狱的真机上测试的话,就要将 机器UDID添加到你的开发者账号中去,而一个应用如何知道你的开发者账号里面添加了哪些UDID呢?就是经过provisioning profile,它也是经过apple developer官网建立,在建立时会让你选择类型,打包ipa测试的话就选择AD HOC,记得添加UDID,建立后下载下来生成mobileprovision文件,双击运行即添加到资源库中去,而xcode在读取你的系统里的证书时 其实是在查找资源库里面的provisioning profile。provisioning profile包含了证书,APP ID和UDID列表,archive后这些信息会被加入ipa中。测试


2."file not found"ui

在archive时会碰到一个蛋疼的问题,就是明明在模拟器编译运行都正常,可是打包ipa时却报一个找不到头文件的错,这是因为直接编译时使用的是你的 系统的头文件目录,而archive时使用的时SDK下的头文件目录,通常状况下这二者时一致的,可是有些特殊库的头文件,如libxml,在系统下 /usr/include/libxml2是包含在头文件自动搜索范围内的,而SDK中这个目录不在自动搜索范围内,因此就会报一个"file not found"。spa

解决方式就是在编译参数里面添加一个头文件搜索目录,工程->build setting,搜索header search paths,添加你须要手动添加的头文件目录,如/usr/include/libxml2。code


3.显示archive success,可是organizer不能自动弹出,手动打开也看不到刚刚打的包,或者没有share按钮可点

在介绍这个问题以前,我首先要吐糟一下某水果公司,这个问题足足浪费了我一个下午的时间,原本我能够不用加班的,当解决以后我巴不得跑到米国把某水果公司给炸了。

遇到这种问题可能有各类不一样的缘由,可是我敢说90%以上都是由于同一个缘由,而这个问题的解决方法也超简单,工程->build setting,搜索deployment,找到skip install项,将其改为NO,target->build setting,搜索deployment,找到skip install项,将其改为NO,网上找到一些资料说target下要改为YES,可是我真实操做下倒是改为NO才生成ipa的,说实话,我并不理解它的 原理,各位看官能够YES和NO都试一下。


目前遇到的比较头疼的问题就这三个,之后遇到新的再更新。

相关文章
相关标签/搜索