Androidの開発をしていると、debug.keystoreをチーム内で共有したいケースが発生しがちだと思います。
単一プロジェクトしか関与していなかったり、関与するプロジェクトが完全に目が届く範囲であれば、同じdebug.keystoreを使いましょうで済む話なのですが、必ずしもそうとは限らないと思います。
複数のプロジェクトに関与していて、異なるdebug.keystoreを使い分けなくてはならない場合、手で切り替えているとどうしても切り替え忘れが発生したり、そもそも煩雑です。
またその辺りの手段は、Visual Studioに限らず、統合開発環境やエミュレータ側で、あまりサポートされていないように思えます。(気のせい?)
そんな分けで、debug.keystoreをプロジェクト単位で共有したい場合の方法を考えてみました。
ただ、あくまで我流なのでほかにもっと良い方法があるかもしれません。
もしもっと良い案がある方いらっしゃったらぜひ教えていただけると助かります。
前提条件
本エントリーでは、以下のような条件を想定しています。
- debug.keystoreはプロジェクト単位で使い分けたい
- 利用する際に手動で対応はしたくない
- 開発環境はXamarin for Visual Studio
- エミュレータはVisual Studio Emulator for Androidを想定していますが、ほかのエミュレータでも同じはずです
概要
方法は単純というか、読んだ人はアホらしくなって回れ右しちゃうかもしれませんが、Visual Studioのビルド イベントを使いますw
前準備としてAndroidプロジェクト内に共有のdebug.keystoreを配置します。
その上で、ビルドイベントのビルド前処理としてバッチファイルを実行します。
バッチファイルの中では、エミュレータの利用するdebug.keystoreをバックアップフォルダへコピーした後に、前述のAndroidプロジェクト内の共有debug.keystoreをエミュレータの利用するパスへコピーします。
具体的な手順は以下を参照してください。
詳細手順
Androidプロジェクト内に共有のdebug.keystoreを配置する
以下のように、Androidプロジェクトの下に、共有したいdebug.keystoreファイルを配置します。
上の例では、「Key」フォルダを作成してその中にファイルを保管しています。
なお、保管するdebug.keystoreは何でもよいので、すでにある所からとってきてコピーすればよいと思います。
一番簡単なのは、Visual Studio Emulator for Androidのdebug.keystoreの保管先である、以下のパスから取得してくることかと思います。
%ユーザフォルダ%\AppData\Local\Xamarin\Mono for Android
バッチファイルを作成する
以下の処理を実行するバッチファイルを作成します。
- バックアップフォルダをチェックし、フォルダがなければ作成する
- バックアップフォルダ内のdebug.keystoreをチェックし、ファイルがなければエミュレータのdebug.keystoreファイルをコピーして退避する
- Androidプロジェクト内の共有debug.keystoreファイルを、エミュレータのdebug.keystore保管フォルダへコピーする
具体的には以下のようなバッチになります。
SET KEY_DIR=%USERPROFILE%\AppData\Local\Xamarin\Mono for Android SET BACKUP_DIR=%KEY_DIR%\back IF NOT EXIST "%BACKUP_DIR%\" ( MKDIR "%BACKUP_DIR%" ) IF NOT EXIST "%BACKUP_DIR%\debug.keystore" ( COPY "%KEY_DIR%\debug.keystore" "%BACKUP_DIR%\debug.keystore" ) COPY debug.keystore "%KEY_DIR%\debug.keystore" /Y
今回は、上記バッチファイルを「replaceKey.cmd」ファイルとして、先ほどの共有debug.keystoreを保管したパスと同じ場所に保管することとします。
ビルドイベントを登録する
Androidプロジェクトを右クリックし、ビルドイベントのタブを開いてください。
上のように、ビルドイベントタブの、「ビルド前イベントのコマンドライン」に以下の処理を記載します。
- 共有debug.keystoreを保管したパスへカレントディレクトリを移動する
- 「replaceKey.cmd」を実行する
具体的には以下のコードになります。
cd $(ProjectDir)Key replaceKey.cmd
元に戻したいとき
以下のフォルダにコピーされているので、手動で戻してくださいw
%ユーザフォルダ%\AppData\Local\Xamarin\Mono for Android\back
以上です! 参考になればよいのですが。。。