コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【Unity】Play Asset Delivery のビルドで「Signing bundle...」が終わらない場合

概要

// Only sign the .aab if a custom keystore is configured.
if (_jarSigner.UseCustomKeystore)
{
    DisplayProgress("Signing bundle", 0.9f);
    var signingErrorMessage = _jarSigner.Sign(aabFilePath);
    if (signingErrorMessage != null)
    {
        DisplayBuildError("Signing", signingErrorMessage);
        return false;
    }
}
else
{
    Debug.LogFormat("Skipped signing since a Custom Keystore isn't configured in Android Player Settings");
}

AppBundleBuilder.cs 274 行目で表示される「Signing bundle...」から
ビルドが進行しない現象に遭遇した

var promptToPasswordDictionary = new Dictionary<string, string>
{
    {"Enter Passphrase for keystore:", _keystorePass},
    // Example keyalias password prompt: "Enter key password for myalias:"
    {"Enter key password for .+:", _keyaliasPass},
};

JarSigner.cs を確認してみたところ、jarsigner.exe 実行時に
パスワードの入力を求められたら自動でパスワードを入力するようになっていたが

日本語環境では「Enter Passphrase for keystore:」ではなく
「キーストアのパスワードを入力してください:」と表示されるため、
パスワードが入力されず、ビルドが進行しない状態だった

var promptToPasswordDictionary = new Dictionary<string, string>
{
    {"Enter Passphrase for keystore:", _keystorePass},
    // Example keyalias password prompt: "Enter key password for myalias:"
    {"Enter key password for .+:", _keyaliasPass},
    {".*", _keystorePass}, // ★
};

そのため、何かしら入力を求められたらパスワードを入力するルールを追加して
ビルドが進行するように修正した