将app.json改为app.config.js后Expo深度链接失效问题排查
深度链接失效问题排查方案
针对你将app.json改为app.config.js后深度链接失效的问题,结合仅修改版本号配置的背景,问题大概率出在环境变量处理或配置解析环节,以下是具体排查方向:
1. 环境变量类型错误或未正确注入
- 核心问题:Android的
versionCode要求是数字类型,但环境变量默认都是字符串,直接赋值会导致Android配置生成异常,间接破坏intentFilters的正确注册;如果APP_VERSION未正确加载,version字段会变成undefined,干扰整体配置的解析逻辑。 - 验证方法:临时替换为固定值测试:
重新构建后若深度链接恢复,说明是环境变量的问题。version: "1.0.0", // ... android: { // ... versionCode: 1, } - 解决方式:
- 确保构建时环境变量已正确注入(EAS Build需在项目设置中配置,本地构建需使用
expo-dotenv插件并创建.env文件)。 - 将
versionCode转为数字类型:versionCode: parseInt(process.env.VERSION_CODE, 10),
- 确保构建时环境变量已正确注入(EAS Build需在项目设置中配置,本地构建需使用
2. 配置解析的隐性错误
- 核心问题:若环境变量未定义,
version或versionCode会变为undefined,Expo解析app.config.js时可能出现隐性错误,导致intentFilters(Android)或associatedDomains(iOS)未被正确生成到原生配置文件中。 - 验证方法:查看构建日志,搜索是否有
version is undefined或versionCode must be a number这类警告/错误信息。
3. 原生配置生成偏差
- 核心问题:
app.config.js的动态配置可能导致Expo生成原生配置文件时出现偏差,比如intentFilters的结构未被正确解析。 - 验证方法:构建后解压APK/IPA,检查原生配置:
- Android:查看
AndroidManifest.xml中是否存在对应share.huddle.am的<intent-filter>节点。 - iOS:查看
Info.plist中AssociatedDomains和NSAppTransportSecurity的配置是否正确。
- Android:查看
内容的提问来源于stack exchange,提问作者Sahak 12




