1. tetr4lab

    Posted

    tetr4lab
Changes in title
+UnityでAndroidのKeystoreを自動でセーブ・ロードする
Changes in tags
Changes in body
Source | HTML | Preview
@@ -0,0 +1,47 @@
+# 前提
+- unity 2018.4.7f1
+- Android
+
+# できること
+- 一度、KeystoreとAliasのパスワードを設定してビルドすると、以降、エディター起動時に自動的に設定されるようになります。
+
+# やりかた
+- 以下のコードを、適当な`Assets/~/Editor/~`へ入れてください。
+
+```cs:SaveKeystore.cs
+using UnityEditor;
+using UnityEditor.Callbacks;
+
+public class SaveKeystore {
+
+ private static string keystorePrefsName => PlayerSettings.Android.keystoreName;
+ private static string keyaliasPrefsName => $"{PlayerSettings.Android.keystoreName}/{PlayerSettings.Android.keyaliasName}";
+
+ [InitializeOnLoadMethod]
+ private static void OnLoad () {
+ if (string.IsNullOrEmpty (PlayerSettings.Android.keystorePass) && !string.IsNullOrEmpty (PlayerSettings.Android.keystoreName)) {
+ PlayerSettings.Android.keystorePass = EditorPrefs.GetString (keystorePrefsName);
+ }
+ if (string.IsNullOrEmpty (PlayerSettings.Android.keyaliasPass)) {
+ PlayerSettings.Android.keyaliasPass = EditorPrefs.GetString (keyaliasPrefsName);
+ }
+ }
+
+ [PostProcessBuild]
+ private static void OnBuilded (BuildTarget target, string path) {
+ if (target == BuildTarget.Android) {
+ if (!string.IsNullOrEmpty (PlayerSettings.Android.keystoreName) && !string.IsNullOrEmpty (PlayerSettings.Android.keystorePass)) {
+ EditorPrefs.SetString (keystorePrefsName, PlayerSettings.Android.keystorePass);
+ }
+ if (!string.IsNullOrEmpty (PlayerSettings.Android.keyaliasName) && !string.IsNullOrEmpty (PlayerSettings.Android.keyaliasPass)) {
+ EditorPrefs.SetString (keyaliasPrefsName, PlayerSettings.Android.keyaliasPass);
+ }
+ }
+ }
+
+}
+```
+
+# 留意事項
+- KeystoreおよびAliasのパスワードが、**平文**でエディターの設定内([EditorPrefs](https://docs.unity3d.com/ja/current/ScriptReference/EditorPrefs.html))に保存されます。
+- Keystoreファイルの絶対パスに依存します。プロジェクトフォルダを移動するとオートロードできなくなります。