7

I have an app that uses a third party library. There is a bug in the 64 bit version of the library so I had to revert to the 32 bit version of the framework. I would like to test this release on a 5s but from XCode it will try to build in 64 bit and because of this 32 bit framework the build will fail. I need to release a version but since I'm unable to test on the 5s or 64 bit simulator I'm reluctant to do so. So it there any way to get the app on the iPhone or run it on the 64 bit simulator without having to build the 64 bit version?

The iPhone is provisioned and I've used it for testing the 64 bit so it is not an issue.

Thanks in advance

Jon Clayton
  • 93
  • 1
  • 2
  • 10

2 Answers2

5

In Build Settings, change Architectures to $(ARCHS_STANDARD_32_BIT).

Then choose iPhone Retina (4-inch 64-bit) for the simulator.

It will build a 32 bit version of your app but run it on the 64 bit simulator. Note that the simulator is running on OS X and OS X doesn't support 32 bit anymore, so we have always been running 32 bit apps on 64 bit hardware in the simulator. It works fine, as long as you don't need some types to be 64 bit (eg: CGFloat is accurate to significantly more decimal places when complied for 64 bit).

Abhi Beckert
  • 32,787
  • 12
  • 83
  • 110
  • I've been trying to get this to work in XCode 5.5.1 with no success. I'm trying to get my 32 bit app to run on the 5s or the 64 bit simulator but I still get the 64 bit linker errors. I've changed the Architectures to $(ARCHS_STANDARD_32_BIT) in both the Target and Project sections but it still try to use the 64 bit compiler. Any Ideas? – Jon Clayton Jul 18 '14 at 11:41
  • Have you changed the $(ARCHS_STANDARD) to $(ARCHS_STANDARD_32_BIT) or have you got both? as you will only need the $(ARCHS_STANDARD_32_BIT) for it to work. That's where i went wrong. – Fernando Aug 19 '14 at 12:24
0

I have met the similar situation but the opposite side.I use Fastlane to get app screen capture, Fastlane tool only can run on simulators,but I found every time:

Undefined symbol(s) for architecture i386

This is because there is a .a library only support x86_64,So I tried to solve the problem according to the above answer.I changed Architectures to $(ARCHS_STANDARD_64_BIT).

So I can run the project on the newer simulators with only 64 bit architecture!

ifeegoo
  • 7,054
  • 3
  • 33
  • 38