Ok, so this guy had no problems building and submitting an App, targeting iOS 7+, using an Embedded framework.
He points out that an Apple Engineer nick-named 'SevenTenEleven' mentioned in the Apple Dev Forums that the following warning...
ld: warning: embedded dylibs/frameworks only run on iOS 8 or later
...is just a bug.
The warning is still present in Xcode 6.3 and it seems that an App store submission is the only way to know for myself, if this is actually a bug or not.
Has anyone found any documentation that suggests this is just a bug and that there is in fact, nothing to worry about ?
Building an App just to see if a framework like this can target iOS 7, and make it through the App Store submission process, is crazy. Unfortunately, my client just wants an SDK, so there is no App I can do a test run on at the moment.
Used a ticket to speak with Apple
"Hi Rob,
Thank you for contacting Apple Developer Technical Support (DTS). I am currently investigating your issue. To answer your question, I need to consult with some folks in iTunes Connect. Unfortunately this can take some time as they are very busy.
In the meantime, I will point out that it is only supported to use an embedded framework on iOS 8. The only question is whether you could use dlopen() to conditionally load the embedded framework on iOS 8, and not load the embedded framework on earlier versions of iOS.
I will let you know what I hear from iTunes Connect about this question.
Luke Rattei
DTS Engineer"
"Hi Rob,
Embedded frameworks are only supported on iOS 8 and above. Unfortunately you will not be able to use an embedded framework on iOS 7.
While it might be possible to run apps with embedded frameworks on iOS 7 during development, you will not be able to submit such apps to the App Store. You will see an error message that the MinimumOSVersion of your embedded framework must be at least 8.0.
Luke Rattei
DTS Engineer"
While it might be possible to run apps with embedded frameworks on iOS 7 during development, you will not be able to submit such apps to the App Store. You will see an error message that the MinimumOSVersion of your embedded framework must be at least 8.0.
I encountered this exact problem about a month ago. I was forced to target iOS 8.0 in my app and embedded frameworks projects.
And I just tried to submit the app again with the iOS 7 support, and this time it has been approved!
I'm crazy? To be honest I have trouble understanding the logic around this.
Alex.
Related
We have our native iOS app developed in Xcode and now software developer is saying that we should upgrade our code to Xcode 9 as we may face issue with the new release on the App Store if we continue using Xcode for development. I would like to know if this is a fact, since I am not from iOS development and I don't know if this is a fact.
Any help in this regarding or a pointer to documentation would be appreciated.
Appstore won't reject your app because compiled with version 8 but as your developer says, It will be better approach to compile the project with latest version of Xcode.
In addition, with iPhone X release, Apple probably look into support for iPhone X so If you send a new version without iPhone X support, It may be rejected and for iPhone X support, you need to use Xcode version 9 or later.
Apple Xcode Support:
You should use the latest version of Xcode available on the Mac App Store to submit your apps, or when available, the latest GM seed release from the Downloads page. For more information, read the App Distribution Guide.
Note: If your source codes are written fully with Objective-C then compile won't be problem because with Xcode 9 nothing changed on Obj-C side. However, If you have a swift code It may needed to be updated to Swift 4.
To contrast the other posters here: I'd say it depends. Right now, iTunes Connect accepts updates/uploads for apps built using Xcode 6 (six). There is no hard technical requirement to use Xcode 9 today, and there isn't going to be one in the forseeable future. 2019/2020, maybe, but by then we'll likely also have Xcode 11 or 12.
That said, there are many reasons to actually switch to the most recent Xcode release rather sooner than later, not the least of which is being able to target the current iOS version, iOS 11 and make your app work correctly on the new iPhone X.
Yes, your developer is absolutely right.
General Suggestion: Your project/app source code should be compatible with latest technological upgrades.
Why should you move your app development on Xcode 9?
Here are several useful stack over flow discussions (questions and answers), explaining, new changes with Xcode 9.
Xcode 9 Release Notes
iPhone-X interface support - Safe Area of Xcode 9
Swift 4 - Code migration from Swift 2.x to Swift 4
Face-Id Authentication (If you have used biometric authentication)
Facebook integration IOS 11 & FBSDKShareDialog not working on IOS11
Navigation Controller and Navigation Bars
Apple releases a new version of Xcode every year, while it also removes the functionality in iTunes Connect to upload builds from older Xcode versions. So, to be brief, your developer is right!
Source: App Store - Submissions
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
We are working as a team and my partner had made changes to support iOS 7 and Xcode 5.
Now the problem is I have installed Xcode 4.6 in my system. His code is not supported in my Xcode. So I am not able to run this project in my system. I don't want to move to Xcode 5.
Is there any other way that I can still run this project in Xcode 4.6 ?
Let me know if you need to know anything else.
Tell your friend using Xcode 5.x to change the Interface builder document -> Opens in to Xcode 4.6 of your storyboard, to any storyboard file on the project.
This will enable you to open the project in Xcode 4.6. However i wont recommend you to use Xcocde 4.6.x since apple want you to use Xcode 5.x, actually starting Feb 1 2014 Apple would reject apps that won't be submitted with Xcode 5.x and optimised for iOS 7. Here is a link to that announcement.
Another thing important to mention is that you won't be able to test the project on iPhone 5s or compile to arm64 (for better performance on supported devices).
According to Apple
Starting February 1, new apps and app updates submitted to the App
Store must be built with the latest version of Xcode 5 and must be
optimized for iOS 7. Learn more about preparing your apps by reviewing
the iOS Human Interface Guidelines.
Apple Announcement
So anyhow you have to change your development to Xcode5. Better start now to change you development environment to Xcode5.
Apple suggests developers to develop with the latest environment. Tats why apple announces the Betas to test our app early when a new OS comes.
I too faced a similar kind of issue. You need to create a new storyboard file with Xcode 4.6 and use that storyboard for further changes. There's no other way to resolve your issue.
Since Xcode 4.5, we are unable to build for armv6 and thus unable to support devices like iPhone 3G anymore.
Would it be possible to use, say, Xcode 4.3 to generate a properly signed armv6 binary and then use lipo to combine that binary and the Xcode-4.5-generated armv7 binary into a fat one?
How would I go about this? Does anyone know a good tutorial?
Would the resulting fat binary be allowed for submission to the App Store?
The code signature would no longer match after modifying a binary using lipo. So the bundle would need to be re-codesigned afterwards.
Apps built with Xcode 4.4 and even earlier will still run just fine on iOS 6 devices; and there are reports that Apple is still accepting apps built with the iOS 5.1 SDK.
Objective C will allow you to use some of the newer APIs not in the older linked frameworks via calling them thru the Objective C runtime by name. (Of course, the app should check for their availability on the current device first!)
You can even support the new iPhone 5 display from an earlier Xcode and pre-iOS-6 SDK by simply including a 568#2x tall Default image in the app bundle, and setting all your app's window and view sizes and resizing properties properly. UPDATE: Apple is no longer accepting apps built this way when submitted to the iTunes App store.
ADDED:
Another potential solution is to split your development into two similar apps. One for iOS 4.3 and up. And one for iOS 4.2.x and lower with not iOS 6 and iPhone 5 support. Two different apps in the app store. However it is unknown whether Apple will allow this.
It appears that someone else figured out how to do it, see this SO question.
I haven't tested it yet myself, though.
I am in a process of learning ios development. I am beginning to learn storyboards and i found out that its only IOS 5 compatible. I searched here and found some answers but i wanted to find out if it make sense at this point to use storyboards. How does application behave that requires 5.0 in the app store? Does it show up for people that have 4.3 and lower? When i look through new application i don't see any that says 5.0 required in the description. Does that mean most people do not use storyboards to develop apps yet?
Thanks in advance!
story board is available in SDK 4.2 with which you can build for iOS 5, you can certainly set your deployment target to 4.x and it will work like a charm..!!
Updated : as #FirozeLafeer told, I confirmed my knowledge that he is right - XCode displays a message that "storyboards are unavailable on iOS 4.3 or prior"
From Apple: Storyboards are supported in iOS 5 and later and are enabled by default for new projects. If your app must run on earlier versions of iOS, though, you cannot use storyboards and should continue to use nib files.
Source: https://developer.apple.com/library/ios/#documentation/iphone/conceptual/iphoneosprogrammingguide/AppDesignBasics/AppDesignBasics.html