為 Android 設定應用連結
深度連結是一種透過 URI 啟動應用程式的機制。此 URI 包含方案、主機和路徑,並開啟應用程式到特定螢幕。
“應用連結”是一種深度連結,它使用 http 或 https,並且僅適用於 Android 裝置。
設定應用連結需要擁有一個 Web 域名。否則,請考慮使用 Firebase Hosting 或 GitHub Pages 作為臨時解決方案。
設定深度連結後,可以對其進行驗證。要了解更多資訊,請參閱驗證深度連結。
1. 定製 Flutter 應用
#編寫一個可以處理傳入 URL 的 Flutter 應用程式。本示例使用 go_router 包來處理路由。Flutter 團隊維護 go_router 包。它提供了一個簡單的 API 來處理複雜的路由場景。
要建立新應用程式,請鍵入
flutter create <app-name>flutter create deeplink_cookbook要在應用程式中包含
go_router包,請將go_router的依賴項新增到專案中要將
go_router包新增為依賴項,請執行flutter pub addflutter pub add go_router要處理路由,請在
main.dart檔案中建立一個GoRouter物件main.dartdartimport 'package:flutter/material.dart'; import 'package:go_router/go_router.dart'; void main() => runApp(MaterialApp.router(routerConfig: router)); /// This handles '/' and '/details'. final router = GoRouter( routes: [ GoRoute( path: '/', builder: (_, _) => Scaffold( appBar: AppBar(title: const Text('Home Screen')), ), routes: [ GoRoute( path: 'details', builder: (_, _) => Scaffold( appBar: AppBar(title: const Text('Details Screen')), ), ), ], ), ], );
2. 修改 AndroidManifest.xml
#使用 VS Code 或 Android Studio 開啟 Flutter 專案。
導航到
android/app/src/main/AndroidManifest.xml檔案。在帶有
.MainActivity的<activity>標籤內新增以下元資料標籤和 intent 過濾器。將
example.com替換為您自己的 Web 域名。xml<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.com" /> <data android:scheme="https" /> </intent-filter>
3. 託管 assetlinks.json 檔案
#使用您擁有的域名的 Web 伺服器託管 assetlinks.json 檔案。此檔案告訴移動瀏覽器要開啟哪個 Android 應用程式,而不是瀏覽器。要建立該檔案,請獲取您在上一步中建立的 Flutter 應用程式的包名以及您將用於構建 APK 的簽名金鑰的 sha256 指紋。
包名
#在 AndroidManifest.xml 中的 <manifest> 標籤下的 package 屬性中找到包名。包名通常採用 com.example.* 格式。
sha256 指紋
#此過程可能因 apk 的簽名方式而異。
使用 Google Play 應用簽名
#您可以直接從 Play 開發者控制檯找到 sha256 指紋。在 Play 控制檯中開啟您的應用,在 釋出 > 設定 > 應用完整性 > 應用簽名 標籤下。

使用本地金鑰庫
#如果將金鑰儲存在本地,可以使用以下命令生成 sha256
keytool -list -v -keystore <path-to-keystore>assetlinks.json
#託管檔案應類似於以下內容
[{
"relation": ["delegate_permission/common.handle_all_urls"],
"target": {
"namespace": "android_app",
"package_name": "com.example.deeplink_cookbook",
"sha256_cert_fingerprints":
["FF:2A:CF:7B:DD:CC:F1:03:3E:E8:B2:27:7C:A2:E3:3C:DE:13:DB:AC:8E:EB:3A:B9:72:A1:0E:26:8A:F5:EC:AF"]
}
}]將
package_name值設定為您的 Android 應用程式 ID。將 sha256_cert_fingerprints 設定為您從上一步獲得的值。
將檔案託管在類似於以下內容的 URL 上:
<webdomain>/.well-known/assetlinks.json驗證您的瀏覽器是否可以訪問此檔案。
測試
#您可以使用真實裝置或模擬器來測試應用連結,但首先請確保您已在裝置上至少執行過一次 flutter run。這可以確保 Flutter 應用程式已安裝。

要僅測試應用設定,請使用 adb 命令
adb shell 'am start -a android.intent.action.VIEW \
-c android.intent.category.BROWSABLE \
-d "http://<web-domain>/details"' \
<package name>要測試 Web 和應用設定,必須直接透過 Web 瀏覽器或另一個應用點選連結。一種方法是建立 Google 文件,新增連結,然後點選它。
如果一切設定正確,Flutter 應用程式將啟動並顯示詳細資訊螢幕
