安卓应用链接

了解如何配置 Android 应用链接以从标准 Web URL 打开你的 Expo 应用。


要为你的应用配置 Android 应用链接,你需要:

¥To configure Android App Links for your app, you need to:

  • 在项目的应用配置中添加 intentFilters 并将 autoVerify 设置为 true

    ¥Add intentFilters and set autoVerify to true in your project's app config

  • 设置双向关联以验证你的网站和原生应用

    ¥Set up two-way association to verify your website and native app

Watch: Set up Android App Links with Expo Router
Watch: Set up Android App Links with Expo Router

intentFilters 添加到应用配置

¥Add intentFilters to the app config

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

¥Configure your app config by adding the android.intentFilters property and setting the autoVerify attribute to true. Specifying autoVerify is required for Android App Links to work correctly.

以下示例显示了一个基本配置,使你的应用可以出现在标准 Android 对话框中,作为处理指向 webapp.io 域的任何链接的选项。它还使用常规 https 方案,因为 安卓应用链接支持的 SDK 版本 不同。

¥The following example shows a basic configuration that enables your app to appear in the standard Android dialog as an option for handling any links to the webapp.io domain. It also uses the regular https scheme since Android App Links are different from standard deep links.

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

在应用/扩展之间共享数据库(iOS)

¥Set up two-way association

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

¥To setup two-way association between the website and Android app, you will need the following:

  • 网站验证:这需要在 /.well-known 目录中创建一个 assetlinks.json 文件并将其托管在目标网站上。此文件用于验证从给定链接打开的应用是否是正确的应用。

    ¥Website verification: This requires creating a assetlinks.json file inside the /.well-known directory and hosting it on the target website. This file is used to verify that the app opened from a given link is the correct app.

  • 原生应用验证:这需要某种形式的引用目标网站域 (URL) 的代码签名。

    ¥Native app verification: This requires some form of code signing that references the target website domain (URL).

创建 assetlinks.json 文件

¥Create assetlinks.json file

1

Create an assetlinks.json file for the website verification (also known as digital asset links file) at /.well-known/assetlinks.json. This file is used to verify that the app opened for a given link.

If you're using Expo Router to build your website (or any other modern React framework such as Remix, Next.js, and so on), create assetlinks.json at public/.well-known/assetlinks.json. For legacy Expo webpack projects, create the file at web/.well-known/assetlinks.json.

2

Get the value of package_name from your app config, under android.package.

3

Get the value of sha256_cert_fingerprints from your app's signing certificate. If you're using EAS Build to build your Android app, after creating a build:

  • Run eas credentials -p android command, and select the build profile to get its fingerprint value.
  • Copy the fingerprint value listed under SHA256 Fingerprint.
Alternate method to obtain the SHA256 certificate fingerprint from Google Play Console

If you're not using EAS to manage code signing, you can find the sha256_cert_fingerprints by building and submitting your app manually to the Google Play Console:

  • Inside the Google Play Console's dashboard, go to Release > Setup > App Signing.
  • Find the correct Digital Asset Links JSON snippet for your app.
  • Copy the value looks like 14:6D:E9:83... and paste it into your public/.well-known/assetlinks.json file under sha256_cert_fingerprints.

4

Add package_name and sha256_cert_fingerprints to the assetlinks.json file:

public/.well-known/assetlinks.json
[
  {
    "relation": ["delegate_permission/common.handle_all_urls"],
    "target": {
      "namespace": "android_app",
      "package_name": "com.example",
      "sha256_cert_fingerprints": [
        // Supports multiple fingerprints for different apps and keys
        "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"
      ]
    }
  }
]
You can add multiple fingerprints to the sha256_cert_fingerprints array to support different variants of your app. For more information, see Android's documentation on how to declare website associations.

Host assetlinks.json file

Host the assetlinks.json file using a web server with your domain. This file must be served with the content-type application/json and accessible over an HTTPS connection. Verify that your browser can access this file by typing the complete URL in the address bar.

Native app verification

Install the app on an Android device to trigger the Android app verification process.

Once you have your app opened, see Handle links into your app for more information on how to handle inbound links and show the user the content they requested.

Debugging

The Expo CLI enables you to test Android App Links without deploying a website. Utilizing the --tunnel functionality, you can forward your dev server to a publicly available HTTPS URL.

1

Set the environment variable EXPO_TUNNEL_SUBDOMAIN=my-custom-domain where my-custom-domain is a unique string that you use during development. This ensures that your tunnel URL is consistent across dev server restarts.

2

Add intentFilters to your app config as described above. Replace the host value with a Ngrok URL: my-custom-domain.ngrok.io.

3

Start your dev server with the --tunnel flag:

Terminal
npx expo start --tunnel

4

Compile the development build on your device:

Terminal
npx expo run:android

5

Use the following adb command to start the intent activity and open the link on your app or type the custom domain link in your device's web browser.

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>

故障排除

¥Troubleshooting

以下是一些在实现 Android 应用链接时帮助你排除故障的常见提示:

¥Here are some common tips to help you troubleshoot when implementing Android App Links:

  • 确保你的网站通过 HTTPS 提供服务,并且内容类型为 application/json

    ¥Ensure your website is served over HTTPS and with the content-type application/json

  • 验证 Android 应用链接

    ¥Verify Android app links

  • Android 验证可能需要 20 秒或更长时间才能生效,因此请务必等到验证完成。

    ¥Android verification may take 20 seconds or longer to take effect, so be sure to wait until it is completed.

  • 如果你更新了 Web 文件,请重建原生应用以在供应商端(Google)触发服务器更新

    ¥If you update your web files, rebuild the native app to trigger a server update on the vendor side (Google)