[转] ios打包IPA的各种问题和解决方法
最近做了一个东西,在打包ipa文件时遇到了各种问题,纠结了我好几天。
由于我一直是做android的,在打包时以为ios打包也和android一样:用IDE(eclipse)生成一个签名证书,然后打包。事实证明ios的打包比这复杂多了。下面介绍一下我遇到的各种问题。
1.证书问题
要打包ipa首先需要设置code sign identity,一个应用需要打包至少需要三个要素:证书,APP ID,还有一个容易被忽略的provisioning profile。
证书的申请流程到处都可以找到,这里只简单介绍一下,首先使用钥匙串创建一个certSigningRequest文件,然后登录apple
developer的ios developer申请证书,将certSigningRequest文件上传,生成一个证书,将它下载下来即可。
接着是APP ID,仍然是到apple developer创建,一般是公司域名的倒写加应用名。
我之前一直以为到这里就结束了,就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"
在archive时会碰到一个蛋疼的问题,就是明明在模拟器编译运行都正常,但是打包ipa时却报一个找不到头文件的错,这是由于直接编译时使用的是你的
系统的头文件目录,而archive时使用的时SDK下的头文件目录,一般情况下这两者时一致的,但是有些特殊库的头文件,如libxml,在系统下
/usr/include/libxml2是包含在头文件自动搜索范围内的,而SDK中这个目录不在自动搜索范围内,所以就会报一个"file not
found"。
解决方式就是在编译参数里面添加一个头文件搜索目录,工程->build setting,搜索header search paths,添加你需要手动添加的头文件目录,如/usr/include/libxml2。
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都试一下。
目前遇到的比较头疼的问题就这三个,以后遇到新的再更新。
[转] ios打包IPA的各种问题和解决方法的更多相关文章
- ipa包如何打包?ios打包ipa的四种方法分享
今天带来的内容是ios打包ipa的四种方法.总结一下,目前.app包转为.ipa包的方法有以下几种,下面一起来看看吧! 1.Apple推荐的方式,即实用xcode的archive功能 Xco ...
- iOS出现<object returned empty description>的解决方法
iOS出现<object returned empty description>的解决方法: 使用 [str length] <= 0 判断处理
- iOS打包ipa安装包的流程
应用的发布也分两种 一种是.打包成ipa上传到国内第3方软件市场,当用户的手机已经JailBreak时,双击下载的ipa文件就可以安装软件 (ipa同android的apk包一样,实质是一个压缩包) ...
- Xcode7.3打包ipa文件 报错和解决
An error occurred during export. The file “xxx.ipa” couldn’t be opened because there is no such file ...
- 【笔记】vue-cli 打包后路径问题出错的解决方法
几天之前打包自己的vue 项目上传到远程服务器上面 但是遇到了如下几个问题: 1. 线上浏览页面时是空白页面 2. 打包后资源文件(js, css 文件)引用的路径不正确 3. 开发环境中使用到的如: ...
- spring boot 1.x完整学习指南(含各种常见问题servlet、web.xml、maven打包,spring mvc差别及解决方法)
spring boot 入门 关于版本的选择,spring boot 2.0开始依赖于 Spring Framework 5.1.0,而spring 5.x和之前的版本差距比较大,而且应该来说还没有广 ...
- hybird app 用 xcode ios打包 ipa 测试包并且安装真机测试
1.创建 ios 项目 1.用 cordova 创建一个 ios 项目 npm install -g cordova cordova create hello com.mydomain.hello H ...
- ios打包ipa的四种实用方法(.app转.ipa)
总结一下,目前.app包转为.ipa包的方法有以下几种: 1.Apple推荐的方式,即实用xcode的archive功能 Xcode菜单栏->Product->Archive->三选 ...
- iOS打包ipa给客户测试流程
IOS项目开发的过程中经常会用到一个测试的问题,特别是外包的项目,客户拿了那么多钱,看不到产品时时的进度说不过去,而且UI和功能是否和符合用户需求这个很重要,需要客户的认同. 所以就需要时时给开发中的 ...
随机推荐
- python-多线程(一)
一.Python中的线程使用: Python中使用线程有两种方式:函数或者用类来包装线程对象. 1. 函数式:调用thread模块中的start_new_thread()函数来产生新线程.如下例: ...
- linux命令学习笔记(10):cat 命令
cat命令的用途是连接文件或标准输入并打印.这个命令常用来显示文件内容,或者将几个文件连接起来显示, 或者从标准输入读取内容并显示,它常与重定向符号配合使用. .命令格式: cat [选项] [文件] ...
- NodeJS中 Path 模块
var path = require('path'); // 当发现有多个连续的斜杠时,会替换成一个: 当路径末尾包含斜杠时,会保留: // 在 Windows 系统会使用反斜杠. var p = p ...
- Linux下用FFMPEG采集usb摄像头到RTMP
Linux下用 FFMPEG 采集 usb摄像头视频 和 摄像头内置麦克风音频 到RTMP服务 ffmpeg -f video4linux2 -qscale 10 -r 12 -s 640x480 ...
- 1068 Find More Coins (30)(30 分)
Eva loves to collect coins from all over the universe, including some other planets like Mars. One d ...
- VBScript 内置函数
本页列出了所有内建的 VBScript 函数: Date/Time 函数 Conversion 函数 Format 函数 Math 函数 Array 函数 String 函数 其他函数 Date/Ti ...
- 自定义Panel中添加依赖属性需要注意的问题
今天帮忙同事调试一个自定义Panel的问题, 很奇怪, 利用Binding可以通过ItemSource来添加控件,但是在Listbox的xaml里添加几个ListboxItem却报异常: Visual ...
- debian服务查询
1.查询 用root身份执行service --status-all查看所有服务的状态 "+" started "-" stopped "?" ...
- HDOJ2043(JAVAset容器练习)
import java.io.PrintWriter; import java.util.HashSet; import java.util.Scanner; public class Main { ...
- java代码throws异常
总结:抛出异常 package com.ds; //异常捕获 public class fdsg { private static void throwException() { try { Stri ...