I'm trying to build an Ipa with 64 bit support using Visual Studio Tools for Apache Cordova (CTP 3.0) but without success.
It seems that the vs-mda-remote agent builds just with the Arm architecture support.
Unzipping the Ipa and checking the binary with the file command, returns this result:
Mach-O executable arm
The curious thing is that opening the xcode project deployed to the mac builder machine, the build settings of the universal architecture are properly set and building and archiving it generates an Ipa that contains a binary that supports the 64 bit architecture.
Do you know why there's this difference?
Could be some parameters that vs-mda-remote sets to the command line when building the project, overriding the project's build settings?
Could be a Cordova problem?
64 bit support is included in Cordova builds since v3.4.1, so every version of Tools for Apache Cordova has had 64-bit support. vs-mda-remote simply does a base cordova build, so you should be getting arm, arm7v, and arm64 in one fat binary when building under release.
http://cordova.apache.org/announcements/2014/11/25/ios-64bit.html
However, right now the Cordova project only builds "active architectures" under the debug config while it builds all for release. Building only one speeds up build times during debugging.
If you don't like this debug behavior, you should be able override this by placing a custom build-debug.xcconfig in res/native/ios/cordova with the key ONLY_ACTIVE_ARCH = NO;
Here's the original: https://github.com/apache/cordova-ios/blob/master/bin/templates/scripts/cordova/build-debug.xcconfig
Related
I'm having trouble to build an external pre built dependency. It throws the following error:
In /Users/me/Projects/app/ThirdParty/GoodFiles/GD.framework/GD(nondga_helper.o), building for iOS, but linking in object file built for free standing, file '/Users/me/Projects/app/ThirdParty/GoodFiles/GD.framework/GD' for architecture arm64
One of the questions that really bothers me is that I don't have a real idea what "free standing" really means. I thought it had to do with being a fat binary, but after running lipo -thin arm64 GD -o GD (and verifying with -info that it really worked) in one of my build scripts I'm still seeing the same problem.
I also tried to exclude arm64 from the simulator and x86_64 from iOS builds in Excluded Architectures as mentioned elsewhere, but that didn't work either.
Removed the Xcode 12 reason. This already doesn't compile anymore in Xcode 11.
Hi there are new BB certification files you have to add along with the usual GD.Framework files. These are documented on Blackberry website
New Xcode build system
GD.framework
BlackBerryCerticom.xcframework
BlackBerryCerticomSBGSE.xcframework
Legacy Xcode build system
GD.framework
BlackBerryCerticom.framework
BlackBerryCerticomSBGSE.framework
https://docs.blackberry.com/en/development-tools/blackberry-dynamics-sdk-ios/8_1/blackberry-dynamics-sdk-ios-devguide/Steps-to-get-started-And-iOS/rqx1490022241984/Prepare-an-app-to-use-the-static-framework
Check:
Xcode > Preferences > Locations > Command Line Tools
In my case it was set to Xcode 12 after installing Xcode 12. There is NO Xcode 12 proof solution until mid December.
I know this has been posted about a million times but I still can't figure out what's going on.
This is an Ionic 3 project that already works and builds fine on Android. I am now trying to build it for iOS and I'm getting this error when building in Xcode. I already checked my Link Binary With Libraries build phase and there are no pod files in there. Also I am in the .xcworkspace file, not the .xcodeproj.
Apple Mach-O Linker Error
Linker command failed with exit code 1
When I build using ionic cordova build ios I get an error code 65 for build command xcodebuild.
Edit: After some more digging I think I found a more specific error, Framework not found FileProvider for architecture x86_64.
I would like to give an alternative here. That is you can use Ionic Package service.
Ionic Packages makes it easy to build a native binary of your app in
the cloud. Perfect for developers using Windows that want to build iOS
apps.
This lets you:
Send your packaged app to others
Build your app for platforms not supported by your computer (e.g. iOS
builds on Windows)
Build .ipa and .apk files that you can submit to app stores
I'm building Cordova app with
cordova build --device --release
uploading it to itunes connect with
pilot upload -i platforms/ios/build/device/AskPal.ipa --verbose
The publishing process using Fastlane Pilot fails with:
ERROR ITMS-90086: "Missing 64-bit support. iOS apps submitted to the
App Store must include 64-bit support and be built with the iOS 8 SDK
or later. We recommend using the default "Standard Architectures"
build setting for "Architectures" in Xcode, to build a single binary
with both 32-bit and 64-bit support."
The way I'm "fixing" this is by deleting the ios platform from Cordova, and then reinstalling it with coordova platform add ios.
Please tell me there is a way to specify the those build architectures in the Cordova configs.
it is not working
Build Active Architecture
I am building an iOS app and generating .app file in following two ways:
using Xcode in my machine
Jenkins job set up
In my Jenkins script, I am using the command xcodebuild -configuration "$CONFIGS" to generate the build. Where CONFIGS is set to one of my project configuration. Locally, I am building a scheme which is linked to same configuration.
Problem: .app generated from Jenkins build crashes as soon as I launch the app on certain iOS like 8.4.1; works on certain iOS versions like 7.X. Build generated from my local Xcode works fine on all supported iOS versions.
Diagnosis: On further troubleshooting and build size comparison I found that size of exec file inside .app file from Jenkins is half the size of file generated from my local machine.
Anyone has idea on why there could be size difference in executable files?
As you suspected, an architecture is missing in your app.
Check the Xcode configuration used by Jenkins, especially that the Build Settings Build active architecture only is on No, and that the Valid Architecture contains all the needed architecture (arm64 and armv7).
If you need to change something, do take care of the Debug vs. Release thing -- by default, building on your Mac usually yields a Debug build; it may not be the same on the Jenkins job.
I have a number of iOS Xcode projects that all use the same subproject. This subproject builds a static library, that's then linked to the master project. Up until now this subproject and all master projects have been 32-bit.
I want to build a new project with 64-bit support, so have set the architecture to "armv7, armv7s, arm64".
Of course, I had to update the shared subproject to "armv7, armv7s, arm64" as well.
Everything builds fine.
However, now when I build old 32-bit-only projects to run on 64-bit devices it fails, because Xcode builds a 64-bit non-fat version of the static library from the subproject, which it can't link to.
Is there a way to tell Xcode (linker flag?) to build and link to the 32-bit version of the subproject, because the master project is 32-bit?
Thanks,
Russell.
Answer was that I had "Build Active Architecture Only" set to Yes in the subproject by mistake, causing it to always build a thin library. Setting to no, builds a thick lib with all supported architectures, meaning it'll work with a parent 32-bit project!