Performance alert when deploying to iOS 10.1

Hi all,

I have an annoying alert whenever an iOS application launches starting with version 10.1. It complains that this app may make the phone slow. A screen shot is below. From what I read, this means that the app is 32-bit and iOS now wants only 64-bit apps. Unless I missed something, I have read that recent versions of Cordova, and so I assume Ionic, should build 64-bit apps. But I can’t find anything like a build flag to ensure it. Apparently running ionic build ios is not enough. Can someone please tell me what I am doing wrong? Sorry if this is a simple question. I’m rather new to Ionic.

Thanks!

image

3 Likes

I am having a similar issue. with the emulator, but I changed an architecture setting in the ‘build settings’ section in xcode and when I deploy to an actual device (at least through testflight) I do not see this error.

Deploying with Xcode seems to solve it. Apparently the Ionic build scripts force 32 bit builds somewhere.

2 Likes

It seems I was able to do a 64-bit build by explicitly specifying the cordova-ios version to use.

First I tried to add <engine name="ios" spec="~4.3.0"/> to the config.xml but that didn’t seem to work.
Second I added it to the package.json:

"cordovaPlatforms": [
  {
    "platform": "ios",
    "version": "4.3.0",
    "locator": "ios"
  }
],

This seemed to do the trick and force ionic to build with both. But I can’t say for sure if only the package.json is enough or if you need to specify both (or if the commands cordova platform update ios and ionic platform update ios work as well)

To check what’s in your build you can try (at least on osx):

unzip YOUR_BUILD.ipa -d ./tmp
file ./tmp/YOUR_APP.app/YOUR_APP

This should list a bunch of stuff hopefully like this:

tmp/Payload/YOUR_APP.app/YOUR_APP: Mach-O universal binary with 2 architectures: [arm_v7: Mach-O executable arm_v7] [arm64]
tmp/Payload/YOUR_APP.app/YOUR_APP (for architecture armv7):	
tmp/Payload/YOUR_APP.app/YOUR_APP (for architecture arm64):	Mach-O 64-bit executable arm64

on the 32 bit only build you’ll get just Mach-O executable arm_v7 if you see both you should be good.

1 Like

I think this works but I’m not totally sure. I’m using “ionic package” to build on cloud.
I uninstalled my app, compiled again on cloud and installed new IPA on device and no alert was thrown by iOS, BUT when looking at the IPA I don’t find three versions of Payload/YOUR_APP.app/YOUR_APP so I wonder if this solution really compiled on 64 bits or my iPhone just remembered my app’s name and decided not to show again that message when I re-installed my app.