Google Cast SDK 2.5.0 missing required architecture arm64 - ios

I'm trying to build an iOS app using Google Cast SDK 2.5.0 and am able to build on an iPhone 5 device, but when I try to build on an iPhone 6 device, I get the following build error:
ld: warning: ignoring file ./GoogleCast.framework/GoogleCast, missing required architecture arm64 in file ./GoogleCast.framework/GoogleCast (3 slices)
I noticed a post about a similar issue here:
Google Cast SDK 2.3.0 for iOS doesn't support 64-bit
And so I tried this:
ranlib GoogleCast.framework/Versions/A/GoogleCast
But I'm still missing arm 64. Has anyone had a similar issue?

As charmingToad mentioned in the comments, I had two versions of the Cast SDK being linked in my application. Removing the older version fixed the linking errors.
If you are using Cocoapods, all you need is a pod update to update your version of the Cast SDK.
If after upgrade Xcode is complaining about linker issues, adding -all_load as a compiler flag worked for me.

Related

Unable to build HERE SDK Premium for ios-arm64-simulator

Having trouble building HERE SDK for iOS (Premium 3.19) for an ios-arm64-simulator. The error produced by Xcode 13 on an M1 pro processor is:
ld: building for iOS Simulator, but linking in dylib built for iOS, file 'Pods/HEREMaps/framework/NMAKit.xcframework/ios-arm64/NMAKit.framework/NMAKit'
clang: error: linker command failed with exit code 1 (use -v to see invocation)
After some research and testing it looks like HERE SDK's XCFramework folder as well as the Cocoapod configuration only include ios-arm64 and ios-x86_64-simulator. It looks like the podspec is attempting to fix this by overriding the target app's iOS simulator excluded architectures (adding excluded architecture "arm64"). This likely works fine in cases where only Cocoapod sourced libraries that include x86_64 are used in the target app. However, it's a problem when using libraries from other sources where there is no roll back option to x86_64 simulators (e.g. Swift Package Manager).
Is there a way to use lipo to generate ios-arm64-simulator from the two existing framework builds? Or is this something where ios-arm64-simulator needs to be built as another configuration from the HERE SDK source?
Let me tell you that we have already located this situation in the SDK and our team in charge of the SDK is working very hard to provide a solution to this problem in the next release of HERE SDK Premium.

Error with newest version of Xcode using Firebase?

I recently updated to the newest version of Xcode (7.3.1) and with the use of Firebase in project I receive this error:
ld: warning: directory not found for option '-
F/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.3.sdk/Developer/Library/Frameworks'
ld: -bundle and -bitcode_bundle (Xcode setting ENABLE_BITCODE=YES)
cannot be used together
However, I am still able to build and run the project on the simulator. I've tried deleting unnecessary libraries inside the framework paths, but it still gives me this error. Does it have to do with the Firebase frameworks I am using?
Set Build Setting-> Bitcode = NO;(See Below image)

How do I get FMDB on project target iOS 7.1 (below 8)?

I installed FMDB using pods because I need to access a local sqlite database. I liked the library, but unfortunately, if I put a deployment target under iOS 8, I get this error at build
ld: embedded dylibs/frameworks are only supported on iOS 8.0 and later (#rpath/FMDB.framework/FMDB) for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
There is a way to resolve this?
Carthage support for frameworks was added in 2.6. For now, you should be able to specify 2.5.2 2.5 in the Podfile and you should be able to Support iOS 7. I've posted an issue on github on this and we'll see if the Cocoapods configuration can be fixed.

Can not build Google Maps SDK for IOS version 1.7.0 with iOS6.1 sdk

I've just updated to GMS version 1.7.0 and can not build successfully with Base SDK iOS6.1.
I could build GMS version 1.7.0 with Base SDK iOS7.0 successfully.
I also could build old GMS version 1.6.0 with Base SDK iOS6.0 or 7.0 successfully.
Below is my error content:
Undefined symbols for architecture i386: "_glMapBufferRange",
referenced from:
gmscore::renderer::BufferObject::MapBuffer() in GoogleMaps(BufferObject.o) ld: symbol(s) not found for architecture
i386 clang: error: linker command failed with exit code 1 (use -v to
see invocation)
Can someone give me advice, thank you for your help.
I was having this same problem and has been searching for 2days for solution. But suddenly i got the solution myself. It happens when you use more than one SDK in the simulator. The SDK was not compatible with my project. I was using SDK iOS 6 and SDK iOS 7 both. And SDK iOS 6 was creating this error. Once i delete the SDK iOS 6 and restarted my xCode, it worked perfectly fine. Both in simulator and device.
Hope this helps. Thanks.
It seems like _glMapBufferRange is an OpenGLES 3.0 function, while iOS6.1 only has OpenGLES 2.0:
https://www.khronos.org/opengles/sdk/docs/man3/html/glMapBufferRange.xhtml

Failing to archive an App with an iOS6 Device

I finally realised why the 'Archive' option was gray. I needed to select an iOS device.
The only device that I currently have with me has iOS6 installed on it.
It says the following when trying to Archive the app:
ld: warning: ignoring file
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.0.sdk/usr/lib/crt1.3.1.o,
file was built for armv7 which is not the architecture being linked
(armv6):
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.0.sdk/usr/lib/crt1.3.1.o
ld: entry point (start) undefined. Usually in crt1.o for architecture
armv6 clang: error: linker command failed with exit code 1 (use -v to
see invocation)
But I want to support armv6. What should I do?
EDIT: I tried changing the target from iOS4.0 to iOS 4.2 and said the following:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/lipo:
/Users/airrider3/Library/Developer/Xcode/DerivedData/TRGame-fvkoniflczyexwhcnmjvozqbuozd/Build/Intermediates/ArchiveIntermediates/AppStore/IntermediateBuildFilesPath/TRGame.build/Release-iphoneos/iOSGame.build/Objects-normal/armv7/Kipos
and
/Users/airrider3/Library/Developer/Xcode/DerivedData/TRGame-fvkoniflczyexwhcnmjvozqbuozd/Build/Intermediates/ArchiveIntermediates/AppStore/IntermediateBuildFilesPath/TRGame.build/Release-iphoneos/iOSGame.build/Objects-normal/armv7/Kipos
have the same architectures (armv7) and can't be in the same fat
output file Command
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/lipo
failed with exit code 1
EDIT: I now managed to archive with just armv7 to iOS 4.0. Is it going to work?
You can't archive an file with IOS6, you need to downgrade to the latest official version to archive.
Edit:
Devices updated to iOS 6 beta can not be restored to earlier versions
of iOS. Registered development devices will be able to upgrade to
future beta releases and the final iOS 6 software.
https://developer.apple.com/devcenter/ios/index.action#
I figured it out. Instead of adding the 'armv6 armv7', I just needed to add 'armv6', as the code for 'armv7' was already written with that other default bizarre code.
That's why it was telling that two armv7 was being built.
Thanks everyone for the help, either way!

Resources