[译] 将通用安卓音乐播放器转化为 instant 应用

栏目: Android · 发布时间: 5年前

内容简介:从 Android Studio 的 3.3 版本开始,IDE 将会为 instant 应用提供工具支持。(撰写至本文时,Android Studio 3.3 的可下载版本是preview release,撰写至译文时,3.3 版本已更新到正式 release 版)。这篇博文中我们将介绍为了在不使用命令行的情况下构建和部署 instant 应用,我们需要最低版本为 Android Studio 3.3。升级 Android Gradle 插件来匹配 Android Studio 的版本也是在我们清单文件的

从 Android Studio 的 3.3 版本开始,IDE 将会为 instant 应用提供 工具 支持。(撰写至本文时,Android Studio 3.3 的可下载版本是preview release,撰写至译文时,3.3 版本已更新到正式 release 版)。这篇博文中我们将介绍 我们即将采取的步骤 来把 通用安卓音乐播放器 (UAMP) 转换成 instant 应用。对于首次听说 instant 应用的人,可以查看 Android 开发者峰会上的会话 ,或者之前发布的与该话题有关的阅读文档。

[译] 将通用安卓音乐播放器转化为 instant 应用

需求

为了在不使用命令行的情况下构建和部署 instant 应用,我们需要最低版本为 Android Studio 3.3。升级 Android Gradle 插件来匹配 Android Studio 的版本也是 非常重要的 。例如,在撰写本文时,Android Studio 的版本最新为 3.3 RC1,因此我们使用如下 Gradle 插件版本: com.android.tools.build:gradle:3.3.0-rc01

更新清单文件

在我们清单文件的 application 标签内部,我们需要添加代码 <dist:module dist:instant=”true” /> 。我们可能会看到报错信息表示『命名空间 ‘dist’ 没有被约束』,这里我们需要添加代码 xmlns:dist="http://schemas.android.com/apk/distribution" 到清单代码的根标签内。或者,我们可以按照 Android Studio 的提议为我们自动解决报错问题。

我们也可以添加 intent filters 属性来处理一个 VIEW intent,它与一个绑定我们应用的 URL 有关,尽管这不是唯一的办法来触发 instant 应用启动。对于 UMAP 来说,更新后的清单文件像下面代码这样:

<application ...>

    <!-- Enable instant app support -->
    <dist:module dist:instant="true" />

<activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>

<!-- App links for http -->
        <intent-filter android:autoVerify="true">
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
            <data
                android:scheme="http"
                android:host="example.android.com"
                android:pathPattern="/uamp" />
        </intent-filter>

<!-- App links for https -->
        <intent-filter android:autoVerify="true">
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
            <data
                android:scheme="https"
                android:host="example.android.com"
                android:pathPattern="/uamp" />
        </intent-filter>
    </activity>
</application>
复制代码

构建和部署一个具备 instant 特性的应用包

我们可以遵照 Google Play Instant 文档 中解释的流程,我们也可以在 Android Studio 中更改运行配置。为了启用 instant 应用的部署,我们可以选择应用菜单中 Deploy as instant app 选择框,如下图所示:

[译] 将通用安卓音乐播放器转化为 instant 应用

现在,剩下要做的就是在 Android Studio 中点击非常令人满意的 Run 按钮,如果前面所有步骤都正确执行,那就等着看 instant 应用被自动部署和启动吧!

这个步骤之后,我们不会看到我们的应用在启动时出现在任何列表中。为了找到它,我们需要进入菜单 Settings > Apps ,已部署的 instant 应用被列在这里:

[译] 将通用安卓音乐播放器转化为 instant 应用

启动 instant 应用

Android 系统可以通过很多种方式来触发启动一个 instant 应用。除了与 Play 商店绑定的机制之外,启动 instant 应用通常是通过将 ACTION_VIEW 发送到 URL 路径所对应的对象,这个 URL 在我们的清单文件中以 intent filter 的形式来定义。对于 UAMP 应用,通过运行下面的 ADB 指令来触发我们的应用:

adb shell am start -a android.intent.action.VIEW "https://example.android.com/uamp"
复制代码

然而,Android 系统也会建议通过其他应用触发 ACTION_VIEW 对应的 URL 路径来启动我们的应用,这基本上适用于除了 web 浏览器外的所有应用。

[译] 将通用安卓音乐播放器转化为 instant 应用

有关应用链接的更多信息,查看这个主题的相关文档,包括你的应用处理如何验证链接的归属方的方法。

已知问题

对于运行 API 28 版本的设备(模拟器),当我们清除菜单上 Deploy as Instant app 选择按钮并试图再次部署时,会报如下的错误:

Error while executing: am start -n “com.example.android.uamp.next/com.example.android.uamp.MainActivity” -a android.intent.action.MAIN -c android.intent.category.LAUNCHER

Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.example.android.uamp.next/com.example.android.uamp.MainActivity }

Error type 3

Error: Activity class {com.example.android.uamp.next/com.example.android.uamp.MainActivity} does not exist.

Error while Launching activity
复制代码

解决办法是移除设备上的 instant 应用,既可以从设备或模拟器的设置菜单 Settings > Apps 中卸载,也可以通过 Android Studio 工具的标签 terminal 中执行指令 ./gradlew uninstallAll

如果发现译文存在错误或其他需要改进的地方,欢迎到 掘金翻译计划 对译文进行修改并 PR,也可获得相应奖励积分。文章开头的 本文永久链接 即为本文在 GitHub 上的 MarkDown 链接。

掘金翻译计划 是一个翻译优质互联网技术文章的社区,文章来源为掘金 上的英文分享文章。内容覆盖 AndroidiOS前端后端区块链产品设计人工智能 等领域,想要查看更多优质译文请持续关注 掘金翻译计划 、官方微博、 知乎专栏


以上所述就是小编给大家介绍的《[译] 将通用安卓音乐播放器转化为 instant 应用》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

MongoDB

MongoDB

Kristina Chodorow / O'Reilly Media / 2013-5-23 / USD 39.99

How does MongoDB help you manage a huMONGOus amount of data collected through your web application? With this authoritative introduction, you'll learn the many advantages of using document-oriented da......一起来看看 《MongoDB》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

SHA 加密
SHA 加密

SHA 加密工具

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具