Cordova 在 IOS 上构建时忽略了指定的架构
Posted
技术标签:
【中文标题】Cordova 在 IOS 上构建时忽略了指定的架构【英文标题】:Cordova ignores the specified architecture when building on IOS 【发布时间】:2015-04-09 04:32:04 【问题描述】:在设法让它在 android 和网络浏览器(OS X 10.10.2 Yosemite、XCode 6.1.1、Cordova 4.2.0 和我的 iPad 运行 ios 8.1 之后,我正在尝试在 IOS 上构建 PhoneRTC 演示)。我的 iPad 已插入。我按照 IOS 的安装步骤操作:
-
一般情况下,将部署目标更改为 7.0 或更高版本
转到构建设置并更改:
一个。有效架构 => armv7 乙。仅构建活动架构 => 否 c。运行路径搜索路径 => $(inherited) @executable_path/Frameworks d. Objective-C 桥接头 => [ProjectName]/Plugins/com.dooble.phonertc/Bridging-Header.h e.嵌入的内容包含 Swift 代码 => 是的我重复了步骤 4a。 - 4c。对于 CordovaLib 项目也是如此。
当我运行cordova build ios
时,构建失败。在控制台中,我看到了这个:
Build settings from command line:
ARCHS = i386
CONFIGURATION_BUILD_DIR = /Users/Francis/Desktop/PhoneRTC/PhoneRTC/platforms/ios/build/emulator
SDKROOT = iphonesimulator8.1
SHARED_PRECOMPS_DIR = /Users/Francis/Desktop/PhoneRTC/PhoneRTC/platforms/ios/build/sharedpch
VALID_ARCHS = i386
这似乎表明 cordova 忽略了我刚刚指定的有效架构。我也尝试重新启动我的 PC 和 iPad,但这并没有帮助。 cordova build ios --archs="armv7"
也不起作用。
从 XCode 内部构建是可行的,但这不是我想要的,因为它跳过了 cordova 构建过程。
知道如何告诉/强制 Cordova 针对我指定的架构 (armv7) 进行构建吗?
【问题讨论】:
使用cordova prepare
,然后从xcode
构建。这是自定义 iOS 设置需求的常用构建路径。
是的,这解决了我的问题!同时,您还帮助我更好地理解了 cordova 构建过程。谢谢!
将此添加为其他人查找的答案。
【参考方案1】:
使用 xcconfig 配置文件在自动构建期间,我在构建脚本添加 iOS 平台后创建文件:
echo 'ARCHS=armv7 arm64' >> $CURR_DIR/platforms/ios/cordova/build-release.xcconfig
构建日志的摘录:
> cordova build ios --device --release ... 从配置文件'/Users/xxx/git/xxx/platforms/ios/cordova/build-release.xcconfig'构建设置: ARCHS = armv7 arm64 CODE_SIGN_IDENTITY = XXXX ENABLE_BITCODE = 真 PROVISIONING_PROFILE = XXXX VALID_ARCHS = armv7 arm64
【讨论】:
【参考方案2】:我的建议是使用cordova prepare
,然后从Xcode
构建。
cordova prepare
复制文件和配置设置,但不修改本机代码或尝试运行标准构建过程。
这是我在所有 iOS/Cordova 项目中都使用过的通用构建路径,似乎运行良好。
【讨论】:
【参考方案3】:根据SO answer,这是解决方案(为我工作)
在构建时,您可以指定要执行的构建类型:
cordova compile --device
或者对于 i386:
cordova compile --emulator
【讨论】:
以上是关于Cordova 在 IOS 上构建时忽略了指定的架构的主要内容,如果未能解决你的问题,请参考以下文章
当我在 ios 上运行 cordova 时,它会继续构建我的旧应用程序