Expo提交Google Play报com.segment.analytics.android:analytics错误
问题根因
Expo SDK 45 内置原生依赖com.segment.analytics.android:analytics版本低于Google Play隐私合规要求的最低版本,该依赖属于Expo核心模块默认打包内容,和你是否主动引入第三方包、写了多少业务代码无关。Expo团队公示的修复仅合入了SDK 46及以上版本分支,SDK 45的存量维护分支未同步该补丁,所以哪怕你打空白页面的极简包,依然会触发上传报错。
你之前尝试的升降应用版本、换CLI版本、增减依赖等操作没有生效,核心原因是没有触碰到Expo内置原生依赖的版本配置。
解决步骤
按优先级选以下任意一种方案操作即可:
- 方案一(推荐,无额外配置成本):升级项目Expo SDK到46及以上稳定版本,高版本已经默认移除/升级了不合规的Segment SDK,升级后重新打包即可正常上传。
执行以下命令完成升级:# 升级expo核心版本 npm install expo@^46.0.0 # 自动对齐所有关联依赖的兼容版本 npx expo install --fix - 方案二(无法升级SDK时使用):通过EAS构建配置强制替换不合规的Segment SDK版本,不需要改动现有业务代码:
- 确保使用EAS Build构建,废弃旧的
expo build经典构建命令——经典构建服务已停止维护,不会同步任何依赖修复,无论本地怎么改配置,打出来的包都会携带旧版违规依赖。 - 在项目根目录新建
config-plugin.js文件,写入以下配置强制指定合规的Segment SDK版本:
const { withAppBuildGradle } = require('@expo/config-plugins'); module.exports = function forceSegmentVersion(config) { return withAppBuildGradle(config, (cfg) => { if (cfg.modResults.language === 'groovy') { cfg.modResults.contents += ` - 确保使用EAS Build构建,废弃旧的
configurations.all {
resolutionStrategy {
force 'com.segment.analytics.android:analytics:4.10.4'
}
}`;
}
return cfg;
});
};
3. 在`package.json`的expo配置段加入插件引用: ```json { "expo": { "plugins": ["./config-plugin.js"] } }
- 执行
eas build -p android --profile production重新打AAB生产包。
校验方法
构建完成后,可将AAB包解压检查classes.dex中的Segment类版本,确认依赖版本为4.10.4及以上后再上传,即可规避Google Play的版本拦截。
内容的提问来源于stack exchange,提问作者Balaji Jeeva
相关产品推荐
相关产品推荐

