我有一个已发布的应用程序,它同时支持amrv6和armv7。 现在我有一个仅与armv7兼容的升级(我添加了一个依赖于armv7的外部库)。当我尝试将应用程序提交到商店时,我收到错误detailed in
我理解上一个错误,我需要更改我的应用程序,以便它支持这两种体系结构。我的问题是我的代码依赖于一个只与armv7兼容的库。如果我更改项目的属性以支持armv6和armv7,我会收到编译错误(详情如下)。我需要能够编译代码并支持这两种体系结构: armv7使用我依赖的库编译 armv6有不同的代码,不依赖于库。
我怎样才能做到这一点?
错误详情:
• the compile crash is in one Lib file (.a) and the error says :
ld: warning: directory not found for option '-L/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk/usr/lib/gcc/arm-apple-darwin10/4.0.1' ld: in /Users/.../(lib file).a, file is universal but does not contain a(n) armv6 slice for architecture armv6 Command /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/llvm-gcc-4.2 failed with exit code 1
提前致谢
答案 0 :(得分:4)
嗯,我意识到我的最后答案不是正确的...... Apple说这是不可能的但这不是真的......感谢Jim,我搜索的更多我发现了一种方法......
+
并添加armv6和armv7 -l
#if defined _ARM_ARCH_7
这就像吉姆回答但更详细。
答案 1 :(得分:2)
我从Apple收到了这个答案:
您无法有条件地为armv6或armv7构建应用。您的静态库必须同时为armv6和armv7构建,因为您的应用程序支持这两种体系结构......您可以通过将iOS部署目标设置为4.3或更高来放弃对armv6的支持。
基本上我需要让库的开发人员为这两种体系结构(= /)构建或者将我的最小目标设置为4.3并且只设置armv7
答案 2 :(得分:1)
在构建设置中,如果将鼠标悬停在某个设置上,则会显示+
,您可以单击此按钮将设置范围限定为特定体系结构。您必须从正常的库列表中删除库,并通过仅为armv7手动传递-L
参数来添加它。您可能还需要添加预处理器定义,以便将#ifdef
放在调用库的代码周围。
编辑:考虑到这一点,您可以通过在构建阶段部分将库标记为可选,以更简单的方式执行此操作。
答案 3 :(得分:0)
对不起,我从剪贴板上粘贴了错误的东西。
我想说:
只需从Target Aguilar Settings中的Valid Architectures中删除不良架构,您就可以了:)
答案 4 :(得分:0)
我有同样的问题,所以我切换:“Build Activate Architecture Only”为yes(在Target - > Build Settings中)
这适用于......现在。
我想我的应用程序无法在iPhone 5上运行,但我必须等到我使用的静态库的供应商为armv7 / armv7s构建它
答案 5 :(得分:0)
我对Google Analytics iOS SDK遇到了这个问题。仅仅用最新版本替换库就解决了这个问题。