You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Manifest配置异常:App Linking无法跳转至应用

安卓App深度链接跳转失败排查方案

问题背景

已配置好assetlinks.json,iOS端URL跳转功能正常,但安卓端Manifest配置后,链接仍跳转至网页而非App。使用adb命令测试也未唤起App:

adb shell am start -a android.intent.action.VIEW -c android.intent.category.BROWSABLE -d "https://myappwebsite.com/joinGroup?group_id=12345"

用户提供的Android Manifest代码:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.myApp.app"
    xmlns:tools="http://schemas.android.com/tools">

    <application
        android:label="myApp"
        android:name="${applicationName}"
        android:icon="@mipmap/ic_launcher">

        <activity
            android:name=".MainActivity"
            tools:replace="android:name"
            android:exported="true"
            android:launchMode="singleTop"
            android:theme="@style/LaunchTheme"
            android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
            android:hardwareAccelerated="true"
            android:windowSoftInputMode="adjustResize">

            <meta-data
                android:name="io.flutter.embedding.android.NormalTheme"
                android:resource="@style/NormalTheme"/>

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

            <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" />
                    <data android:scheme="http" />
                   <data android:host="myappwebsite.com" />
                   <data android:pathPrefix="/joinGroup"/>
            </intent-filter>

            <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" />
                    <data android:scheme="http" />
                   <data android:host="myappwebsite.com" />
                   <data android:pathPrefix="/channel"/>
            </intent-filter>
        </activity>

        <meta-data
            android:name="flutterEmbedding"
            android:value="2"/>

        <meta-data
            android:name="com.google.android.gms.version"
            android:value="@integer/google_play_services_version"/>
    </application>

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.VIBRATE"/>
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
    <uses-permission android:name="android.permission.WAKE_LOCK"/>
    <uses-permission android:name="com.android.alarm.permission.SET_ALARM"/>
    <uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
</manifest>

排查与解决步骤

1. 临时禁用autoVerify测试

android:autoVerify="true"要求assetlinks.json验证完全通过才会触发App跳转,模拟器可能因网络或签名问题无法完成验证。先移除该属性,重新打包安装后用简化的adb命令测试:

adb shell am start -a android.intent.action.VIEW -d "https://myappwebsite.com/joinGroup?group_id=12345"

如果能唤起App,说明问题出在autoVerify的验证环节。

  • 确认文件路径为https://myappwebsite.com/.well-known/assetlinks.json,可直接在浏览器访问检查内容。
  • 确保文件中package_name与Manifest的com.myApp.app完全一致(大小写敏感)。
  • 检查sha256_cert_fingerprints是否与当前安装包的签名指纹匹配:
    • Debug包指纹可通过以下命令获取:
      keytool -list -v -keystore ~/.android/debug.keystore
      
      默认密码为android,复制输出中的SHA256值。
    • Release包需使用对应的签名文件获取指纹。

3. 调整Intent Filter的配置逻辑

将同一个Intent Filter中的多个<data>标签按scheme分组,避免逻辑歧义:

<intent-filter>
    <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="myappwebsite.com" 
        android:pathPrefix="/joinGroup"/>
    <data 
        android:scheme="http" 
        android:host="myappwebsite.com" 
        android:pathPrefix="/joinGroup"/>
</intent-filter>

4. 测试浏览器唤起

在模拟器自带浏览器中输入目标链接,观察是否出现"打开应用"的弹窗提示。若没有,说明Intent Filter未被系统识别,需重新检查Manifest的语法和配置。

5. 确认App的exported属性

确保MainActivity的android:exported="true"已正确设置,这是安卓12及以上版本接收外部Intent的必要条件。


内容的提问来源于stack exchange,提问作者Hudson Wolf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 05:33:13