Android StudioはVCS(Version Control System:バージョン管理システム)を使って、プロジェクトの変更履歴の管理が可能です。
Android Studioで利用可能なVCSはいくつかありますが、Gitを取り上げて、SSHを使ったリポジトリのクローン(コピー)とプル(履歴の取得)の方法を紹介します。
BitbucketよりGitHubの方がシンプルで使い易いかも…
※環境:Android Studio Narwhal 3 Feature Drop | 2025.1.3
Git version is 2.50.1
OpenSSH_for_Windows_9.5p2, LibreSSL 3.8.2
Windows 11 Pro 24H2
※前提:リモートリポジトリの構築済み
SSHによるアクセス
GitHubにおけるSSHを使ったアクセスは、次のような特徴があります。
・接続を許可したユーザーの所有する全リポジトリがアクセス対象になる ・リポジトリへ書き込みと読み出しを許可する 許可する権限の範囲を制限できない(例:読み出し専用) ・アクセスの為のユーザーを必要としない アクセスキー(SSHの公開鍵)の登録があればアクセス可能 ・ユーザー認証でID(ユーザ名)とパスワードを必要としない 自動化された処理に適している
特に、SSHによるアクセスは、全リポジトリへ読み書きが出来てしまいます。サインインユーザー以外の利用は、注意が必要です。
openSSHのインストール確認
Windows11はOpenSSHをオプション機能という形で提供します。
しかも、OpenSSHクライアントはWindowsのインストール時に実装(インストール)済みになっています
Windowsのターミナルを開き、次のコマンドの実行で、実装されたOpneSSHの存在を確認できます。
PowerShell 7.5.3 > ssh -V OpenSSH_for_Windows_9.5p2, LibreSSL 3.8.2
公開鍵・秘密鍵の作成
ユーザ認証で使用するユーザ鍵(ペア鍵:公開鍵・秘密鍵)を作成します。
Windowsのターミナルを開き、OpenSSHクライアントに含まれるssh-keygenコマンドを使って、次のように行います。
この例は、暗号化アルゴリズム ed25519 を選択しました。
PowerShell 7.5.3 > ssh-keygen -t ed25519 Generating public/private ed25519 key pair. Enter file in which to save the key (C:\Users\ユーザー名/.ssh/id_ed25519): [RET] Enter passphrase (empty for no passphrase): パスフレーズ Enter same passphrase again: パスフレーズ Your identification has been saved in C:\Users\ユーザー名/.ssh/id_ed25519 ... 秘密鍵 Your public key has been saved in C:\Users\ユーザー名/.ssh/id_ed25519.pub ... 公開鍵 The key fingerprint is: SHA256:K7******************************************** ユーザー名@ホスト名 The key's randomart image is: +--[ED25519 256]--+ | . | | . . | |. . o | |o+ = . . | |o * o S. o | |.+ E + o. o | |..o +..Oo . ... | |. = oBB+. ..+. | | .. +=OBo ...oo. | +----[SHA256]-----+
ペア鍵はデフォルトでホーム(C:\Users\ユーザー名)の.sshフォルダに「”id_”+アルゴリズム名」というファイル名で出力します。このフォルダとファイルがデフォルトで参照される鍵になります。
秘密鍵は他者へ知られないよう厳重に管理してください。.sshフォルダのアクセス許可の範囲(ファイルバーミッション)を制限するのが良いでしょう!
また、秘密鍵は他者へ漏洩した場合を考慮して、パスフレーズによる暗号化が施されます。
ですので、ユーザ認証を行う際に、パスフレーズの入力が求められることになります。
フォルダ:ユーザのホームの.sshフォルダ Windows ⇒ C:\Users\ユーザー名\.ssh Linux ⇒ ~/.ssh ファイル:"id_" + アルゴリズム名
デフォルト以外の鍵を参照したければ、.ssh/configファイルで明示的に指定します。
Host github.com IdentityFile ~/.ssh/キーファイル名
公開鍵の登録
ユーザ認証で使用する公開鍵をサーバーへ登録します。
登録はSettingsページの「SSH keys」で行います。
「Add new SSH Key」で公開鍵をKey欄へ張り付ければ良いです。
登録されたkeyは、「SSH keys」に一覧表示されます。
また、公開鍵の登録後、サインインユーザー宛にE-Mailで通知が届きます。
The following SSH key was added to your account: Android Studio UserX SHA256:K7tt**************************************2E If you believe this key was added in error, you can remove the key and disable access at the following location:公開鍵の登録は誰がおこなう? 公開鍵の登録は管理者に依頼します。これが正当な方法です。
個人の開発環境は、「管理者=ユーザー(開発者)」である事がほとんどです。結局のところ、ユーザ自身で行うことになります。
クローンの実施
リポジトリのクローンを行う方法は、次の2通りがあります。


「Clone」ボタンの押下でクローンが開始されます。
この後、ホスト認証とユーザー認証が行われます。
ホスト認証
クライアント(開発用のPC)がサーバ(リポジトリサーバ)へ始めてアクセスする時、ホスト認証でサーバーのFingerPrintの確認が求められます。
FingerPrintはGitHubの「GitHub の SSH キーフィンガープリント」に掲載されています。
「Yes」ボタンを押下で了承が成立します。
了承が成立すると、了承済みのFingerPrintがknown_hostsファイルに登録されます。次回以降は、このファイルを参照して認証が行われるようになります。ですので、FingerPrintの確認は求められません。
ユーザー認証
クライアント(開発用のPC)がサーバ(リポジトリサーバ)へアクセスする時、毎回、ユーザ認証で秘密鍵を複合するためのパスフレーズが求められます。
ユーザ鍵(ペア鍵:公開鍵・秘密鍵)を作成した時に設定したパスフレーズを入力します。
ここで、「Remember」へチェックを行えば、Android Studio内にパスフレーズが保存(KeePassにより管理)できます。次回以降は、Android Studioがパスフレーズの入力を肩代わりしてくれるので、入力は求められません。
※KeePassについては「KeePassでパスワードを管理」を参照
プルの実施
プルによりリモートリポジトリから最新の履歴が取得できます。
リポジトリのプルはGitメニューから行います。
「Pull」ボタンの押下でプルが開始されます。
リモートの定義
クローン後のAndroid Studioプロジェクトは、リモートリポジトリが定義されています。
> git config --local --list
core.repositoryformatversion=0
core.filemode=false
core.bare=false
core.logallrefupdates=true
core.symlinks=false
core.ignorecase=true
submodule.active=.
remote.origin.url=git@github.com:ユーザ名/SampleApp.git
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
branch.master.remote=origin
branch.master.merge=refs/heads/master
クローンを行った時に指定したURLが、そのまま指定されています。
関連記事: