開発者コンソール

手順5: アプリに署名してセキュリティプロファイルを構成する


手順5: アプリに署名してセキュリティプロファイルを構成する

本稼働アプリの場合、Amazon側でAmazonアカウントにひも付いたAPK署名を処理します。ただし、ビデオスキルを組み込んだアプリをテストするには、APKに署名し、その署名をAmazonセキュリティプロファイルに関連付ける必要があります。

開発中のアプリの署名について

アプリの署名とはハッシュ値のことであり、どのAndroidアプリでも、ビルド時にこのハッシュ値が適用されます。開発中のアプリをAndroid Studioから実行する場合、デフォルトでは、Androidがデバッグ鍵を使用してアプリの署名を自動的に行います。

しかし、ビデオスキルを含むプロジェクトの場合は、Fire TVがAndroid Studioから提供されるデフォルトのデバッグ鍵を受け入れないため、アプリが機能しないことがあります。ビデオスキルを含むアプリを開発するときは、ローカルでの開発でも、自分でAPKに署名を行い、署名のMD5値とSHA256値を特定のAmazonセキュリティプロファイルに関連付ける必要があります。その関連付けられたセキュリティプロファイルから提供されるAPIキーをアプリに組み込むことで、Amazon Device Messaging(ADM)からの通信を承認できます。

Android Studioでデバッグ署名鍵をカスタマイズし、Fire TV対応アプリに適切に署名するには、以下の手順に従います。

アプリの署名に使用する鍵を作成する

最初の手順として、アプリの署名に使用する鍵を作成します。鍵は、キーストアに格納されます。一般的なAndroidアプリには、デバッグ用のキーストアとリリース用のキーストアがあります。署名に使用する鍵を作成するには、次の手順を行います。

  1. アプリの署名に使用するカスタムデバッグ鍵(デフォルトのAndroidデバッグ鍵ではない鍵)を既に持っている場合は、その鍵のキーストアの場所、キーストアのパスワード、鍵のエイリアス、鍵のパスワードを確認してください。確認できたら、次のセクション( カスタム鍵を使用してアプリに自動的に署名する)に進みます。
  2. カスタムデバッグ鍵を持っていない場合は、Android Studioの上部のメニューの [Build] をクリックし、[Generate Signed Bundle / APK] をクリックします。
  3. [Generate Signed Bundle or APK] ダイアログボックスで、[APK] を選択します。[Next] をクリックします。
  4. [Create new] をクリックし、新しい鍵の各フィールドを入力します。詳細については、Androidドキュメントの鍵とキーストアを生成するを参照してください。キーストアの場所、キーストアのパスワード、鍵のエイリアス、鍵のパスワードをメモしておきます。この情報は次のセクションで必要になります。入力が完了したら、[Apply] をクリックします。

    アプリの署名に使用する鍵を選択する
    アプリの署名に使用する鍵を選択する
  5. ダイアログボックスを閉じます(APKは生成しません)。次の手順に進みます。

詳細については、Androidドキュメントのアップロード鍵とキーストアを生成するを参照してください。

カスタム鍵を使用してアプリに自動的に署名する

前の手順では、アプリの署名に使用するカスタム鍵を作成しました。この手順では、Android Studioのデバッグプロファイルで使用する鍵を更新します。デバッグプロファイルで使用する署名キーをカスタマイズするには、次の手順を実行します。

  1. Android StudioでFire TV対応アプリのプロジェクトを開きます。
  2. [Build] から [Edit Build Types] をクリックします。
  3. 左側の [Modules] をクリックします。
  4. 上部の [Signing Configs] タブをクリックします。
  5. [debug] を選択します。
  6. [Store File][Store Password][Key Alias][Key Password] を選択して新しいデバッグ署名構成プロファイルを設定します。前のセクション(アプリの署名に使用する鍵を作成する)でメモした情報を設定してください。
  7. [Apply] をクリックしてから、[OK] をクリックしてダイアログボックスを閉じます。
  8. 左のペインで [Gradle Scripts] を展開し、build.gradle (Module: app)ファイルをダブルクリックします。
  9. signingConfigsというオブジェクトに、作成したデバッグ署名構成プロファイルの内容が表示されていることを確認します。次に例を示します。

     android {
       signingConfigs {
          debug {
              storeFile file('/Users/yourusername/android_signature/androidkeys.jks')
              storePassword 'yourstorepassword'
              keyAlias = 'myandroidkey'
              keyPassword 'yourkeypassword'
          }
        ...
       }
     }
    

    これで、Amazon開発者セキュリティプロファイル(次の手順で作成します)で使用するAPIキーと一致するAPIキーがアプリの署名に使用され、Fire TVでこのアプリのインストールが承認されます。

    アプリの署名の詳細については、Androidドキュメントでアプリに自動で署名するようビルドプロセスを設定するを参照してください。

    ここで覚えておくべき原則は、Fire TV対応アプリを開発して実行する場合、アプリの署名には、Android Studioのデフォルトのデバッグ鍵ではなく、Amazonセキュリティプロファイルに関連付けられた鍵を使用するということです。この原則が守られるのであれば、アプリに署名するプロセスが上記の手順と異なっても構いません(以降のセクションで、この鍵をセキュリティプロファイルに関連付けます)。

    実稼働用のアプリについては、Amazonアプリストアを使用してアプリに署名すると(デフォルト)、APIキーが自動的に提供されます。ただし、自分で作成した証明書を使用してリリースバージョンのアプリに署名する場合は、そのリリースバージョン用のAPIキーを自分で新たに作成する必要があります。

鍵からMD5値とSHA-256値を取得する

AmazonセキュリティプロファイルからAPIキーを生成する(次の手順で説明します)には、署名鍵からMD5値とSHA-256値を取得しておく必要があります。MD5値とSHA-256値の抽出には、keytoolユーティリティ(Javaの一部である、鍵と証明書の管理ツール)を使用できます。または、Android Studioの [Gradle] メニューを使用することもできます。

Android Studioの [Gradle] サイドペインの使用

Android Studioで、右側の [Gradle] サイドペインをクリックして展開します。[app] > [Tasks] > [android] を展開します。次に、[signingReport] をダブルクリックします。

Android StudioのsigningReport
Android StudioのsigningReport

keytoolユーティリティの使用

署名鍵からMD5値とSHA256値を抽出するには、次の手順を行います。

  1. 次のコマンドをテキストファイルにコピーします。

    Mac:

    /Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/bin/keytool -v -list -alias myandroidkey -keystore /Users/johndoe/androidkeys.jks -storepass mykeystorepassword -keypass mykeypassword
    

    Windows:

    "C:\Program Files\Java\jdk1.8.0_231.jdk\bin\keytool" -v -list -alias myandroidkey -keystore "C:\Users\johndoe\androidkeys.jks" -storepass italttby1J# -keypass italttby1J#
    
  2. 次のように、各パラメーターを編集します。

    • コンピューター上でkeytoolユーティリティが保存されている場所を指すようにパスを変更します(または、コマンドを実行する前にkeytoolが格納されている場所に移動します)。サンプルコマンドで想定しているkeytoolの場所は、ご使用のコンピューター上にはない可能性があります。
    • myandroidkeyには、アプリの署名に使用する鍵のエイリアスを指定します。
    • /Users/johndoe/androidkeys.jksまたはC:\Users\johndoe\androidkeys.jksには、キーストアへのパスを指定します。
    • mykeystorepasswordには、キーストアのパスワードを指定します。
    • mykeypasswordには、鍵のパスワードを指定します。

    これらの値は、自身で設定している鍵の情報に合わせて指定してください。

    keytoolが既にPATHに追加されている場合は、このユーティリティのパスを指定する必要がない可能性があります。ただし、keytoolにフルパスを指定しないと、MD5値が表示されないことがあります。

  3. 編集したkeytoolコマンドをターミナルまたはコマンドプロンプトに貼り付け、Enterキーを押します。レスポンスとして、次のような「証明書フィンガープリント」が(そのほかの情報と共に)表示されます。

    Certificate fingerprints:
    	 MD5:  02:6C:8B:83:77:96:39:C8:E8:C6:45:AC:6A:CE:B2:5B
    	 SHA1: 45:40:AD:E1:0B:B2:AE:CC:CB:21:65:BD:5A:01:82:A8:07:29:73:D7
    	 SHA256: 12:8F:C1:5D:3D:E9:BD:00:E0:ED:77:B3:84:71:AB:8F:6E:7D:C0:9E:E5:FE:64:EF:8F:BD:DA:EF:77:1F:E8:5E
    ...
    

    必要なのは、MD5値とSHA256値だけです。このMD5値とSHA256値を、アクセスしやすい場所にコピーしておきます。これらの値は、セキュリティプロファイルの作成(次の手順で説明します)に必要になります。

セキュリティプロファイルを作成する

セキュリティプロファイルは、セキュリティ認証情報をアプリに関連付けることができます。セキュリティプロファイルを作成するには、次の手順を行います。

  1. https://developer.amazon.comにログインし、[開発者コンソール] をクリックします。Amazonアプリストアの開発者コンソールが開きます(Alexaの開発者コンソールではありません)。
  2. [設定] をクリックし、1段下のメニューから [セキュリティプロファイル] をクリックします。
  3. [セキュリティプロファイルを新規作成] をクリックします。
  4. [セキュリティプロファイル名] フィールドに、わかりやすい名前を指定します。たとえば、アプリと同じ名前にすることができます。[セキュリティプロファイルの説明] フィールドには、必要な説明を入力します。

    セキュリティプロファイルの名前を指定する
    セキュリティプロファイルの名前を指定する
  5. [保存] をクリックします。
  6. [Android/Kindleの設定] タブをクリックします。

    セキュリティプロファイルを構成する
    セキュリティプロファイルを構成する
  7. 次のフィールドを入力します。

    フィールド 説明
    APIキー名 これは、アプリの正式名称である必要はありません。この名前は、セキュリティプロファイルに登録されている複数のアプリやウェブサイトから、特定のAndroidアプリを識別するために使用されます。
    パッケージ これは、Androidプロジェクトのパッケージ名と一致する必要があります。Android Studioで、appフォルダを展開し、manifestsを展開してAndroidManifest.XMLをダブルクリックします。上部にpackage名が見つかるはずです。たとえば、com.acme.sample.hawaiiappのような名前です。
    MD5署名 この署名は、アプリを検証するために使用されます。MD5署名の形式は、16進数を2桁ずつコロンで区切り、全部で16個の数字を並べた形でなければなりません。以下に例を示します。 02:6C:8B:83:77:96:39:C8:E8:C6:45:AC:6A:CE:B2:5B

    この値は、前のセクション(鍵からMD5値とSHA-256値を取得する)でkeytoolを使用して署名鍵から抽出したものです。
    SHA256署名 この署名は、アプリを検証するために使用されます。SHA-256署名の形式は、16進数を2桁ずつコロンで区切り、全部で32個の数字を並べた形でなければなりません。次に例を示します。 12:8F:C1:5D:3D:E9:BD:00:E0:ED:77:B3:84:71:AB:8F:6E:7D:C0:9E:E5:FE:64:EF:8F:BD:DA:EF:77:1F:E8:5E

    この値は、前のセクション( 鍵からMD5値とSHA-256値を取得する)でkeytoolを使用して署名鍵から抽出したものです。
  8. [新しいキーを生成] をクリックします。
  9. [APIキー] 列の [表示] をクリックし、APIキーをコピーします。このAPIキーはFire TVプロジェクトに追加する必要があるため、アクセスしやすい場所に保存しておいてください。

    APIキーの詳細
    APIキーの詳細
  10. [API Key Details] ウィンドウを閉じます。次に、[ウェブ設定] タブをクリックします。
  11. クライアントIDとクライアントシークレットを、アクセスしやすい場所にコピーします。クライアントIDとクライアントシークレットは、Lambdaコードを仕上げるときに使用します。

    クライアントIDとクライアントシークレットをコピーする
    クライアントIDとクライアントシークレットをコピーする

セキュリティプロファイルのLogin with Amazonを有効にする

セキュリティプロファイルのLogin with Amazonを有効にする必要があります。

  1. 開発者コンソールで、上部のメニューから [Login with Amazon] をクリックします。
  2. Login with Amazonコンソールの [セキュリティプロファイルを選択] ドロップダウンメニューで、使用するセキュリティプロファイルを選択します。

    セキュリティプロファイルのLogin with Amazonを有効にする
    セキュリティプロファイルのLogin with Amazonを有効にする
  3. [確認する] ボタンをクリックします。
  4. [同意の画面の情報を入力] ダイアログボックスで、使用するプライバシーURLと同意のロゴ画像を追加し、[保存] をクリックします(テストするだけの場合は、プライバシーURLには仮に自分のウェブサイトを入力しても構いません)。

Fire TVプロジェクトにAPIキーを追加する

セキュリティプロファイルから生成したAPIキーをFire TVプロジェクトに追加します。これにより、アプリがAmazon Device Messaging(ADM)からメッセージを受信できるようになります。APIキーをアプリに追加する方法は以下のとおりです。

  1. Android StudioでFire TV対応アプリのプロジェクトを開きます。
  2. プロジェクトのassetsフォルダにapi_key.txtという名前のファイルを作成します。このファイルは、必ずassetsフォルダに配置するようにしてください。

    サンプルアプリ

    サンプルアプリには、既にapi_key.txtという名前のファイルがあります。Spaceキーを2回押してこのファイルを検索し、ファイルの内容を削除して、APIキーを貼り付けます。
  3. api_key.txtファイルにAPIキーを挿入します。これ以外のデータは含めないでください。

開発者コンソール用の署名付きAPKを生成する

特定のアプリパッケージ名を持つセキュリティプロファイルとアプリを関連付けることができるように、APKを生成して開発者コンソールにアップロードする必要があります。Android Studioで署名付きAPKを生成するには、次の手順を実行します。

  1. Android Studioで署名付きAPKを生成するには、[Build] メニューの [Generate Signed Bundle / APK] をクリックします。[APK] を選択し、[Next] をクリックします。
  2. 前に設定した署名キーと同じものを選択します。[Next] をクリックします。
  3. 目的の保存先フォルダ(Android StudioがビルドしたAPKを生成する場所)を選択します。[debug] ビルド(または、カスタマイズした署名キーがあるビルド)を選択します。[V1 (Jar Signature)] チェックボックスをオンにします。[Finish] をクリックします。
  4. Android Studioがプロジェクトをビルドすると、小さなメッセージウィンドウが表示され、作成されたAPKの保存先フォルダを開くための [locate] リンクが示されます。[locate] をクリックして保存先フォルダを開くと、APKに簡単にアクセスできます。

    生成されたAPKの場所を確認する
    生成されたAPKの場所を確認する

開発者コンソールにAPKをアップロードする

次に、生成した署名付きAPKを開発者コンソールにアップロードします。

  1. 開発者コンソールにログインしていない場合は、開発者コンソールにログインし、ダッシュボードに移動します(右上隅にある [開発者コンソール] リンクをクリックしてください)。
  2. [アプリ&サービス] から [マイアプリ] をクリックします。
  3. 右下隅にある [新規アプリを追加] をクリックし、[Android] を選択します。
  4. [アプリタイトル] フィールドにアプリの名前を指定し、[アプリのカテゴリー] フィールドにカテゴリーを指定します(これらのフィールドの詳細については、アプリ申請プロセスの一般情報を入力するを参照してください)。
  5. [保存] をクリックします。
  6. [APKファイル] タブをクリックします。フィールドが編集可能でない場合は、右下隅にある [編集] をクリックしてください。
  7. APKファイルを、保存先フォルダ(APKファイルが生成されている場所)から、開発者コンソールの [APKファイル] タブの [APKをここにドロップ] という表示のあるボックスにドラッグします。
  8. その他の必須フィールドを入力します。[サポート言語] のチェックボックス([英語] など)を選択し、[海外販売に関するコンプライアンス] チェックボックスをオンにします。

    [APKファイル] タブの詳細については、APKファイルをアップロードするを参照してください。この手順はすべて、アプリの申請についての説明に従って後から行うことができます。ここでは、セキュリティプロファイルを関連付けるためにアプリが必要なだけです。セキュリティプロファイルはパッケージ名を必要とします。

  9. [保存] をクリックします。

アプリにセキュリティプロファイルを関連付ける

アプリにセキュリティプロファイルを関連付ける必要があります。これにより、Fire TVでアプリが承認されるようになります。アプリにセキュリティプロファイルを関連付けるには、次の手順を実行します。

  1. 開発者コンソールでアプリを表示するには、https://developer.amazon.com/ja/にログインして [アプリ&サービス] をクリックし、[マイアプリ] をクリックします。次に、アプリを選択します。
  2. アプリ名のすぐ下にあるメニューから、[アプリサービス] タブをクリックします。

    アプリサービスを選択する
    アプリサービスを選択する
  3. [セキュリティプロファイル] セクションで、[既存のセキュリティプロファイルを選択するか、新規作成します] を展開します。[セキュリティプロファイル] ドロップダウンが表示されるので、先ほど作成したセキュリティプロファイルを選択し、[セキュリティプロファイルを有効にする] をクリックします。

    アプリにセキュリティプロファイルを選択する
    アプリにセキュリティプロファイルを選択する

    「セキュリティプロファイル "{名前}"がアプリに対して有効になりました」という確認メッセージと、関連付けられたセキュリティプロファイルの詳細が表示されます。

  4. [デバイスメッセージング] セクションで、[デバイスメッセージングを有効にする] ボタンをクリックします。

    デバイスメッセージングを有効にする
    デバイスメッセージングを有効にする
  5. Login with Amazonセクションにも、同じセキュリティプロファイルが、関連付けられたプロファイルとして表示されるはずです。

    アプリにセキュリティプロファイルをいったん関連付けると、そのセキュリティプロファイルの関連付けを削除または変更することはできません。

次のステップ

次の 手順6: Lambdaパッケージを作成・デプロイするに進みます。

問題が発生して続行できない場合は、トラブルシューティングを参照してください。