Reputation: 9650
I've just built my React Native app for the first time, and after generating an .ipa
and installing it on my device to test, I get an alert with title "MyApp - iOS" Needs To Be Updated
and body This app needs to be updated by the developer to work on this version of iOS
.
In my ReactNative project I've set iOS target to be 10.0, and the iOS version on the phone is 14.2, so I don't understand why it doesn't work. I've struggled to find any helpful resources from googling around.
Upvotes: 0
Views: 5435
Reputation: 68
I got solution and it's work for me. You can apply this and let me know if you have any problem.
https://stackoverflow.com/a/70739263/5746176
Upvotes: 0
Reputation: 564
The first reason, documented by Apple here, is that your IPA must use the new signature format. If the IPA has been built with MacOS 10.14 or higher, it should be good. To ensure your IPA have the correct signature, use following steps:
Rename MyApp.ipa to MyApp.zip and unzip (you'll get a Payload folder which contains MyApp.app)
In Terminal, run codesign -dv /path/to/MyApp.app
Look in the output the value next to CodeDirectory. If you see v=20500 or v=20400, you're good. If you see a value below 20400, you need to resign your app using following command: codesign -s "Your Codesign Identity" -f --preserve-metadata /path/to/MyApp.app (ensure you do this using MacOS >= 10.14, and re-run codesign -dv /path/to/MyApp.app to ensure you now get v=20400 or v=20500)
Try reinstalling this IPA, it should work. If it doesn't, read the second reason below.
An other possible reason, not documented by Apple, a bit more tricky, is that you might need to re-sign your app including the DER entitlements. To check if you need to do this, do this:
In Terminal, run codesign -dvvvvv /path/to/MyApp.app
Look in the output under Page size, you should see something like this:
-7=4ade7be00e0a7b6db853edc4843e7ece1eea646f6f13d1809f78fc50d8db461f //If this line doesn't exist or contains only 000..., you need to include DER entitlements -6=0000000000000000000000000000000000000000000000000000000000000000 -5=1dfa58bd8ac3c4fb42142c1c4d28c436128b3a7460186a44526194fb690112bc -4=0000000000000000000000000000000000000000000000000000000000000000 -3=ef08dbe5a7c355336e1fb571604b683ce1c54536cb59a6155a1d18387fd23f6e -2=5b730fa46ffd405fd88da9606d82eda9af7f460f6049047afc176163326f5a7f
As commented in above block, if -7 isn't existent or if it only contains 000..., then that's the reason why the IPA doesn't install properly. To fix this, follow next step
Run codesign -s "Signing Identity Name from Keychain" -f --preserve-metadata --generate-entitlement-der /path/to/MyApp.app to resign your app including DER entitlements. Re-run codesign -dvvvvv /path/to/MyApp.app to ensure the -7 value is now correct.
Upvotes: 3
Reputation: 9650
I had made a mistake in my "Excluded Architectures". I had set all Excluded Architectures to "arm64", when I should have only excluded arm64 for the simulator.
These are the updated build settings that work:
This is the code diff:
-EXCLUDED_ARCHS = arm64;+ "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = arm64;
Hopefully this is helpful for others.
Upvotes: 3