Cordova 在 IOS 上构建时忽略指定的体系结构
Cordova ignores the specified architecture when building on IOS
在设法让它在 Android 和网络浏览器(OS X 10.10.2 Yosemite, XCode 6.1.1, Cordova 4.2.0 而我的 iPad 是 运行ning iOS 8.1)。我的 iPad 已插入。我按照 IOS 的安装步骤操作:
- 一般情况下,将 Deployment Target 更改为 7.0 或更高版本
转到构建设置并更改:
- 一个。有效架构 => armv7
- b。仅构建活动架构 => 否
- c。运行路径搜索路径 => $(inherited) @executable_path/Frameworks
- d。 Objective-C 桥接头 => [项目名称]/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 构建过程。
知道如何 tell/force Cordova 针对我指定的架构 (armv7) 进行构建吗?
我的建议是使用 cordova prepare
,然后从 Xcode
构建。
cordova prepare
复制文件和配置设置但不修改本机代码或尝试 运行 标准构建过程。
这是我在所有 iOS/Cordova 项目中使用的通用构建路径,似乎运行良好。
根据这个 SO answer 这是解决方案(对我有用)
构建时,您可以指定要执行的构建类型:
cordova compile --device
或 i386:
cordova compile --emulator
使用 xcconfig 配置文件
在自动构建期间,我在构建脚本添加 iOS 平台后创建文件:
echo 'ARCHS=armv7 arm64' >> ${CURR_DIR}/platforms/ios/cordova/build-release.xcconfig
构建日志的摘录:
> cordova build ios --device --release
...
Build settings from configuration file '/Users/xxx/git/xxx/platforms/ios/cordova/build-release.xcconfig':
ARCHS = armv7 arm64
CODE_SIGN_IDENTITY = XXXX
ENABLE_BITCODE = true
PROVISIONING_PROFILE = XXXX
VALID_ARCHS = armv7 arm64
在设法让它在 Android 和网络浏览器(OS X 10.10.2 Yosemite, XCode 6.1.1, Cordova 4.2.0 而我的 iPad 是 运行ning iOS 8.1)。我的 iPad 已插入。我按照 IOS 的安装步骤操作:
- 一般情况下,将 Deployment Target 更改为 7.0 或更高版本
转到构建设置并更改:
- 一个。有效架构 => armv7
- b。仅构建活动架构 => 否
- c。运行路径搜索路径 => $(inherited) @executable_path/Frameworks
- d。 Objective-C 桥接头 => [项目名称]/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 构建过程。
知道如何 tell/force Cordova 针对我指定的架构 (armv7) 进行构建吗?
我的建议是使用 cordova prepare
,然后从 Xcode
构建。
cordova prepare
复制文件和配置设置但不修改本机代码或尝试 运行 标准构建过程。
这是我在所有 iOS/Cordova 项目中使用的通用构建路径,似乎运行良好。
根据这个 SO answer 这是解决方案(对我有用)
构建时,您可以指定要执行的构建类型:
cordova compile --device
或 i386:
cordova compile --emulator
使用 xcconfig 配置文件
在自动构建期间,我在构建脚本添加 iOS 平台后创建文件:
echo 'ARCHS=armv7 arm64' >> ${CURR_DIR}/platforms/ios/cordova/build-release.xcconfig
构建日志的摘录:
> cordova build ios --device --release ... Build settings from configuration file '/Users/xxx/git/xxx/platforms/ios/cordova/build-release.xcconfig': ARCHS = armv7 arm64 CODE_SIGN_IDENTITY = XXXX ENABLE_BITCODE = true PROVISIONING_PROFILE = XXXX VALID_ARCHS = armv7 arm64