步骤9: 对应用签名并配置安全配置文件(VSK Fire TV)
此页面将引导您完成对应用签名并创建API密钥以对其进行授权的过程。
- 关于在开发过程中对应用签名
- 创建一个密钥以对您的应用签名
- 使用自定义密钥自动对您的应用签名
- 从您的密钥中获取MD5和SHA-256值
- 创建亚马逊开发者账户
- 创建安全配置文件
- 将API密钥添加到Fire TV项目中
- 将安全配置文件附加到您的应用
- 为开发者控制台生成签名的APK
- 将您的APK上传到开发者控制台
- 填写应用提交信息
- 提交您的应用以进行动态应用测试(LAT)(仅限新应用)
- 后续步骤
关于在开发过程中对应用签名
您的应用的签名是一个哈希值,它在构建时应用于每个Android应用。如果您从Android Studio运行应用(在开发应用时),默认情况下,Android会自动使用默认调试密钥对您的应用签名。
然而,对于包含VSK的项目,Fire TV不会接受Android Studio提供的此默认调试密钥,并且您的应用也不会运行。即使在应用的本地开发过程中(侧载到Fire TV上),您也必须使用MD5和SHA-256值与亚马逊安全配置文件相关的签名对APK进行签名。安全配置文件将为您提供一个API密钥,您可以将其引入应用。
按照以下步骤在Android Studio中自定义调试签名密钥,以便为在Fire TV上运行的应用签名。
创建一个密钥以对您的应用签名
对于应用的预发布或“调试”版本,必须创建API密钥并将其存储在项目中。要在您的应用中添加API密钥:
- 在项目的assets文件夹内创建一个名为
api_key.txt
的文件。必须将该文件放置在此特定目录中。 - 插入API密钥作为此
api_key.txt
文件中的唯一数据。
对于应用的发布或“生产”版本,如果应用使用Appstore SDK,则必须为应用的发布版本创建额外的API密钥。如果使用较旧的IAP SDK v2.0,并使用自己的证书为应用签名,您还必须为应用的发布版本创建API密钥。反之,如果您使用IAP SDK v2.0并授权亚马逊对您的应用签名,则无需创建额外的API密钥。如需查看摘要,请参阅下表:
可以在开发者控制台中查找亚马逊应用商店证书哈希值,为现有应用创建API密钥。转到我的应用程序 > 选择您的应用 > Upload Your App File(上传您的应用文件)> 应用商店证书哈希值。
以下是您应该如何对应用签署的快速参考:
使用Appstore SDK | 发布应用自签名 | 生产或开发版本 | 如何对您的应用签名 |
---|---|---|---|
生产 | 为发布应用自动生成和注入API密钥,无需执行其他任何操作。 | ||
生产 | 开发者必须使用自己的发布证书哈希值创建API密钥,并将其添加到资产中。 | ||
生产 | 开发者必须在开发者控制台中使用发布证书哈希值创建API密钥,并将其添加到资产中。 | ||
生产 | 开发者必须使用自己的发布证书哈希值创建API密钥,并将其添加到资产中。 | ||
任何 | 任何 | 开发 | 开发者必须使用自己的发布证书哈希值创建API密钥,并将其添加到资产中。 |
用于对应用签名的密钥存储在密钥库中。对于Android应用,通常有一个调试密钥库和一个发布密钥库。要创建签名密钥,请如下操作:
- 如果您已经有一个自定义调试密钥(而不是默认的Android调试密钥)用来对应用签名,请确保您知道密钥库位置、密钥库密码、密钥别名和密钥密码。然后跳至下个部分: 使用密钥自动对应用签名.
- 假设您没有自定义调试密钥,请打开Android Studio,然后单击顶部导航中的Build(构建),然后选择Generate Signed Bundle/APK(生成签名的Bundle/APK)。
- 在“Generate Signed Bundle or APK”对话框中,选择APK。然后单击下一步。
- 单击Create new(新建)并定义新密钥的字段。有关更多详细信息,请参阅Android文档中的生成上传密钥和密钥库。至少填写证书表单中的一个字段。完成后,单击OK(确定)。
-
记下您的密钥库位置、密钥库密码、密钥别名和密钥密码,因为您在下一部分中将需要此类信息。
有关更多信息,请参阅Android文档中的生成密钥和密钥库。
- 关闭对话框,而不继续执行其他向导屏幕以生成APK。继续执行下一步。
使用自定义密钥自动对您的应用签名
在上一部分(创建一个密钥以对您的应用签名),您创建了一个自定义密钥来对自己的应用签名。在这一步中,您将更新调试配置文件在Android Studio中使用的密钥。要自定义调试配置文件中使用的签名密钥,请如下操作:
- 在Android Studio中打开Fire TV应用项目,然后转到File > Project Structure(文件>项目结构)。
- 单击左侧的Modules(模块)。
- 单击顶部的Signing Configs(签名配置)选项卡。
- 单击+按钮,并创建名为firetv的新配置文件。
-
根据上一部分(创建一个密钥以对您的应用签名)中提到的信息,选择Store File(存储文件)、Store Password(存储密码)、Key Alias(密钥别名)和Key Password(密钥密码),配置新的firetv签名配置。
提示: 当您选择Store Password(存储密码)和Key Password(密钥密码)时,Android允许您将此类信息存储为变量($var
)。建议以变量形式存储密码。否则,您的密码将存在于build.gradle (Module: app)
文件中,导致任何Git签入存在问题。当您将这些值存储为变量时,build.gradle
文件中的storePassword
和keyPassword
值在项目文件中仅显示为var
,而实际值对于您的计算机而言仍然是本地值。 - 单击Apply(应用),然后单击OK(确定)以关闭对话框。Gradle将您的项目与更新的签名信息同步。
- 在左窗格中,展开Gradle Scripts(Gradle脚本)并双击您的
build.gradle (Module: app)
文件。 -
验证名为
signingConfigs
的对象是否连同有关您firetv
签名配置文件的详细信息出现。例如:android { signingConfigs { firetv { storeFile file('/Users/johndoe/android_signature/androidkeys.jks') storePassword var keyAlias = 'myandroidkeys' keyPassword var } } ... } ... }
buildTypes
属性还应指定对发布和调试构建使用firetv
签名密钥。如果在示例应用中已将这些注释掉,请取消注释。buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' signingConfig signingConfigs.firetv } debug { signingConfig signingConfigs.firetv } }
现在,您的构建将使用API密钥进行签名,该密钥将与亚马逊开发者安全配置文件中使用的API密钥相匹配(您将在接下来的步骤中创建该配置文件)。Fire TV将允许把该应用安装在Fire TV设备上。
有关对应用签名的更多信息,请参阅Android文档中的配置构建过程以自动对应用签名。
您可以变更上文的应用签名过程,只要记住下面所述的一般原则即可:当您在Fire TV上开发和运行应用时,用一个与亚马逊上的安全配置文件相关的密钥来对您的应用签名,而非使用您的默认Android Studio调试密钥。(您将在下一部分中将此密钥与安全配置文件相关联。)
从您的密钥中获取MD5和SHA-256值
您需要从签名密钥中获取MD5和SHA-256值,然后才能从Amazon安全配置文件生成API密钥(该配置文件将在下一部分中介绍)。您可以通过以下操作从Android Studio中的Gradle菜单中获取这些值:
- 在Android Studio中,请单击右侧的Gradle侧窗格并将其展开。
- 展开[应用名称] > Tasks(任务)> android。
-
双击signingReport。
Gradle读取您的密钥库,并在底部窗格中显示MD5和SHA-256值。
- 仅需要MD5和SHA-256值。将这些MD5和SHA-256值复制到一个方便的位置,因为您需要用它们来创建安全配置文件。
创建亚马逊开发者账户
如果您还没有亚马逊开发者账户,请单击右上角的登录,然后单击创建您的Amazon Developer账户,在developer.amazon.com上创建一个账户。如果这是您首次创建账户,您将需要填写一些信息字段。请参阅创建开发者账户,了解更多详细信息。
创建安全配置文件
安全配置文件将您的安全凭证与应用关联。您将在开发者门户中创建此安全配置文件,并在配置文件的配置中包含MD5和SHA-256值。这将在您的应用和安全配置文件之间创建授权。要创建安全配置文件,请如下操作:
- 登录https://developer.amazon.com并单击Developer Console(开发者控制台)。这将让您前往亚马逊应用商店开发者控制台。
- 单击设置,然后从子选项卡第二行单击安全配置文件。
- 单击创建新的安全配置文件按钮(位于右下角)。
-
在安全配置文件名称字段中,为您的安全配置文件取一个容易记住的名称(例如您应用的名称)。还可以根据需要在安全配置文件描述字段中输入描述。
- 单击保存。
-
单击安卓/Kindle设置选项卡。
-
填写以下字段:
字段 描述 API密钥名称 该名称不一定是您应用的官方名称。它只是在注册到您的安全配置文件的应用和网站中标识这个特定的Android应用。 软件包 此项必须与您的Android项目的自定义软件包名称相匹配。在Android Studio中,在app(应用)> manifests(清单)> AndroidManifest.XML
找到您的清单,并在顶部附近寻找软件包
名称。例如:com.example.vskfiretv.mystreamz
MD5签名 此签名用于验证您的应用。MD5签名必须采用16个十六进制对的形式,用冒号分隔。例如: 02:6C:8B:83:77:91:39:C3:E8:C6:45:AC:6A:CE:B2:5B
。您在上一部分从您的密钥中获取MD5和SHA-256值中提取了该值。SHA256签名 此签名用于验证您的应用。SHA-256签名必须采用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值中提取了该值。 - 单击生成新密钥。
-
在API密钥下,单击显示并复制API密钥,将其保存在方便的位置。
注意: 如果应用的不同版本具有不同的签名或软件包名称,例如一个或多个测试版本和一个生产版本,则每个版本都需要自己的API密钥。在应用的“安卓/Kindle设置”中,单击添加API密钥按钮为应用创建其他密钥(每个版本一个)。请注意,您可以对多个应用使用同一安全配置文件。在安全配置文件中,您可以添加多个API密钥,并将每个密钥与不同的应用相关联。 - 关闭API Key Details窗口。
将API密钥添加到Fire TV项目中
您需要将安全配置文件中的API密钥添加到Fire TV项目中。这将使您的应用能够接收来自Alexa的消息。要在您的应用中添加API密钥:
- 在Android Studio中,打开您的Fire TV应用项目。
- 在项目的
assets
文件夹内创建一个名为api_key.txt的文件。(如果您的应用中没有包含此文件的资产文件夹,请创建该文件夹和文件。) 必须将该文件放置在此特定目录中。 - 插入API密钥作为此
api_key.txt
文件中的唯一数据。
该
api_key.txt
文件已存在于示例应用中。按Shift两次,键入文件名称以快速找到该文件。将<INSERT YOUR API KEY HERE>
(在此插入您的API密钥)替换为您的API密钥。将安全配置文件附加到您的应用
您需要将安全配置文件附加到您的应用。这将可让您的应用在Fire TV上获得授权。要将安全配置文件附加到您的应用,请如下操作:
-
如果有必要,登录https://developer.amazon.com并执行以下操作之一:
- 如果您在处理现有应用,请转到应用与服务>我的应用程序。选择您的应用。
- 如果您在为示例应用创建新的测试应用,请单击添加新应用程序 > Android。在“新应用程序提交”屏幕上填写必填字段(标题、类别等),然后单击保存。
- 在左侧的子选项卡列中,单击应用服务选项卡。
- 在“安全配置文件”部分展开选择现有安全配置文件或新建链接。
-
在出现的“安全配置文件”下拉列表中,选择先前创建的安全配置文件,然后单击启用安全配置文件。
您将看到确认消息,说明Security profile "{Name}" has been successfully enabled for your app(已成功为您的应用启用安全配置文件"{Name}"),其中含有关于附加的安全配置文件的详细信息。
请注意,一旦将安全配置文件附加到应用,就无法删除或更改安全配置文件对应用的附加。
为开发者控制台生成签名的APK
您需要生成一个签名的APK并将其上传到开发者控制台,以便在稍后的步骤中将您的应用提交到动态应用测试(LAT)。您生成的APK必须是发布APK,而不是调试APK。要从Android Studio生成签名的APK:
- 在Android Studio中,通过转到Build(构建),然后选择Generate Signed Bundle/APK(生成签名的Bundle/APK),生成一个签名版本的APK。选择APK,然后单击下一步。(不要生成调试APK,因为开发者控制台不会接受它。)
- 选择与您之前配置的签名密钥相同的签名密钥。然后单击下一步。
- 选择所需的目标文件夹(这是Android Studio将生成构建的APK的位置)。选择release(发布)构建(注意亚马逊应用商店将拒绝调试构建)。选择V1 (Jar Signature)(V1(Jar签名))复选框。然后单击Finish(完成)。
-
Android Studio构建您的项目后,会显示一个带有locate(定位)链接的小消息窗口,用于打开在其中构建APK的目标文件夹。单击locate,并打开您的目标文件夹以便利地访问APK。
如果此窗口消失,您可以通过单击右下角的事件日志选项卡找到信息。项目中的位置为app/release,文件的默认名称为
app-release.apk
。
将您的APK上传到开发者控制台
现在您已经生成了一个已签名的发布版APK,请将其上传到开发者控制台。
上传APK:
- 如有必要,请登录开发者控制台并转到控制面板。
- 转到应用与服务>我的应用。
- 单击添加新应用程序按钮,然后选择Android。
-
在应用程序标题字段为您的应用指定名称,并在应用程序类别字段确定其类别。有关这些字段的更多信息,请参阅应用提交过程中的步骤1: 上传您的应用文件。
重要须知: Alexa将通过亚马逊应用商店提交选项卡中的“应用程序标题”字段来标识您的应用。例如,如果您将应用命名为“MyStreamz”,当您向应用请求标题时,Alexa将响应“正在从MyStreamz获取视频标题。” Alexa不会从您的Android项目中的文件中获取您应用的名称。 - 单击保存。
-
在Upload Your App File屏幕上,将APK从目标文件夹拖到Upload your app file框中,然后填写其他必填字段。
有关该屏幕的更多详细信息,请参阅步骤1: 上传您的应用文件。
-
在语言支持部分中选中一个复选框(例如,英语)。
按照提交应用入门指南进行操作,其余详细信息将在下一步中填写。目前,您必须有一个应用来附加安全配置文件。安全配置文件需要软件包名称。
填写应用提交信息
在应用提交屏幕上填写所有必填信息。此时您不应将应用提交到亚马逊应用商店。要填写该信息,请如下操作:
-
在每个屏幕上,提供所需的信息。有关字段详细信息,请参阅向亚马逊应用商店提交应用。
提示: 您需要在提交工作流期间上传图像资产。如果需要,您可以下载示例图像。 -
当您完成每个屏幕时,侧边栏中的屏幕会显示一个绿色对勾标记。确保Upload Your App File、Target Your App(确定应用支持目标)以及Appstore Details(亚马逊应用商店详情)屏幕都有绿色对勾标记。
提交您的应用以进行动态应用测试(LAT)(仅限新应用)
您不需要将您的应用提交到亚马逊应用商店,但如果您有一个新的应用,或者如果您正在使用示例应用,则需要将应用提交到动态应用测试(LAT)。当您向LAT提交应用时,亚马逊的服务器可以将您的应用软件包名称映射到您的目录中。在RemoteVideoPlayer Supported Capabilities
(RemoteVideoPlayer支持的功能)中的catalogs(目录)属性中,指明您的合作伙伴ID,但亚马逊会通过您的应用标题和ASIN的映射获取您应用的目录。要执行此映射,您的应用必须位于LAT或生产环境中。
要为您的应用开始LAT,请执行如下操作:
- 在开发者控制台中,转到应用与服务>我的应用程序,然后单击您的应用。
- 在左侧的侧边栏中,单击动态应用测试。
-
如果这是您第一次为此应用设置测试,请选择新建动态应用测试。
如果您之前为此应用设置了测试,则会将您带到“动态应用测试”控制面板。单击新测试。
-
填写所有必填字段,然后单击提交。有关如何开始LAT的更多详细信息,请参阅创建动态应用测试。
没有必要为这个LAT添加测试者,因为LAT提交单纯是为了让亚马逊的系统可以将您的目录映射到您的软件包。您将不会使用LAT版本的应用,并且可以忽略任何LAT电子邮件。
注意: 您不需要将应用上传到LAT即可进行任何测试。您将通过Android Studio的ADB连接到Fire TV设备来测试您的应用。您不需要将每次更新提交到LAT即可测试对应用的更改。(但是您仍然可以自由使用LAT进行测试。)警告: 向LAT提交应用后,请勿更改其名称。这样做将撤消应用的目录映射。同样的要求也适用于示例应用。如果您在亚马逊开发者控制台中更改应用标题值,您将使用示例应用撤消目录的后端映射,并且Alexa将不再响应请求。
后续步骤
转到下一步: 步骤10: 测试表述和观察日志。
Last updated: 2023年10月12日