cloudappdata_program の履歴(No.5)
- 履歴一覧
- 差分 を表示
- 現在との差分 を表示
- ソース を表示
- cloudappdata_program へ行く。
- 1 (2013-06-12 (水) 17:56:57)
- 2 (2013-06-12 (水) 20:47:08)
- 3 (2013-06-12 (水) 21:20:37)
- 4 (2013-06-13 (木) 05:08:44)
- 5 (2013-06-13 (木) 17:35:12)
cloudappdata_program : cloudappdataについて†
Google Driveにはユーザーデータだけでなく、アプリケーション個別のデータを保存する機能があります。この機能でAndroid端末からクラウドデータセーブを行う実験をします。
配布物(ソースコードとバイナリ)と、使用方法については、「Google Driveでクラウドセーブ」をご覧ください。
概要†
このプログラムで使用しているGoogle Drive App Data機能を動作させるには、以下の作業が必要です。
- Google Playストアへのアプリの登録。テストユーザーのみの使用でも「非公開での登録」が必要で、一般ユーザーも含めた使用には「公開登録」が必要となります。この手順については、この記事では割愛します。
- Google Playゲームサービスの使用登録。Google Drive APIを使用するための認証機能にはいくつかの方法がありますが、筆者はこの機能をゲーム制作のために使用することを想定しているため、Google Playゲームサービスでの認証機能を利用することにしました。*1
- Google Drive SDKとAPIの使用登録。当然必要です。
この後は、cloudappdataをあなたのアプリとして再ビルドして使用するまでの手順を示します。
アプリ識別子の変更†
当方が配布しているcloudappdataのソースは、そのままビルドすると「net.gorry.com.example.cloudappdata」という識別子のアプリとして完成します。この識別子は当方がすでに公開アプリとして使用しているため、あなたのアプリとして登録することはできません。
そのため、cloudappdataをあなたのアプリとするには、まず識別子を変更する必要があります。以後、あなたのアプリのための識別子を「org.hoge.com.example.cloudappdata」にするものとして解説を行います。
- cloudappdataソースをEclipseへ読み込み、プロジェクトツリーからAndroidManifest.xmlを開きます。
- 「package="net.gorry.com.example.cloudappdata"」の部分を「package="org.hoge.com.example.cloudappdata"」に変更して保存します。
- MainActivity.javaにエラーが多数表示されます。一番最初のエラー行である「import net.gorry.com.example.cloudappdata.R;」を「import org.hoge.com.example.cloudappdata.R;」に変更すると、エラーは全て消失します。
- 念のため、ツリー先頭を選んでメインメニューから[File]-[Refresh]でソースを再読み込みし、[Project]-[Clean]でクリーンビルドします。
以上で、ビルドしたアプリは「org.hoge.com.example.cloudappdata」となり、新しいアプリとしてGoogle Playストアへ登録することができるようになります。*2
Google Playストアのアプリ登録†
アプリを作成しただけでは、Google Drive App Data機能は使用できるようになりません。まず、ビルドしたアプリをGoogle Playストアへ登録する必要があります。登録の手順についてはここでは割愛します。
ストアへアプリをアップロードしたあと、あなたがテストを行うだけなら、そのアプリを「公開」する必要はありません。「下書き」のままにしておいて結構です。
Google Playゲームサービスの登録†
Google Playストアへアプリを登録したら、そのアプリに対して「ゲームサービスの登録」をする必要があります。この部分についての解説はGoogle Developersサイトに「Setting Up Google Play Game Services with the Google Play Developer Console」として書かれていますが、この記事の時点ではまだ日本語訳されていません。以下に実例として手順を記します。
Google Playストアへ登録したアプリに対して「サービスとAPI」を選択してください。以下のような画面が現れます。
[新しいゲームを追加]を選び、ゲーム名と種類を入力します。この項目は後で変更できますので、ここでは適当でかまいません。
追加したゲームは、選択すると以下のような画面となります。先ほど入力したゲーム名と種類に加えて、説明やアイコンの登録ができますが、まだ登録しなくても構いません。ここでは[リンク済みアプリ]を選びます。
どのタイプのアプリを追加するかを選択します。ここでは、Androidアプリを選びます。
続いて、リンクするアプリの情報を入力します。
リンクするアプリの情報の入力が完了すると、以下のように表示されます。 [今すぐアプリを承認]をクリックして、次へ進みます。
ユーザーに対してこのゲームサービスに表示される、ゲームの情報を入力します。現在は空のままで構いません。
アプリの識別子と、そのapkファイルを作成するのに使用した証明書の情報を入力します。 アプリの識別子は「org.hoge.com.example.cloudappdata」です。
証明書の情報はいろいろな取得方法がありますが、ここではapkファイルから直接取り出してみます*3。コマンドプロンプトを起動し、ストアへのアップロード用に署名したapkファイル(ここではcloudappdata.apk)に対して、「unzip -p cloudappdata.apk META-INF/*.RSA META-INF/*.DSA | keytool -printcert」とコマンドを入力します。以下の赤線の部分が、先ほどのダイアログで入力する証明書の情報です。
以上を入力すると、このアプリに対応するクライアントIDが配布されます。このIDはゲームサービスで必要となりますが、Google Drive App Dataの使用のみであれば不要です。
リンク済みアプリの一覧には、以下のように表示されます。
以上で最低限の情報入力は完了ですが、必要であればテスターを追加しておくとよいでしょう。
Google Drive API/SDKの登録†
ゲームサービスのゲーム一覧へ戻り、ゲームを選択すると、「ゲームの詳細」画面となります。その一番下に以下のようなリンクがあります。
これをクリックすると、登録したゲームサービスに対応するGoogle APIの設定画面を開くことができます。
[Services]を開き、[Drive API]と[Drive SDK]をONにします。
[API Access]を開きます。[Client ID for installed applications]の項目に、ゲームサービスで登録したアプリの情報が入っているのが確認できます。
このままでもいいのですが、この状態ではDrive APIにアクセスできるのは「Google Playストアに登録するAPKファイル」のみ、つまりリリースビルドしたもののみです。デバッグできないのは不便なので、デバッグビルドしたアプリの情報も追加してみましょう。
まず、[Create another client ID...]をクリックします。
まず、[Application type]として[Installed Application]を、[Installed application type]として[Android]を指定します。
続いて、ゲームサービスで登録したときと同様に、アプリの識別子と、そのapkファイルを作成するのに使用した証明書の情報を入力します。 アプリの識別子は「org.hoge.com.example.cloudappdata」です。
続いて、デバッグビルドしたAPKファイルから証明書の情報を取り出します。Eclipseでデバッグビルドすると、bin/cloudappdata.apkが作成されます。このファイルに対して、同様に「unzip -p cloudappdata.apk META-INF/*.RSA META-INF/*.DSA | keytool -printcert」とコマンドを入力して証明書の情報を表示します。
以上で登録はすべて終了です。なお、これらのデータの登録や変更を行ってから、その変更がサービス実体に反映されるまで、現在は10分ほどかかるようです。
もっと少ない手順で使う†
その後の調査で、「Google Drive App Dataを使用するだけ」ならもっと少ない手順で使えることが判明しました。Google Playストアへのアプリ登録や、ゲームサービスの登録は必ずしも必要ではありません。
- Google APIs Consoleへアクセスし、Google APIコンソールを開きます。
- 左上のセレクタから[Create]を開き、プロジェクト名を指定します。ここでは「cloudappdata」とします。
- 「cloudappdata」の[Service]ページが開きます。ここから、[Drive API]をONにします。
- [API Access]ページを開き、[Create an OAuth 2.0 client ID]をクリックします。
- 「Branding Information」を入力します。「Product name」に"cloudappdata"を入力し、[Next]をクリックします。
- 「Client ID Setting」を入力します。「Application type」に[Installed application]を選択し、「Installed application type」を[Android]にします。
- 「Package name」にアプリ識別子名(org.hoge.com.example.cloudappdata)を、「Signing certificate fingerprint(SHA1)」に「apkファイルの署名に使用した証明書の情報」を入力します。
これで、cloudappdataアプリケーションを実行できる環境が整います。設定がサービス実体に反映されるまで数十分ほど待つと、使用できるようになります。
参考†
- Google Drive SDK
本家Google Drive SDKサイト。
- Google デベロッパー アカデミー: Google ドライブ
Google Drive APIについて日本語での簡単な説明。
- Android で Google Drive API の利用手順
Google Drive APIを扱うAndroidアプリのコード実例。
- GitHub: googledrive/appdatapreferences-android
Google Drive App Dataを使ってSharedPreferenceをクラウドに置くサンプル。
*1 Google Playゲームサービス内でもクラウドストレージ機能があります。ただしこちらではセーブデータ本数が4本まで、合計で1MBまでと定められており、これを超えるセーブデータを扱いたい場合はGoogle Drive App Dataが便利です。
*2 もちろん、誰かが「org.hoge.com.example.cloudappdata」という識別子のアプリを登録してしまったら、あなたはこの識別子でアプリを登録することはできません。
*3 他にも、署名に使用したkeystoreファイルに対して「keytool -exportcert -keystore [keystoreファイル名] -list -v」と入力する方法などがあります。