美文网首页iOS
Xcode8.0打包测试的问题

Xcode8.0打包测试的问题

作者: 戴面具的搬运工 | 来源:发表于2016-11-04 00:39 被阅读1128次

1.问题描述:升级了Xcode8之后第一次打包上架;这次上架的历程是有点艰难的;下面是遇到的坑。

首先是报以下的错

这个错是很容易解决的:到工程的General根据如下步骤设置就好了。

然后就是报这个错了,找了好久,一直没有发现。not found for architecture armv7

根据这个我把build setting 里面valid architectures的armv7删除了。就可以正常运行打包了,但是有个很严重的bug诞生啦

 这是正常要这样设置

然后上架了之后,发现有些机型下载不了,报以下错:此app与您的设备不兼容;

出现的大bug

这个问题就是删除了armv7。指令集出现的问题

2.最终解决方法

1)首先加上删除的armv7。

2)到build setting下面搜索Build Active Architecture Only选中,设置如下

就可以很完美的打包了。

原文链接:http://www.jianshu.com/p/7d56d08d0128

补充:armv7,armv7s,arm64到底是什么

下面的有点长,耐心看,应该可以差不多能懂

目前为止Apple移动设备默认指令集

armv6 设备: iPhone, iPhone2, iPhone3G, 第一代、第二代 iPod Touch

armv7 设备: iPhone3GS, iPhone4, iPhone4S  ,Pad, iPad2, iPad3(The New iPad), iPad     mini,iPod Touch 3G, iPod Touch4

armv7s设备: iPhone5, iPhone5C, iPad4(iPad with Retina Display)

arm64 设备: iPhone5S, iPad Air, iPad mini2(iPad mini with Retina Display)

Architectures:

指明选定Target要求被编译生成的二进制包所支持的指令集支持指令集是通过编译生成对应的二进制数据包实现的,如果支持的指令集数目有多个,就会编译出包含多个指令集代码的数据包,从而会造成最终编译生成的包很大。

Valid Architectures:

指明可能支持的指令集并非Architectures列表中指明的指令集都会被支持,Valid Architectures限制可能被支持的指令集的范围,即Valid Architectures和Architectures列表的交集,才是XCode最终生成二进制包所支持的指令集。

比如,将Architectures支持arm指令集设置为:armv7,armv7s,对应的Valid Architectures的支持的指令集设置为:armv7s,arm64,那么此时,XCode生成二进制包所支持的指令集只有armv7s 。

Build Active Architecture Only:

指明是否只编译当前连接设备所支持的指令集

该选项起作用的条件有两个,必须同时满足才会起作用:

1. 其值设置为YES

2. XCode成功连接调试设备

假定我们将Build Active Architecture Only值设置为YES,同时XCode连接上手机iPhone5S(匹配指令集arm64)

1. 第一种情况

Architectures:  armv7, armv7s, arm64

ValidArchitectures:  armv6, armv7s, arm64

生成二进制包支持的指令集: arm64

2. 第二种情况

Architectures: armv6, armv7, armv7s

Valid Architectures:  armv6, armv7s, arm64

生成二进制包支持的指令集: armv7s

3. 第三种情况

Architectures:  armv6, armv7

Valid Architectures: armv6, armv7s, arm64

生成二进制包支持的指令集: armv7

4. 第四种情况

Architectures: armv6

Valid Architectures: armv6, armv7s, arm64

生成二进制包支持的指令集: 虽然编译成功了,但是并没有任何目标生成, 因为从XCode4.5开始,就不再支持armv6指令集,所以列表中写了也是白写。

5. 第五种情况

Architectures: armv7, armv7s, arm64

Valid Architectures: armv7,armv7s

生成二进制包支持的指令集: 编译出错信息

No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch=arm64, VALID_ARCHS=armv7 armv7s)

可以看出:当Build Active Architecture Only起作用时:

连接的手机指令集匹配是由高到低(arm64 > armv7s > armv7)依次匹配的。

如连接手机为iPhone5S,其默认指令集为arm64,若Architectures列表为armv7, armv7s,则会选取armv7s指令集为目标指令集,如果此时Valid Architectures列表中包含该指令集,则成功生成的二进制包只支持armv7s指令集,若alid Architectures列表不包含此指令集,则编译将会出错:

No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch=armv7s, VALID_ARCHS=armv7 arm64)

同样的,若Architectures列表为armv7,则会选取armv7作为目标指令集,若Valid Architectures列表中包含了armv7指令集,则能够成功生成二进制包,其支持的指令集只有armv7,若Valid Architectures列表中不包含armv7,则编译失败。

建议:通常Debug模式设置值为Yes,Release模式设置为No

相关文章

  • Xcode8.0打包测试的问题

    1.问题描述:升级了Xcode8之后第一次打包上架;这次上架的历程是有点艰难的;下面是遇到的坑。 首先是报以下的错...

  • Xocde8.0 输出乱码

    更新Xcode8.0之后会出现这样的问题: 运行之后在控制台出现这样的情况,影响测试的视觉效果 解决方法: Pro...

  • 打包测试

    打包测试 1. 什么是打包测试? 2. 为什么要做打包测试? 3. 怎样进行打包测试? 限制人 > 必须拥有App...

  • 二. 打包测试

    一. 打包测试简介 何谓打包测试所谓打包测试, 就是将正在开发的App, 打包为.ipa压缩包, 指定的设备安装这...

  • iOS开发涉及证书整理

    最新iOS打包app发到蒲公英给测试人员测试 ad Hoc打包测试

  • 非即时可用资源学习在我们软件打包实践中的应用

    一、我们面临的问题 1、软件打包(构建)工作频率问题:在ST、UAT测试环节,我们需要不定期的打包,用于更新软件和...

  • 04. Eclipse打包时的两个坑

    前言 今天项目的新版本要提交测试,原来都是同事打包,今天我来打包,结果简单的打包坑了有一会时间。 问题描述1 打包...

  • maven 打包 cannot access 问题

    问题 一个项目在开发环境,本地都能打包通过 在测试环境打包过不去 提示 error: cannot access ...

  • 打包测试出现的问题:

    1. 打包生成IPA包时遇到错误:missing ios distribution signing identit...

  • iOS 本地自动打包工具

    1、为什么要自动打包工具? 每修改一个问题,测试都让你打包一个上传fir , 你要clean -> 编译打包 ->...

网友评论

  • b37bc4cd43eb:我把 valid architectures 和 Build Active Architecture Only 都设置了,用5c 和 4s 测试还是会报错not found for architecture armv7,怎么解决
  • 大树_yrh:不错不错,很详细,大爱 :heart_eyes:

本文标题:Xcode8.0打包测试的问题

本文链接:https://www.haomeiwen.com/subject/iusbuttx.html