Flutter项目APK构建后DeepLink失效问题求助
可能遗漏的排查点
1. Release签名密钥与assetlinks.json不匹配
你当前使用的是debug密钥库的指纹,但release APK是用正式签名密钥打包的,assetlinks.json里的sha256_cert_fingerprints必须对应release密钥的指纹,而非debug的。
- 获取release密钥指纹的命令:
keytool -list -v -keystore [你的release密钥库路径] -alias [密钥别名] - 将输出的SHA-256指纹(冒号分隔的大写格式)替换到
assetlinks.json中对应的字段。
2. AndroidManifest.xml配置仅对Debug生效
检查AndroidManifest.xml中的DeepLink配置是否被限制在Debug变体中:
- 确保
<intent-filter>没有被android:debuggable="true"或build.gradle的Debug配置包裹,要对所有Build变体生效。 - 确认配置包含必要标签,且
android:autoVerify="true"必须添加(系统依赖该标签验证assetlinks.json):<activity android:name=".MainActivity" android:exported="true"> <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="你的域名.com" /> </intent-filter> </activity>
3. assetlinks.json的放置与访问问题
- 必须放在域名根目录下的
.well-known文件夹中,路径为https://你的域名.com/.well-known/assetlinks.json。 - 确保该文件可公开访问:用浏览器直接访问,确认能返回正确的JSON格式,无防盗链、登录限制。
- 检查JSON格式正确性:
package_name必须是应用的正式包名(如com.yourcompany.yourapp),指纹格式与密钥输出完全一致。
4. Release APK打包签名配置错误
确认android/app/build.gradle中Release构建类型已关联正式签名密钥:
signingConfigs { release { keyAlias '你的密钥别名' keyPassword '密钥密码' storeFile file('path/to/release.keystore') storePassword '密钥库密码' } } buildTypes { release { signingConfig signingConfigs.release // 其他编译配置 } }
如果打包时未指定正式签名,APK会被默认的debug密钥签名,导致指纹不匹配。
5. 缓存与安装残留问题
- 先彻底卸载设备上的Debug版本应用,再安装Release APK。
- 执行
adb shell pm clear com.yourcompany.yourapp清除应用缓存,重启设备后再次测试DeepLink。
6. 测试方式的问题
- 用命令行直接触发测试,避免浏览器缓存或默认应用干扰:
adb shell am start -W -a android.intent.action.VIEW -d "https://你的域名.com/测试路径" com.yourcompany.yourapp - 如果用浏览器测试,需在系统设置中确认该域名的默认打开应用已设置为你的Release版本应用。
内容的提问来源于stack exchange,提问作者Kabergrammer
相关产品推荐
相关产品推荐

