🙆♀️
AndroidStudio テンプレート機能のチーム共有方法&スクリプト化
結論
- AndroidStudioのデフォルト機能にコードテンプレート機能が存在する
- それをチーム共有できるようにした
- 更にそれをスクリプトにして自動化した
やったこと
AndroidStudioのデフォルト機能でコードテンプレート機能というものがあります
しかしこれをチームで共有する方法がデフォルト機能では存在せず、
取り回しが悪かったのでこれを改善してみました。
手動更新方法
- プロジェクトルート配下に
androidstudio-template/fileTemplates
フォルダを作成し、この配下にテンプレートファイルを作成する - こんな感じ
ComposeNavigation.kt
@Serializable
internal object ${UpperRouteNAME}Route
internal fun NavController.navigateTo${UpperRouteNAME}(
routeData: ${UpperRouteNAME}Route,
navOptions: NavOptionsBuilder.() -> Unit = {},
) {
navigate(route = routeData) {
launchSingleTop = true
navOptions()
}
}
internal fun NavGraphBuilder.${LowerRouteNAME}Navigation(
nextRouteAction: () -> Unit,
onBackAction: () -> Unit,
) {
composable<${UpperRouteNAME}Route> {
}
}
private fun NavBackStackEntry.getSafeArgs(): ${UpperRouteNAME}Route {
return this.toRoute<${UpperRouteNAME}Route>()
}
-
open "$HOME/Library/Application Support/Google"
を叩いてGoogleフォルダを開く -
AndroidStudio0000.0
の形式のフォルダがあるので自分の使っているAndroidStudioのバージョンに一致したフォルダを開く(2024.2.1のものであればAndroidStudio2024.2
という感じ) - その中に
fileTemplates
というフォルダが存在する場合、androidstudio-template/fileTemplates
の中身をコピー - その中に
fileTemplates
というフォルダが存在しない場合、androidstudio-template/fileTemplates
をAndroidStudio0000.0
の中にコピー - AndroidStudioをリスタートすることで設定が反映されます
しかし手動で更新するのもめんどうだなと思ってこれをスクリプト化してみました。
スクリプトコード
#!/bin/bash
# -----------------------------------------------
# Android Studio テンプレート自動更新スクリプト
#
# このスクリプトは以下の処理を行います:
#
# 1. /Applications/Android Studio.app からインストールされている
# Android Studio のバージョンを自動で取得
#
# 2. $HOME/Library/Application Support/Google/AndroidStudio<version>/fileTemplates
# を検出・作成(存在しない場合は作成)
#
# 3. androidstudio-template/fileTemplates にあるテンプレートファイルを
# 1 つずつコピー
# ・既存の同名ファイルは上書き
# ・それ以外のテンプレートは残す(共存)
#
# 4. Android Studio を終了(再起動は手動)
# -----------------------------------------------
set -e
# Android Studio のバージョンを取得
APP_PATH="/Applications/Android Studio.app"
INFO_PLIST="$APP_PATH/Contents/Info.plist"
VERSION=$(defaults read "$INFO_PLIST" CFBundleShortVersionString | awk -F. '{print $1 "." $2}')
if [[ -z "$VERSION" ]]; then
echo "Android Studio のバージョンを取得できませんでした。"
exit 1
fi
# パス設定
TARGET_DIR="$HOME/Library/Application Support/Google/AndroidStudio$VERSION"
TEMPLATE_SRC="androidstudio-template/fileTemplates"
TEMPLATE_DEST="$TARGET_DIR/fileTemplates"
# テンプレートフォルダ作成
mkdir -p "$TEMPLATE_DEST"
echo "テンプレートを $TEMPLATE_DEST にコピー中..."
# テンプレートを1つずつ処理(同名は上書き、他は残す)
for src_file in "$TEMPLATE_SRC"/*; do
filename=$(basename "$src_file")
dest_file="$TEMPLATE_DEST/$filename"
if [ -f "$dest_file" ]; then
echo "上書き: $filename"
else
echo "新規追加: $filename"
fi
cp "$src_file" "$dest_file"
done
# Android Studio を優しく終了(保存プロンプトが出る可能性あり)
echo ""
echo "Android Studio を終了します(保存ダイアログが出る場合があります)..."
osascript -e 'tell application "Android Studio" to quit'
sleep 2
echo "テンプレートが反映されました!Android Studio を手動で起動してください。"
まとめ
FlutterだとMakefileなどでスクリプト運用してる認識でしたが
Androidネイティブだとあんまり聞いたことがなかったので今回まとめてみました。
これをベースに運用することができれば便利かなーと思いますので
よければ活用してみてください👍
参考記事
Discussion