質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.38%
Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

0回答

1733閲覧

UnityのiOSビルドをコマンドラインから行いたい

pftyuk

総合スコア52

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

1クリップ

投稿2020/03/22 17:32

編集2020/03/23 08:46

前提・実現したいこと

ゴールとしてはJenkinsでiOSビルドをするところまで行いたいのですが
そもそもコマンドラインからのiOSビルドが上手くいかずにお手上げ状態なのでご教示下さい。

ゴールとしてはこちらの手順を手元で構築したいので
ビルドスクリプトをお借りして、コマンドラインからビルドを行ったのですが
以下のようなエラーが発生してしまい、ビルドに失敗しているようでした。

失敗の原因が調べても解決に至らなかったので、ご教示頂けると幸いです。

発生している問題・エラーメッセージ

実行コマンド

/Applications/Unity/Hub/Editor/2019.2.15f1/Unity.app/Contents/MacOS/Unity -batchmode -quit -projectPath /Users/UserName/Desktop/ProjectName -executeMethod BatchBuild.Build -logfile -platform iOS -isRelease false

エラーメッセージ

2020-03-23 02:13:18.610 Unity[643:8821] Color LCD preferred device: Intel(R) Iris(TM) Plus Graphics 640 (low power) 2020-03-23 02:13:18.611 Unity[643:8821] Metal devices available: 1 2020-03-23 02:13:18.611 Unity[643:8821] 0: Intel(R) Iris(TM) Plus Graphics 640 (low power) 2020-03-23 02:13:18.614 Unity[643:8821] Using device Intel(R) Iris(TM) Plus Graphics 640 (low power) debugger-agent: Unable to listen on 30

該当のソースコード

BatchBuild

1#if UNITY_EDITOR 2using System.Collections; 3using System.Collections.Generic; 4using UnityEngine; 5using UnityEditor; 6 7public class BatchBuild 8{ 9 private static BuildTarget m_TargetPlatform; 10 private static bool m_IsRelease = false; 11 12 // ***** Android KeyStore Settings *****// 13 private static string keystorePath = "keyStoreの保存場所"; 14 private static string keystorePass = "keyStoreのPass"; 15 private static string keyaliasName = "keyAliasの名前"; 16 private static string keyaliasPass = "keyAliasのPass"; 17 // ***** End Android KeyStore Settings *****// 18 19 public static void Build() 20 { 21 GetCommandLineArgs(); 22 if (m_TargetPlatform == BuildTarget.iOS) 23 { 24 bool status = BuildiOS(m_IsRelease); 25 EditorApplication.Exit(status ? 0 : 1); 26 } 27 else 28 { 29 bool status = BuildAndroid(m_IsRelease); 30 EditorApplication.Exit(status ? 0 : 1); 31 } 32 } 33 34 public static bool BuildiOS(bool isRelease = false) 35 { 36 Debug.Log("[ScriptLog] Start Build iOS"); 37 38 // リリースビルドではない場合Profiler等に繋げるようにする 39 BuildOptions opt = BuildOptions.SymlinkLibraries; 40 if (isRelease == false) 41 { 42 opt |= BuildOptions.Development | BuildOptions.ConnectWithProfiler | BuildOptions.AllowDebugging; 43 } 44 45 string[] scenes = GetEnabledScenes(); 46 string errorMsg = BuildPipeline.BuildPlayer(scenes, "/Users/UserName/Desktop", m_TargetPlatform, opt).ToString(); 47 48 if (string.IsNullOrEmpty(errorMsg)) 49 { 50 Debug.Log("[ScriptLog] Success Build iOS"); 51 return true; 52 } 53 54 Debug.Log("[ScriptLog] Failed Build iOS"); 55 Debug.Log(System.Environment.NewLine + errorMsg + System.Environment.NewLine); 56 return false; 57 } 58 59 public static bool BuildAndroid(bool isRelease = false) 60 { 61 Debug.Log("[ScriptLog] Start Build Android"); 62 63 // リリースビルドではない場合Profiler等に繋げるようにする 64 BuildOptions opt = BuildOptions.None; 65 if (isRelease == false) 66 { 67 opt |= BuildOptions.Development | BuildOptions.ConnectWithProfiler | BuildOptions.AllowDebugging; 68 } 69 70 // KeyStoreの設定 71 SetAndroidKeyStoreSetting(); 72 73 string[] scenes = GetEnabledScenes(); 74 string errorMsg = BuildPipeline.BuildPlayer(scenes, "成果物保存場所(Assetsからの相対パス)", m_TargetPlatform, opt).ToString(); 75 76 if (string.IsNullOrEmpty(errorMsg)) 77 { 78 Debug.Log("[ScriptLog] Success Build Android"); 79 return true; 80 } 81 82 Debug.Log("[ScriptLog] Failed Build Android"); 83 Debug.Log(System.Environment.NewLine + errorMsg + System.Environment.NewLine); 84 return false; 85 } 86 87 /// <summary> 88 /// AndroidのKeyStoreの情報をPlayerSettingsに流す 89 /// </summary> 90 private static void SetAndroidKeyStoreSetting() 91 { 92 string keystoreName = System.IO.Directory.GetCurrentDirectory() + keystorePath; 93 // KeyStoreの場所とパスワードを設定 94 PlayerSettings.Android.keystoreName = keystoreName; 95 PlayerSettings.Android.keystorePass = keystorePass; 96 // KeyAliasの名前とパスワードを設定 97 PlayerSettings.Android.keyaliasName = keyaliasName; 98 PlayerSettings.Android.keyaliasPass = keyaliasPass; 99 } 100 101 102 /// <summary> 103 /// コマンドライン引数を解釈して変数に格納する 104 /// </summary> 105 private static void GetCommandLineArgs() 106 { 107 string[] args = System.Environment.GetCommandLineArgs(); 108 // ここで引数を判定 109 for (int i = 0, max = args.Length; i < max; ++i) 110 { 111 switch (args[i]) 112 { 113 case "-platform": 114 m_TargetPlatform = (BuildTarget)System.Enum.Parse(typeof(BuildTarget), args[i + 1]); 115 break; 116 case "-isRelease": 117 m_IsRelease = bool.Parse(args[i + 1]); 118 break; 119 default: 120 break; 121 } 122 } 123 } 124 125 /// <summary> 126 /// BuildSettingで有効になっているSceneを取得 127 /// </summary> 128 /// <returns>The enabled scenes.</returns> 129 private static string[] GetEnabledScenes() 130 { 131 EditorBuildSettingsScene[] scenes = EditorBuildSettings.scenes; 132 133 List<string> sceneList = new List<string>(); 134 135 for (int i = 0, max = scenes.Length; i < max; ++i) 136 { 137 if (scenes[i].enabled) 138 { 139 sceneList.Add(scenes[i].path); 140 } 141 } 142 143 return sceneList.ToArray(); 144 } 145} 146#endif

補足情報(FW/ツールのバージョンなど)

Unity 2019.2.15f1

Editorからのビルドは成功する状態です

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.38%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問