Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

iOS9, bitcode in enterprise app

Please confirm:

Bitcode is an intermediate representation of a compiled program. Apps you upload to iTunes Connect that contain bitcode will be compiled and linked on the App Store.

From Bitcode (iOS, watchOS).

It is App Store who compiles and links the apps, so how about enterprise app?

I like this iOS9 feature as user could download the required slices to device for updating app quickly with least file size. Bitcode is enabled by default in Xcode 7, but for enterprise app, we upload the app updates to our enterprise server and our client users download it from our server via links. No app store is in this process.

Is that OK for enterprise app with Bitcode enabled? If so, who will own the compile & link duty?

like image 294
Itachi Avatar asked Oct 10 '15 07:10

Itachi


1 Answers

It is absolutely fine if your app contains bitcode even if you do not distribute it over the AppStore, however the app becomes bigger - it contains slices with object code and bitcode for each CPU architecture (more details on this topic can be found here: Bitcode Demystified).

I'd recommend to disable bitcode since there is no AppStore phase in your distribution model and nobody can take care of it.

If you still want to achieve this goal (smaller app size), then you can emulate App Thinning on your own: build a few versions of your app - one for each CPU architecture, upload to your server and put some smart service in front of the server, which will check user's device (via User-Agent) and redirect to a correct binary.

I didn't try this option, but it should work, the only extra-thing you need - table/mapping between device version and CPU.

like image 158
AlexDenisov Avatar answered Sep 23 '22 08:09

AlexDenisov