Troubleshooting your iOS App Protection

Protection failed due to unsupported target platform

App Shield supports protection of xcarchives that contain only an ARM64 iOS target.

You can modify the architecture target in XCode as follows:

Jailbreak behavior not as expected

The default behavior for App Shield is that jailbreak is reported only. If preferred, this behavior can be modified at protection time so that jailbreak detection results in a hard exit. This updated behavior will take effect the next time the application is protected by App Shield.

Note that App Shield protection features may report a previously jailbroken device as still jailbroken even if the Jailbreak modifications have been uninstalled or removed from the phone. For non-jailbreak testing, use a device that has never been jailbroken.

Problems with signing and extracting the application after protection

The protected application is unsigned as any existing signature was removed from the archive during the protection process. The application needs to be re-signed with your valid identity and app entitlements before distribution.

Xcode uses the codesign command line tool to sign the application. To ensure valid signing, a script with the relevant codesign command(s) was auto-generated and packaged along with the archive. It is mandatory to use this signing script.

The script requires a valid sign identity to be passed in. Open the terminal window, locate sign_archive.sh script and type the following command.

NOTE It's important the script is running from the folder where the protected archive is located because the auto-generated script uses relative paths.

$ ./sign_archive.sh <identity>

<identity> is your code signing certificate in your keychain. The script can also display a list of identities (private key + certificate) when it's called without arguments. The following shows the script being called with a sample <identity>.

$ ./sign_archive.sh F10902278BC3BD7640DAAD8DB92294BC535AE825

The list of identities (private key + certificate) can also be obtained by typing the following command in the terminal window.

$ security find-identity -v -p codesigning

Making modifications to the application details after protection

Due to the security features applied by App Shield it is not possible to make any changes to the application after protection, for example, modifying the Build ID.

Application rejected or protection failed due to Xcode version not being supported

Update your development machine Xcode to a version supported by App Shield, re-build the application, then re-submit the new xcarchive to XTD for protection.

It is also important to ensure that all components (libraries, frameworks etc.) within the application are compiled with the same Xcode version as the main binary or an older one.

Application rejected due to LLVM instrumentation being enabled

App Shield requires that LLVM instrumentation is disabled in the xcarchive by setting the build mode to Release.

You can change this in Xcode under your app's building settings:

Protected application is rejected by Apple Test Flight or during App Store submission

Check that the unprotected app is not rejected by Test Flight.

Raise a support ticket and include the following information:

  • the full rejection message from Test Flight
  • the relevant Build ID
  • any other relevant information, e.g. last protected app version was accepted by Apple
Events not received by Monitoring Service during test

k that the test device has wireless connectivity and that the protected application has installed and launched correctly.

If events are still not received, then please raise a Support ticket and include the relevant Build ID.

Application crashes or exits after protection

Please check that:

If the above does not resolve the issue, then raise a Support ticket including:

  • The Build ID for the relevant protected app
  • Full details on when the crash happens, for example:
    • On app launch
    • On GUI interaction (provide details)
  • Details on any specific environmental conditions, for example:
    • Only crashes on certain device types or iOS versions
  • Any other information that might help Verimatrix reproduce the issue
Performance issues after protection

Check that the unprotected app performance is as expected under the same test conditions.

If only the protected app is having issues, then raise a Support ticket including:

  • Build ID for relevant protected app
  • Details on when the performance concern happens, e.g.
    • On app launch
    • On GUI interaction (provide details)
    • Other
  • Details on any specific environmental conditions, e.g.
    • Performance issues only on certain device types or iOS versions
  • Any other information that might help Verimatrix reproduce the issue