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:

Architectures

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.

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, please 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) is 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 the sign_archive.sh script and type the following command:

$ ./sign_archive.sh <identity>

where is your code signing certificate in your keychain.

NOTE The script must run from the folder where the protected archive is located because the auto-generated script uses relative paths.

The script can also display a list of identities (private key + certificate) when called without arguments. The following shows the script being called with a sample :

$ ./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 unsupported Xcode version

Update your development machine Xcode to a version supported by App Shield, re-build the application, then re-submit the new xcarchive to App Shield 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

Counterspy 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:

Instrument Program Flow

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

First, check that the unprotected app is not rejected by Test Flight.

If it is not, raise a support ticket and include the following information:

  • The full rejection message from Test Flight for the protected app
  • The relevant App Shield Build ID
  • Any other relevant information, for example, that the last protected app version was accepted by Apple

Events not received by Counterspy Monitoring Service during test

Check 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.

The application crashes or exits after protection

Please check the following:

  • The unprotected application functions correctly under the same test conditions
  • No manual modifications have been made to the protected application after protection
  • The correct signing and extraction process has been followed (follow the instructions in this Support page and/or the readme file included in the protected package)

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 it is, then raise a Support ticket including:

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