ios-app支持arm64位时, 一些问题的研究

2015年2月起, 苹果将拒绝不支持arm64的应用, 未雨绸缪,最近有点时间,先研究起来.

首先明确一点是, arm64是新的cpu架构, 它主要在寻址范围和数值容量上有了质的改进,但对它的支持要求,相关代码要定义出两套来 (用__LP64__宏来区别). 比如void* 的值, 不能再赋值给int变量了.

把项目改成支持arm64:

XCode工程里, Target中, Build Setttings中 Architectures值改为Standard architectrues (armv7 arm64) - $ (ARCHS_STANDARD)

不出意外, 有些问题, 总结下来两个问题 libcurl 和 google protobuf两个第三方库

一, libcurl:

编译错误是 "‘__curl_rule_01__‘ decleared as an array with a negative size"

顺着宏定义找一找,发现是 sizeof (long), 和CURL_SIZEOF_LONG 的值不一样.

类似这种代码肯定不行了. google了一阵子,找到一个编译好的库 libcurl for iOS 7.39.0 http://home.comcast.net/~seiryu/libcurl-ios.html

把头文件和静太库放到工程里

打开代码看

这种代码才想得周到嘛.

二, google protobuf

编译错误是

#error Host architecture was not detected as supported by protobuf

搜索一个代码, 发现这个三方库里已经通过了__LP64__定义了两套代码.

所以我这里直接把这一行注了,在它的下面直接增加

#define GOOGLE_PROTOBUF_ARCH_X64 1

#define GOOGLE_PROTOBUF_ARCH_64_BIT 1

其它问题, 发现后随时更新

时间: 2024-07-31 14:01:20

ios-app支持arm64位时, 一些问题的研究的相关文章

IOS 其他 - 如何让 app 支持32位和64位

让App支持32-bit和64-bit基本步骤 1.确保Xcode版本号>=5.0.1 2.更新project settings, minimum deployment target >= 5.1.1 3.改变Architectures为 Standard architectures(include 64-bit) 4.运行测试代码,解决编译warnings and errors,对照本文档或者官方文档 64-Bit Transition Guide for Cocoa Touch对相应地方做

iOS程序支持64位以及project.pbxproj文件的介绍

程序从32bit转到64bit总结: 一.出现各种 "OBJC_CLASS$_ShareSDK", referenced from: 解决方案: 网上版本: - 选中Targets->Build Settings->Architectures. 把build active architectures only 改为 NO. - 把最下面的Valid Architectures中的arm64参数删掉就可以了(但这样不是反倒不支持64位了?) 或者: - 双击Architect

ios app 支持 ipv6-only

最近苹果公司发布声明:自今年6月1日开始,所有提交至苹果App Store的应用申请必须要兼容面向硬件识别和网络路由的最新互联网协议--IPv6-only标准. 那么问题来了,目前的app是否支持ipv6? ,哪些需要支持ipv6? 一:测试你的app目前是否支持ipv6,如果不支持6月1以后将无法提交到商店 这里有一份wwdc2015关于ipv6的视频https://developer.apple.com/videos/play/wwdc2015/719/ 利用mac分享一个ipv6的网络即可

iOS 怎么检测app支不支持64位

在2015年2月1日新的iOS应用提交到App Store的开始必须包括64位支持并与iOS 8 SDK构建.2015年6月1日开始的应用程序更新也要遵循同样的要求.为了使项目中的64位,我们建议使用默认的Xcode编译设置"标准结构"来建立一个单一的二进制与32位和64位代码. 在你已经纠正了问题,你可以用Xcode应用程序或上传一个新的二进制iTunes Connect. 1.检测项目中有没有不支持64的sdk (1)Xcode会提示你更新你的项目,其中的警告和错误信息对于转换到6

ios app 实现热更新(无需发新版本实现app添加新功能)

目前能够实现热更新的方法,总结起来有以下三种 1. 使用FaceBook 的开源框架 reactive native,使用js写原生的iOS应用 ios app可以在运行时从服务器拉取最新的js文件到本地,然后执行,因为js是一门动态的 脚本语言,所以可以在运行时直接读取js文件执行,也因此能够实现ios的热更新 2. 使用lua 脚本.lua脚本如同js 一样,也能在动态时被.之前愤怒的小鸟使用 lua脚本做的一个插件 wax,可以实现使用lua写ios应用.热更新时,从服务器拉去lua脚本

[官方] Unity4.6.2发布,支持64位iOS

Unity4.6.2现在已经正式发布并且提供下载,这是Unity第一个支持64位iOS的正式版本,采用了最新的IL2CPP 技术. 下载请访问:http://unity3d.com/cn/unity/download IL2CPP是Unity内部开发的一款创新型脚本技术.它能极大地提高项目中所有脚本的性能,并且完美兼容当前iOS构建所使用的Mono-AOT解决方案. 我们可以使用IL2CPP将脚本快速移植到新平台(例如WebGL等)及架构,ARM64(64位iOS系统架构)就是其中之一.使用Un

iOS支持arm64

Apple要求2015/2/1之后提交的包必须包含arm64,否则要被拒.因此,对于64-bit的支持可谓迫在眉睫,尤其是对于有很多遗留代码的项目,更要提早开工. 如何支持arm64 为了支持arm64结构,需要满足一下几个条件: 在Architectures设置项里添加arm64条目,如果使用的Xcode是6.0以上的版本,使用默认的配置项即可. 在Valid Architectures设置项里添加arm64条目. 讲Deployment Target改为大于等于5.1.1即可,因为arm64

关于IOS二维码创建、扫描的使用方式(IOS,ZBar支持64位解决办法)

在IOS开发过程中,有时需要使用到二维码扫描及二维码生成,现在介绍我自己测试并通过的方法: (一) 二维码生成方式: 需要工具:libqrencode库,QRCodeGenerator.h,QRCodeGenerator.m文件,说实话,在网上找这两个文件确实废了我不少的功夫,下面我会把详细的下载地址贴上,相信定能节省大家不少的时间. 有了以上两个文件之后你就可以将它添加到你到工程中,使用相应的接口API便可以完成相应的功能. imageview.image = [QRCodeGenerator

iOS第三方平台不支持64位的解决办法

来源地址:http://blog.csdn.net/sky_2016/article/details/39737279 phone5s才用64位双核苹果A7处理器,所以上线的app必须支持64位环境.但是现在有很多第三方平台,不支持64位容易开成以下类似的错误 Undefined symbols for architecture x86_64: \\\\\\\\\\\\\\\"_OBJC_CLASS_$_QQApiInterface\\\\\\\\\\\\\\\", reference