Open3
XCodeビルド&インストールしたiOSアプリが起動できなかった時の話
解決方法
AppleよりWorldwide Developer Relations
の証明書を取得しなおすことで解決。
開発者用の証明書が有効な状態になっていないことにより、アプリが起動できない状態となっていたらしい。
(XCode側で自動取得された証明書がなぜそんな状態になっていたかは不明。強いて言えば、XCode・macOSのバージョンが古かったことが影響してるのかもしれない)
参考
発生時の状況
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 Simulators
の Open 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、各バージョンを変えるなどしたが、関係なかったと思う。
本件とはまた別だが、
- Apple Developer Program非加入
- iOS 13.3.1
- Unity 2019系?
のような条件が揃うとアプリ起動時にクラッシュするといった話もある。
発生しているエラー自体が違うので、別原因と思われる。
iOSを15.1にあげた時に署名関連でエラーでた時の対処。
xcodeprojのBuild Settingsにて
Setting > OTHER_CODE_SIGN_FLAGS
に--generate-entitlement-der
を追記する。
iOS15から署名のフォーマットが変わったとのこと。
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);
}
}
}