We sometimes have troubles running our apps on a real device or creating the production ipa. Often related to issues with provisioning profiles and signing. Robovm error messages are very generic, which makes it hard to find the root cause. On this document, we provide some suggestions to resolve these kind of errors.
Create a simple Xcode project that uses your bundle id
Robovm warnings are often very generic; Xcode gives much more specific error messages.
Simple strategy is to create a simple test app in Xcode, change its bundle id to the one used by Robovm. Try to run it on the device, and resolve any errors. Make sure that Xcode has the same provisioning profiles and signing identities selected as configured in the Robovm project.
Exception shown in gradle console:
Caused by: org.robovm.libimobiledevice.LibIMobileDeviceException: ApplicationVerificationFailed Sometimes this is caused by old Provisioning profiles saved on the developer machine. Removing old profiles sometimes does help.
- shutdown Xcode
rm ~/Library/MobileDevice/Provisioning\ Profiles/*
- download all required provisioning profiles (either from Apple Member Center or via Xcode).
Verify that your device trusts your app
On the iOS device, Open Settings, navigate to General > Device Management, then select your Developer account and trust the apps listed there.
Wildcard development profile and custom entitlements
Wildcard development Provisioning Profiles cannot be used with custom entitlements (also called Application Services in Apple Member Center).
Citing Apple developer:
“Because an App ID specifies a unique configuration of entitlements, Wildcard App IDs are for use with code signing all apps that do not enable app-specific capabilities. Those capabilities are pictured as follows:”
So always create a custom Development Provisioning Profile when custom entitlements (application services) are used by an app.