Open3

XCodeビルド&インストールしたiOSアプリが起動できなかった時の話

たももたもも

解決方法

AppleよりWorldwide Developer Relationsの証明書を取得しなおすことで解決。
https://www.apple.com/certificateauthority/

開発者用の証明書が有効な状態になっていないことにより、アプリが起動できない状態となっていたらしい。
(XCode側で自動取得された証明書がなぜそんな状態になっていたかは不明。強いて言えば、XCode・macOSのバージョンが古かったことが影響してるのかもしれない)

参考

https://ulog.sugiy.com/mac-keychain-certificate-trust/

発生時の状況

UnityのiOSビルド成果物をXCodeビルド&インストールする流れ。
ビルド・インストールは正常に行われるが、アプリ起動時に一瞬だけ灰色の画面が表示されすぐに落ちる。
Unityのスプラッシュ画面さえも表示されない。

エラー内容

Bootstrapping failed for <FBApplicationProcess: 0x11bbe9a90; application<バンドルID>:<invalid>> with error: <NSError: 0x282663d20; domain: RBSRequestErrorDomain; code: 5; reason: "Launch failed."> {
    NSUnderlyingError = <NSError: 0x282663b70; domain: NSPOSIXErrorDomain; code: 85>;
}

XCodeメニューバー > Window > Devices and SimulatorsOpen Console より確認。

環境

  • iPhone SE(第1世代) 13.1→15.1
  • XCode 10.3→11.3.1
  • Unity 2019.4.29f1→2018.4.36f1
  • Apple Developer Program非加入
  • macOS 10.14.5

当時、エラー原因がつかめずiOS、XCode、Unity、各バージョンを変えるなどしたが、関係なかったと思う。

たももたもも

iOSを15.1にあげた時に署名関連でエラーでた時の対処。

xcodeprojのBuild Settingsにて
Setting > OTHER_CODE_SIGN_FLAGS--generate-entitlement-derを追記する。

iOS15から署名のフォーマットが変わったとのこと。
https://stackoverflow.com/questions/68467306/the-code-signature-version-is-no-longer-supported
https://developer.apple.com/documentation/Xcode/using-the-latest-code-signature-format

Unityビルドで自動追記するコード。
(Unity 20194.29f1、xcode 11.3.1にて動作確認)

using System.IO;
using UnityEditor;
using UnityEditor.Callbacks;

public class BuildPostProcessor
{
  [PostProcessBuild(0)]
  public static void OnPostProcessBuild(BuildTarget target, string path)
  {
    if (target == BuildTarget.iOS)
    {
      var projectPath = path + "/Unity-iPhone.xcodeproj/project.pbxproj";

      string s = File.ReadAllText(projectPath);
      s = s.Replace(
          "OTHER_CPLUSPLUSFLAGS",
          "OTHER_CODE_SIGN_FLAGS = --generate-entitlement-der;\n\t\t\t\tOTHER_CPLUSPLUSFLAGS");

      File.Delete(projectPath);
      File.WriteAllText(projectPath, s);
    }
  }
}