Android App Links

编辑页面

了解如何配置 Android App Links,以便通过标准网页 URL 打开您的 Expo 应用。


For the complete documentation index, see llms.txt. Use this Use this file to discover all available pages.

要为你的应用配置 Android App Links,你需要:

  • 在项目的 app 配置中添加 intentFilters 并将 autoVerify 设置为 true
  • 设置双向关联以验证你的网站和原生应用
观看:使用 Expo Router 设置 Android App Links
观看:使用 Expo Router 设置 Android App Links

配置带有 autoVerify 的 intent filters,设置你的网站和应用之间的双向关联,并验证 Android App Links。

intentFilters 添加到 app 配置中

通过添加 android.intentFilters 属性并将 autoVerify 属性设置为 true 来配置你的 app 配置。指定 autoVerify 是 Android App Links 正常工作的必要条件。

下面的示例展示了一个基础配置,它允许你的应用在标准 Android 对话框中显示为处理指向 webapp.io 域的任何链接的选项。它还使用常规的 https scheme,因为 Android App Links标准深度链接 不同。

app.json
{ "expo": { "android": { "intentFilters": [ { "action": "VIEW", "autoVerify": true, "data": [ { "scheme": "https", "host": "*.webapp.io", "pathPrefix": "/records" } ], "category": ["BROWSABLE", "DEFAULT"] } ] } } }

设置双向关联

要在网站和 Android 应用之间设置双向关联,你需要以下内容:

  • 网站验证: 这需要在 /.well-known 目录中创建一个 assetlinks.json 文件,并将其托管在目标网站上。此文件用于验证从给定链接打开的应用是否为正确的应用。
  • 原生应用验证: 这需要某种引用目标网站域名(URL)的代码签名。

创建 assetlinks.json 文件

1

为网站验证创建一个 assetlinks.json 文件(也称为 digital asset links 文件),位置为 /.well-known/assetlinks.json。此文件用于验证针对给定链接打开的应用。

如果你使用 Expo Router 来构建网站(或者使用任何其他现代 React 框架,例如 Remix、Next.js 等),请在 public/.well-known/assetlinks.json 创建 assetlinks.json。对于旧版 Expo webpack 项目,请在 web/.well-known/assetlinks.json 创建该文件。

2

从 app 配置中的 android.package 下获取 package_name 的值。

3

从应用的签名证书中获取 sha256_cert_fingerprints 的值。如果你使用 EAS Build 来构建 Android 应用,在创建构建后:

  • 运行 eas credentials -p android 命令,并选择构建配置文件以获取其指纹值。
  • 复制 SHA256 Fingerprint 下列出的指纹值。
从 Google Play Console 获取 SHA256 证书指纹的替代方法

如果你没有使用 EAS 来管理代码签名,你可以通过手动构建并将应用提交到 Google Play Console 来查找 sha256_cert_fingerprints

  • 在 Google Play Console 的仪表板中,进入 Release > Setup > App Signing
  • 找到适用于你应用的正确 Digital Asset Links JSON 片段。
  • 复制看起来像 14:6D:E9:83... 的值,并将其粘贴到你的 public/.well-known/assetlinks.json 文件中的 sha256_cert_fingerprints 下。

4

package_namesha256_cert_fingerprints 添加到 assetlinks.json 文件中:

public/.well-known/assetlinks.json
[ { "relation": ["delegate_permission/common.handle_all_urls"], "target": { "namespace": "android_app", "package_name": "com.example", "sha256_cert_fingerprints": [ // 支持不同应用和密钥的多个指纹 "14:6D:E9:83:51:7F:66:01:84:93:4F:2F:5E:E0:8F:3A:D6:F4:CA:41:1A:CF:45:BF:8D:10:76:76:CD" ] } } ]
你可以向 sha256_cert_fingerprints 数组中添加多个指纹,以支持你应用的不同变体。有关更多信息,请参阅 Android 关于如何声明网站关联的文档

托管 assetlinks.json 文件

使用与你的域名对应的 web 服务器托管 assetlinks.json 文件。此文件必须以 application/json 内容类型提供,并可通过 HTTPS 连接访问。通过在地址栏中输入完整 URL 来验证浏览器是否可以访问此文件。

原生应用验证

在 Android 设备上安装应用以触发 Android 应用验证 流程。

当你的应用已打开后,请参阅 处理进入应用的链接 了解如何处理传入链接并向用户显示其请求的内容。

调试

Expo CLI 允许你在不部署网站的情况下测试 Android App Links。利用 --tunnel 功能,你可以将开发服务器转发到一个公开可用的 HTTPS URL。

1

将环境变量 EXPO_TUNNEL_SUBDOMAIN=my-custom-domain 设置为你在开发期间使用的唯一字符串 my-custom-domain。这可以确保你的 tunnel URL 在开发服务器重启之间保持一致。

2

按照上文所述在 app 配置中添加 intentFilters。将 host 值替换为 Ngrok URL:my-custom-domain.ngrok.io

3

使用 --tunnel 标志启动你的开发服务器:

Terminal
npx expo start --tunnel

4

在你的设备上编译开发构建:

Terminal
npx expo run:android

5

使用以下 adb 命令启动 intent activity,并在你的应用中打开链接,或者在设备的 web 浏览器中输入自定义域名链接。

Terminal
adb shell am start -a android.intent.action.VIEW -c android.intent.category.BROWSABLE -d "https://my-custom-domain.ngrok.io/" <your-package-name>

故障排查

以下是一些在实现 Android App Links 时帮助你排查问题的常见建议:

  • 确保你的网站通过 HTTPS 提供服务,并且内容类型为 application/json
  • 验证 Android app links
  • Android 验证可能需要 20 秒或更长时间才会生效,因此请确保等待其完成。
  • 如果你更新了网页文件,请重新构建原生应用,以触发供应商端(Google)的服务器更新