Search Unity

  1. Megacity Metro Demo now available. Download now.
    Dismiss Notice
  2. Unity support for visionOS is now available. Learn more in our blog post.
    Dismiss Notice

iOS 15 killed my app

Discussion in 'iOS and tvOS' started by PAL9000, Sep 24, 2021.

  1. PAL9000

    PAL9000

    Joined:
    Aug 11, 2017
    Posts:
    17
    We are unable to install our application onto any device which has been upgraded to iOS 15. The app compiles. The app starts to install, but just prior to finishing installation this pop up appears. Not clear how to diagnose. Searched the net and can’t find anything to help. Thoughts? 393F5029-2243-477F-98BC-2AE47D552F63.png
     
  2. PAL9000

    PAL9000

    Joined:
    Aug 11, 2017
    Posts:
    17
    We suspect the solution is to upgrade to Xcode 13.x

    Not sure when this version will be offered on Unity Cloud Build
     
  3. PAL9000

    PAL9000

    Joined:
    Aug 11, 2017
    Posts:
    17
    We have confirmed that compiling under Xcode 13.x resolve the installation issue.

    Unfortunately Xcode 13.x is not available under Unity Cloud Build. This service is lagging far behind the curve and should get cracking. With the majority of all I-devices moving to iOS 15.x this limitation severely diminishes the value of this service and forces us to adopt a new build pipeline. Sad.
     
  4. Wim-Wouters

    Wim-Wouters

    Joined:
    Sep 26, 2012
    Posts:
    36
    Oooh damn... client just mailed me with this problem. I use unity cloud for all my iOS builds :(
     
  5. PAL9000

    PAL9000

    Joined:
    Aug 11, 2017
    Posts:
    17
    Unity support suggested a post processing script to address this but it hasn’t worked for us.


    Code (CSharp):
    1. CURRENT_DIR=$(pwd)
    2. IPA_FILE=$(find $CURRENT_DIR -type f \( -iname \*.ipa \) -print -quit)
    3. IPA_FOLDER=$(dirname "$IPA_FILE")
    4.  
    5. unzip "$IPA_FILE" -d "$IPA_FOLDER"
    6.  
    7. #change the certificate ename to yours. it's usually similar to this: "Apple Distribution: COMPANY NAME (TEAM_ID)"
    8. CERTIFICATE_NAME="YOUR CERTIFICATE NAME"
    9. PAYLOAD_FOLDER="$IPA_FOLDER/Payload"
    10. APP_NAME=$(ls "$PAYLOAD_FOLDER")
    11. APP_PATH="$PAYLOAD_FOLDER/$APP_NAME"
    12.  
    13. codesign -s "$CERTIFICATE_NAME" -f --preserve-metadata --generate-entitlement-der $APP_PATH
    14.  
    15. rm $IPA_FILE
    16.  
    17. cd "$IPA_FOLDER"
    18.  
    19. zip -r $IPA_FILE "Payload"
     
  6. Cec

    Cec

    Joined:
    Apr 7, 2014
    Posts:
    92
    Same issue for me.
    Too sad Unity Cloud build always lags behind. It's not as if we paid for... :mad:
     
  7. teo_sk

    teo_sk

    Joined:
    Sep 13, 2015
    Posts:
    8
    We're shipping an app for a client and the same stuff happened while sending them a test version, they've already upgraded to iOS15 and now can't install the app. Let's hope Unity Cloud Build adds this as soon as possible before we need to ship the app to the stores o_O
     
  8. boomsaunders

    boomsaunders

    Joined:
    May 26, 2021
    Posts:
    1

    After getting the same piece of code from support we were able to get the code working, here is how.

    First your code is not correct as this is a shell script and needs the shebang at the top. (Corrected code below)
    We also use multiple Developer Certs and IDs and deployment credentials so we made the CERTIFICATE_NAME variable an environment variable.

    THIS IS SHELL CODE NOT csharp THERE IS NO SHELL OPTION.
    Code (CSharp):
    1. #!/bin/bash
    2.  
    3. CURRENT_DIR=$(pwd)
    4. IPA_FILE=$(find $CURRENT_DIR -type f \( -iname \*.ipa \) -print -quit)
    5. IPA_FOLDER=$(dirname "$IPA_FILE")
    6.  
    7. unzip "$IPA_FILE" -d "$IPA_FOLDER"
    8.  
    9. #change the certificate ename to yours. it's usually similar to this: "Apple Distribution: COMPANY NAME (TEAM_ID)"
    10.  
    11. # create an environment variable with CERTIFICATE_NAME as the key so that you can dynamically change your build credentials.
    12.  
    13. # CERTIFICATE_NAME="Apple Development: FirstName LastName (CertID)"
    14.  
    15. PAYLOAD_FOLDER="$IPA_FOLDER/Payload"
    16. APP_NAME=$(ls "$PAYLOAD_FOLDER")
    17. APP_PATH="$PAYLOAD_FOLDER/$APP_NAME"
    18.  
    19. codesign -s "$CERTIFICATE_NAME" -f --preserve-metadata --generate-entitlement-der $APP_PATH
    20.  
    21. rm $IPA_FILE
    22.  
    23. cd "$IPA_FOLDER"
    24.  
    25. zip -r $IPA_FILE "Payload"
    26.  
    We placed the shell script in the Assets folder.

    Here is the config we're using successfully.

    DevOps>Config>Advanced Options:
    Post-Build Script Path: Assets/PostBuildResign.sh
    Post-Build Script Path Fail: Yes/On

    Screen Shot 2021-09-29 at 5.58.21 PM.png


    DevOps>Config>Environment Variables:
    CERTIFICATE_NAME: Apple Development: Developer Name (Cert ID)
    You can find your Certificate name in Credentials. Ours looked like this. you only need the part in red.
    com.domainname.app.sand (Apple Development: FirstName LastName (Cert ID))
    you can also get this information out of the full log around line 48 it will be highlighted in back.

    image.png Screen Shot 2021-09-29 at 6.05.50 PM.png
     

    Attached Files:

  9. Shawn_Flanagan

    Shawn_Flanagan

    Joined:
    Jan 28, 2014
    Posts:
    13
    As of 21 October 21, this post-build shell script is still the only way to get Unity Cloud Build to successfully create builds that work with iOS 15. Still waiting on Xcode 12.5 (and above) to be added by Unity to UCB. There is a separate thread from @rajivrao at Unity where status updates are being posted. https://forum.unity.com/threads/update-on-xcode-12-5-and-13-0-timing.1165295/
     
    teo_sk and Favo-Yang like this.