I am currently using XCode 6.3. My project is using CocoaPods.
I have set Deployment Target to be iOS7.0 for both my project and Pods. Also, I have validated my archive and it was successful.
But, when I clicked "Submit to App Store...", it failed with the following errors.
"Invalid Info.plist value. The value for the key ‘MinimumOSVersion’ in bundle ActionSheetPicker_3_0.framework is invalid. The minimum value is 8.0"
"Invalid Segment Alignment. The app binary at ‘AHKActionSheet’ does not have proper segment alignment. Try rebuilding app with the latest Xcode version."
Please help!!! I really need my app to work for iOS 7+, because I am from Myanmar and lots of people here are still using iOS 7. Thanks a lot!!!
The error appears because you are using the ActionSheetPicker framework which apparently requires iOS 8.
So you should review your ActionSheetPicker framework. Is there a version which supports iOS 7? If not you should use another framework.
As Dung says ActionSheetPicker requires iOS8. You have several options:
Weakly link the ActionSheetPicker framework, and use an alternative for iOS7
Fix (or ask developer to fix) ActionSheetPicker so it works with iOS7 (according to his Readme it should work with iOS 5.1.1+). It is likely only the case of changing deployment target of the framework and rebuilding.
Use a different library for this purpose, or code this functionality yourself.
Always test on the target iOS versions before you release to apple!
Related
The title covers it. Latest Xcode and using Swift 3. I'm probably using some stuff from 10+, but no messages, and then crashes on an iOS 9.3.5 system. My understanding is that the compiler would flag any APIs that weren't appropriate for the deployment target. Is there a setting I missed? Am I wrong in believing the compiler will flag offending APIs?
Most other questions about deployment targets seem to be pre-Swift 2, and the later ones seem to say they should be flagged.
Thank you.
I think Xcode swift compiler will only flag when you build against the selected iOS version. Try downloading iOS Simulator 9.3 and then select it and build. Deployment target doesn't cause any warning unless the current iOS version selected in the dropdown during build time doesn't support an API.
When trying to validate my new app using watchkit with xcode 6.2 I get a strange error:
iTunes Store operation failed.
Unsupported architectures. Your executable contains unsupported architectures '[armv7k]'.
What does armv7k even mean?
All my build settings (for the app and all extensions) look like the ones in the following screenshot:
Could the red color of my embedded binaries have something to do with the problem? Everything works great on my device and on the simulators.
Thanks in advance!
Update:
xCode 6.2 and iOS 8.2 was released. Problem is still there.
It's more than likely not passing validation as you can't actually submit watch apps yet.
Per https://developer.apple.com/watchkit/:
Please Note: Apps built with Xcode 6.2 and iOS 8.2 SDK may be submitted to the App Store. However, WatchKit extensions are not accepted at this time.
I think this is architecture of new Apple Watch. It is not architecture of your main app so you can't see it in build settings of your app. For sure it is impossible to submit app from Xcode beta.
I have the same issue but from Xcode 6.2 (not beta). May be itunesconnect does't support watchkit extensions yet.
I had updated my xcode to the latest version.
I wrote my program in swift and I try to upload it.
I put my Minimum System Version to 7.0 and added the SDK for 7.0 and it compiled fine.. but when I try to upload I get ERROR ITMS-90362 The value for key 'MinimumOSVersion' in bundle is invalid. the minimum value is 8.0.
I had double checked and I saw everywhere that swift supports iOS7. How is this possible?
Another problem is that I get this weird error: ERROR ITMS-90209 Invalid segment alignment. The app binary does not have the proper segment alignment.
I have the latest xcode from the AppStore. I even opened it through there. I tried extracting, clean, Application Loader.
Nothing seems to work.
I'm out of ideas.
Please help
Are you using embedded frameworks in your project?
If so, it could lead to such an error, as even though they work on iOS7, they're not supported on iOS7 and validation fails with a similar message when submitting.
If you're using swift features for ios8 only (e.g. transitions) then your program will still compile when your deployment target is ios7. You need to test it in the simulator with an ios7 device.
You need to use the iOS 8 (or latest) SDK but set the "iOS Deployment Target" to iOS 7.
I had the same error you had when trying to submit my app via xCode 6.1.1
Turns out, you can't mix Swift and dynamic libraries. I had 2 dynamics libraries in my project, and removing them and re-adding them another way (using cocoapods) fix my submission issue.
With Xcode 6.x we can use CocoaTouch Framework template to build a framework library and Xcode will create the .framework for us when we build, which is awesome. In our framework we want to support iOS 7.1 and up, so for Deployment Target (in our framework) we specified 7.1. Now when we build we see a warning: "Embedded dylibs/frameworks only run on iOS 8 or later". I've since read a number of blog posts on the subject that as far as running it on iOS 7.1 this warning can be ignored because it will run fine (still need to test to make sure). What concerns me is that I read a post on Stack Overflow which says an app may be rejected by Apple in the App Store (see: Xcode 6 and Embedded Frameworks only supported in iOS8)
Does it only apply when in Xcode the app links to it in General > Embedded Libraries?
The way we want our customers to link to our framework is:
Via CocoaPods
By referencing .framework in Build Phase > Link Binary With Libraries
I need to understand under what conditions App Store will reject an app which uses our CocoaTouch framework and supports 7.x iOS.
The app wont be rejected if you'll change the type of your framework to Static. See my answer here.
I believe that as long as the app deals with the framework correctly there shouldn't be any issues. Mixing with cocoapods could be tricky and honestly I don't know the best way to tackle it.
But from what I understand, if an app supports iOS 7.X -> 8.X and uses an embedded cocoa touch framework, as long as the compatibility checks are there to ensure the app doesn't crash in 7.X, there shouldn't be any reason for the app to be rejected.
We tried running the latest code on the following configurations:
iOS 8+ — iPhone 5s
iOS 7.1.2 — iPhone 4
iOS 6.1.3 — iPad 4
The App is working fine on all the three devices but the warning is present in the Xcode while compiling .
"embedded dylibs/frameworks only run on iOS 8 or later”
Also I tried to Archive the App in order to submit it to the app store it went on fine.
Also, found out a link where in an apple developer stated this to be a bug:
https://devforums.apple.com/message/999579#999579
I just upgraded from Xcode 6 Beta 2 to Xcode Beta 3 and am now getting the following warning when building my project:
ld: warning: relocatable dylibs (e.g. embedded frameworks) are only supported on iOS 8.0 and later (#rpath/libswift_stdlib_core.dylib)
It is a warning but seems to mean my current setup will not work on iOS 7.1, which is my deployment target. How can I track down which frameworks are embedded, and how can I fix this for iOS < 8.0?
This appears to be a bug of Beta 3. As pointed out by Apple Engineer on this post.
I have also been living with this warning when running apps on iOS 7.1 device.
You see and add them on the project page when you select the target: tab General->Embedded Binaries (and they then appear in Build Phases->Embed Frameworks).
Embedded frameworks for OSX were available in Xcode 5, but not for iOS.
WWDC session regarding new features in Xcode 6 specifically promised dynamic frameworks for iOS 8 (someone please add citation when developer center comes back online). So far, with all Xcode 6 betas, I have had no problems compiling and debugging an app with frameworks on iOS 7.
But since this wasn't promised, frameworks for iOS7 is something you cannot depend on (e.g. this may stop working in later betas; an app with embedded framework for iOS 7 may be rejected, etc.). That may explain why they added an explicit warning.
There's not much you can do if this feature turns out to be indeed unsupported, other than remove the frameworks from the target and use static libraries as we did with Xcode 5. Or go the iOS8-only route.
After using XCode 6.1.1 I am able to put the code on iOS 8+ iOS7.1.2 and iOS 6.1.3 Although the warning is still there but the app works absolutely fine on all the 3 OSs
======================
Lucky guy... My project keeps failing to compile after I referenced the PushKit framework.
The project is a new project created by Xcode with only 3 new functions for testing Push Notification.
The workaround is to put the PushKit framework as "embedded", but this is not a good solution since my working Xcode project will be generated from Unity3d. Making the changes manually will break the auto build process.
I had this error after adding a C++ framework (DeepBelief) to a project. Adding an empty .cpp file to the project fixed it.
I'm using Beta4, and found the answer on the DeepBelief github site:
XCode may be skipping the standard C++ library, and that's needed by
the DeepBelief.framework code. One workaround I've found is to include
an empty .mm or .cpp file in the project to trick XCode into treating
it as a C++
project.
Read this github post from ReactiveCocoa
The bug is still present in XCode6 GM and so XCode6 final release:
Well, I get the exact same issue in xcode6GM no matter whether I
create framework for swift OR objc :-[[[[[[[[[[[[[[[
According to Apple Extension Programming Guide:
You can make a containing app available to users running iOS 7 or earlier, but then must take precautions to safely link embedded frameworks when running in iOS 8 or later.
talking about app extensions, but if you read it, you can understand that this applies to embedded frameworks in general.
this is happening because one of your embedded binaries's deployment target is lower than your applications target. lower your embeded binaries's building target and be fine.
this was the error cause in xcode 6.1.1
i was using xcglogger with deployment target ios 8.0, and my application's deployment target 7.0. set the xcglogger's deployment target ios 7.0 and problem solved.
After using XCode 6.1.1 I am able to put the code on iOS 8+ iOS7.1.2 and iOS 6.1.3
Although the warning is still there but the app works absolutely fine on all the 3 OSs
Yes not able to submit the app for review.
Had to do by changing the modern frameworks to Static libs.