Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Are iOS 8 apps with embedded dylibs allowed on the App Store?

Does "iOS 8 now supports dynamic frameworks" mean that this is allowed for App Store submissions?

It seems that previously developers where able to use dylibs for in-house apps but using them in something submitted to the App Store would get you rejected. Is this still the case or has this change in iOS 8 made this ok?

For example, if I wrote an application using OpenCV, would it now be possible to build against and ship an OpenCV dylib (assuming I built OpenCV as a dylib) rather than statically linking?

I'm interested as we have an existing Qt-based framework that itself has several shared libraries which we currently build for Linux, OS X, Windows and Android. For iOS it seems we'd need to change this to build a single app with all our components and Qt statically linked in. If iOS apps and the App Store are starting to support (embedded) dynamic libs, then our iOS builds could ship all the components as dynamic libraries as we do on all other platforms.

Related:

  • Consequences of "Embedded dylibs/frameworks only run on iOS 8 or later" warning
  • Does Apple allow Qt on iOS as dynamic library?
  • http://www.wenda.io/questions/333265/are-private-frameworks-supported-on-ios.html
like image 504
MattAU Avatar asked Jan 06 '15 23:01

MattAU


1 Answers

It seems that there is still the limit that only statically linked ios applications are allowed on App store. You can read in the App Store Review Guidelines :

2.7 Apps that download code in any way or form will be rejected

2.8 Apps that install or launch other executable code will be rejected

That's not a technical limitation but a legal one. It's banned because of the security reasons since a dynamic library can be loaded and unloaded at runtime you could download additional executable code and load it (like a plug-in). So Apple strictly controls dynamic linking which is a security issue for apparently secure operating systems like ios.

After all you need to have a commercial license to deploy Qt on App store. You can buy Indie Mobile license and skip the challenges created by third party application stores. That means you can distribute your application via whatever third party application store you wish.

like image 121
Nejat Avatar answered Sep 23 '22 21:09

Nejat