Android StudioはVCS(Version Control System:バージョン管理システム)を使って、プロジェクトの変更履歴の管理が可能です。
Android Studioで利用可能なVCSはいくつかありますが、Gitを取り上げて、リモートリポジトリの構築とアプリパスワードを使ったプッシュ(履歴の登録)の方法を紹介します。
※環境:Android Studio Electric Eel | 2022.1.1
※前提:ローカルリポジトリの構築済み
目次
Bitbucketとは
BitbucketはATLASSIANが提供するGitのホスティングサービスです。
このホスティングサービスを利用して、Gitのリモートリポジトリ(リポジトリサーバー)が構築できます。
利用制限付きの無料枠があるので、個人利用に最適です。本格的な開発を行いたければ、後に有料枠へ移行して、制限を解除することも可能です。
同様なホスティングサービスとして、GitHubが広く知られています。
BitbucketとGitHubの無料枠を比較すると、次のような違いがあります。利用目的に合わせて選択すると良いでしょう!
Bitbucket | GitHub | |
---|---|---|
ストレージ容量 | 1GB | 500MB |
コラボレーター数 (共同開発者数) | 5 | 無制限 |
公開範囲 | プライベート (パブリックは有料) | プライベート パブリック |
※値は無料枠で使える範囲、範囲外は有料 ※プライベート:ネット上に非公開、パブリック:ネット上に公開 ※タイトル欄のリンク:無料・有料プランの機能比較 |
ここでは、Bitbucketを利用します。
Bitbucketアカウントの作成
Bitbucketの利用するために、アカウントを作成してください。
Bitbucketストレージの構成
Bitbucketのアカウントが作成されると、アカウント毎にストレージが割り当てられます。
このストレージへリモートリポジトリを構築することになります。
リポジトリの階層
ストレージ内は ワークスペース と リポジトリ の2階層になっています。
ワークスペースはBitbucket内で重複しないIDが要求されます。IDの取得は「早い者勝ち」ですので、他のユーザーにより利用済みのIDは使えません。
リポジトリは任意な名前が付けられますが、参照するときは「.git」が付加されます。
そして、一つ以上のリポジトリを束ねたグループが、 プロジェクト です。
リポジトリのパス
リポジトリのパス(URL)は、先頭にBitbucketのホスト名(bitbucket.org)をつけて、次のように表します。
bitbucket.org/ワークスペースID/リポジトリ名.git 例:bitbucket.org/ws_a/repositorya.git ※リポジトリ名は小文字に変換される
アプリパスワードによるアクセス
Bitbucketにおけるアプリパスワードを使ったアクセスは、次のような特徴があります。
アプリパスワードとは
アプリパスワードはツール(ここではAndroid Studio)に与えるチケットです。
遊園地で遊ぶために入場チケットが必要なように、リモートリポジトリへアクセスするためにアプリパスワードが必要です。
ログインで使用するパスワードとは別なので注意してください。
このアプリパスワード(チケット)を持っているツールは、Bitbucketのアカウントの有無に関係なく、リポジトリへアクセスが可能になります。
ですので、アプリパスワードが漏洩しないように、厳重な管理が必要です。
アクセスの様子
アプリパスワードはBitbucketのアカウントが発行します。
ですので、アカウント(UserA)が所持するストレージ内のみで有効です。他者(UserB)が発行したアプリパスワードは無効であり、アクセスは許されません。※ただし、他者をワークスペース内に招待すればアクセス可
アプリパスワードは、「1:1(パスワード:ツール)」や「1:多」といった配布が出来ます。
どのように配布するかは、アプリパスワードに指定する権限(後述)と合わせて決めます。ここは「誰に何を見せて、何を許可するか!」といった、アプリ開発の方針に関わるところです。
アプリパスワードの取得
Bitbucketにログインし、そのアカウントのアプリパスワードを作成します。
アプリパスワードには権限(許可の範囲)が指定できます。このアプリパスワードを使ってリポジトリへアクセスするツールは、操作内容が権限で許された範囲に限られます。
Android Studioから扱える操作はGitのみなので、「リポジトリ」が許可されていれば十分です。権限は最小限に絞りましょう!
作成されたアプリパスワードは下図のようなウィンドウに表示されます。ウィンドウを閉じた後、同じパスワードの再取得ならびに再表示はできません。紛失すると再作成になってしまいます。注意してください。
アプリパスワードが作成されると、アカウント宛にメールで通知が届きます。
ローカルとリモートの関連付け
ローカルとリモートへリポジトリを作成しても、個別にリポジトリが存在するだけです。
両者の間に関連付けが必要です。つまり、ローカルからプッシュやプルを行ったら、関連付けされたリモートリポジトリが操作対象になるようにします。
関連付けの方法は2つあります。
一つは、リモート側へ先にリポジトリを作り、ローカル側へクローン(コピー)します。
もう一つは、ローカル側とリモート側に個別にリポジトリを作ります。この時、リモート側のリポジトリは空(何も登録がない)にします。
その後、ローカル側からリモート側へプッシュして、リポジトリを染め上げます。
今回は、後者の方法を使って関連付けを行うことにします。
理由は、Android Studioが作成する.gitignoreを有効利用するためです。
リモートリポジトリの作成
空のリポジトリ(リモート側)を作成します。
サンプルで作るリポジトリは図のような構成にしました。
作成はBitbucketにログイン(アカウント:UserA)して、Webページ上から行うことになります。
ワークスペース
ワークスペースの作成は、右上にある「Your profiles and settings」アイコンから行います。
「Create a workspace」ウィンドウが開きます。
ここで、ワークスペース名(サンプルはGitTestRoom)を入力すると自動でIDが入り、「Create」ボタンの押下で作成です。
Bitbucket内に重複したIDが存在していると、Createボタンの押下時に警告がでます。重複しないIDに変更してください。ワークスペース名はそのままで、IDのみの変更も可能です。
プロジェクト
プロジェクトの作成は、上部にある「プロジェクト」タブから行います。
「プロジェクトを作成」ウィンドウが開きます。
ワークスペースならびにプロジェクト名(サンプルはSamplePrj)を入力し、「プロジェクト作成」ボタンの押下で作成です。
リポジトリ
リポジトリの作成は、上部にある「リポジトリ」タブから行います。
「新規リポジトリの作成」ウィンドウが開きます。
ワークスペースとプロジェクトならびにリポジトリ名(サンプルはSampleApp)を入力し、「リポジトリの作成」ボタンの押下で作成です。
.gitignoreファイルは作りません。ここで.gitignoreを作ると、.gitignoreの履歴がリモートリポジトリへ登録されてしまいます。そして、ローカルリポジトリをプッシュしたときに、ローカルリポジトリ内の.gitignoreの履歴とコンフリクト(履歴の衝突)が発生してしまいます。
つまり、ここで作るリポジトリは「空」リポジトリです。
リポジトリの作成が終わると、次の案内が表示されます。
リポジトリのパスを確認しておきましょう!
プッシュ(Push)の実施
初回のプッシュを行うことにより、リモートリポジトリ(空)をローカルリポジトリで染め上げる処理を行います。
これにより、ローカルリポジトリで行われるプッシュの対象は、ここで染め上げたリモートリポジトリになります。
リモートの定義
Android Studioでローカルリポジトリ構築済みのプロジェクトを開きます。
リモートの定義は、Gitメニューの「Manage Repotes…」から行います。
「リモートの追加」ボタンを押すと、「Define Remote」ウィンドウが開きます。
ここで、リモートリポジトリのパス(URL)を入力して「OK」ボタンを押下すると、Gitサーバーへの接続が試みられて、アプリパスワードの入力が要求されます。
Bitbucketのログインパスワードではなく、アプリパスワードである点に注意してください。
正常にログインできれば、Android Studioへリモートリポジトリが定義されます。
これらは、Gitコマンドを操作した場合の”git remote”と同等な操作です。
> git remote add origin https://user_a@bitbucket.org/gittestroom/sampleapp.git > git config --local --list core.repositoryformatversion=0 core.filemode=false core.bare=false core.logallrefupdates=true core.symlinks=false core.ignorecase=true remote.origin.url=https://user_a@bitbucket.org/gittestroom/sampleapp.git remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
プッシュの実行
プッシュの実行は、Gitメニューの「Push…」から行います。
「Push Commits to プロジェクト名」ウィンドウが開きます。
「Push」ボタンの押下でプッシュが実施され、変更履歴がローカルからリモート側へ送信されます。
プッシュの結果
初回のプッシュ後に、Bitbucketへログインしてリポジトリを参照すれば、プッシュされた内容が確認できます。
関連記事: