Expo SDK 48 Android 13深度链接无法通过二维码打开问题求助
解决方案
1. 修正AndroidManifest.xml的深度链接配置
确保承载深度链接的Activity(通常是MainActivity)的intent-filter添加android:autoVerify="true"属性,同时确认data标签的scheme、host配置准确:
<activity android:name=".MainActivity" ...> <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" /> <!-- 替换为你的深度链接scheme和host --> <data android:scheme="your-custom-scheme" android:host="your-domain.com" /> </intent-filter> </activity>
2. 配置Digital Asset Links验证文件
Android 13要求App Links必须通过域名验证,需在你的域名根目录或.well-known目录下放置assetlinks.json文件,格式如下:
[{ "relation": ["delegate_permission/common.handle_all_urls"], "target": { "namespace": "android_app", "package_name": "你的应用包名", "sha256_cert_fingerprints": ["应用签名的SHA256指纹"] } }]
- 获取SHA256指纹:执行
keytool -list -v -keystore 你的签名文件路径 -alias 签名别名命令提取 - 验证文件可访问性:通过
https://你的域名/.well-known/assetlinks.json确认能正常加载
3. 适配Expo SDK 48的原生代码变更
SDK 48升级后需确认原生代码的链接处理逻辑:
- 在
MainActivity.java或MainActivity.kt中确保传递intent给React Native:
// Java示例 @Override protected void onNewIntent(Intent intent) { super.onNewIntent(intent); getReactInstanceManager().onNewIntent(intent); }
- 检查Module级
build.gradle的API版本配置,确保与SDK 48兼容:
android { compileSdkVersion 33 defaultConfig { targetSdkVersion 33 ... } }
4. 清理缓存并重新构建
- 进入项目
android目录,执行./gradlew clean清除构建缓存 - 卸载设备上的旧应用,重新安装构建后的APK
- 用命令测试深度链接:
adb shell am start -W -a android.intent.action.VIEW -d "your-custom-scheme://your-domain.com/test-path"
5. 手动配置链接关联(自动验证失效时)
如果自动配置仍不生效,可手动在设备中设置:
- 打开设置 → 应用 → 你的应用 → 进入“默认应用”或“链接处理”选项
- 找到对应链接的scheme/host,将你的应用设为默认处理应用
内容的提问来源于stack exchange,提问作者tiborelsan
相关产品推荐
相关产品推荐

