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

Expo SDK 53中如何有条件地在Android构建中排除指定Expo包?

Expo SDK 53中如何有条件地在Android构建中排除指定Expo包?

我刚梳理清楚SDK53里条件排除Expo Android包的正确姿势,先给你拆解核心变化,再给可行的代码示例,顺便解决你之前遇到的「日志显示排除但包仍被包含」的疑惑。

先明确SDK53的核心变化

在SDK53里,useExpoModules的调用逻辑彻底改了——它不再接收任何参数,所有自动链接的配置(包括排除包)都要先通过expoAutolinking这个扩展对象设置属性,再调用无参的useExpoModules()。你之前在SDK52里直接传参的写法,在53里完全不生效,这也是你报错的根源。

正确的条件排除写法

你需要在调用useExpoModules()之前,根据自定义条件设置expoAutolinking.exclude属性,而不是在调用方法时传参。下面给你两种常用Gradle语法的示例:

Groovy版本(settings.gradle)

plugins {
  id("expo-autolinking-settings")
}

// 这里替换成你的条件判断,比如检查环境变量、构建变体等
def shouldExcludePackages = System.getenv("EXCLUDE_NON_ESSENTIAL_PACKAGES") == "true"

if (shouldExcludePackages) {
  // 注意包名要和node_modules里的完全一致,带scope的包别漏了@前缀
  expoAutolinking.exclude = [
    "expo-maps",
    "expo-splash-screen",
    "react-native-reanimated",
    "@expo/ui"
  ]
} else {
  // 不需要排除时,要么设为空列表,要么不写(默认就是不排除任何包)
  expoAutolinking.exclude = []
}

// 最后必须调用无参的useExpoModules
expoAutolinking.useExpoModules()

Kotlin DSL版本(settings.gradle.kts)

plugins {
  id("expo-autolinking-settings")
}

val shouldExcludePackages = System.getenv("EXCLUDE_NON_ESSENTIAL_PACKAGES") == "true"

if (shouldExcludePackages) {
  expoAutolinking.exclude = listOf(
    "expo-maps",
    "expo-splash-screen",
    "react-native-reanimated",
    "@expo/ui"
  )
} else {
  expoAutolinking.exclude = emptyList()
}

expoAutolinking.useExpoModules()

解决你遇到的「日志显示排除但包仍被包含」问题

如果你的日志已经显示exclude列表正确,但包还是被加入构建,可以排查这几个点:

  1. 时机是否正确:确保设置exclude的代码在useExpoModules()之前执行——如果调用方法后再设置属性,配置根本不会被读取。
  2. 包名是否准确:检查包名和node_modules里的完全一致,比如带scope的包(@expo/ui)不能漏掉@,大小写也要严格匹配。
  3. 是否有配置覆盖:排查项目里有没有其他脚本、插件或gradle文件修改了expoAutolinking.exclude的值,比如某些构建变体的配置可能会覆盖全局设置。
  4. 清理构建缓存:有时候Gradle缓存会残留旧的链接逻辑,试试执行./gradlew clean后再重新构建Android项目。

最后再划个重点

  • 所有配置必须在useExpoModules()之前完成,不然设置的属性不会生效
  • 包名一定要精准匹配,拼写错误会直接导致排除失败
  • 如果不需要排除任何包,直接调用expoAutolinking.useExpoModules()即可,无需额外配置

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.07 12:04:50