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

如何解决Expo构建Android时expo-modules-core的CMake编译错误?

解决Expo Android构建中expo-modules-core编译失败及JS警告问题

一、搞定expo-modules-core的C++编译错误(std::weak_ptr模板推导失败)

  • 升级expo-modules-core到适配版本:
    直接在项目根目录执行npm install expo-modules-core@latest或yarn add expo-modules-core@latest,注意版本要和你的Expo SDK对应——比如SDK 49配~1.5.12,SDK 50配~1.11.1,避免版本不兼容。
  • 清理Gradle缓存:
    本地调试时,进入Android目录执行./gradlew clean;使用EAS构建的话,修改eas.json添加清理步骤:
    {
      "build": {
        "production": {
          "android": {
            "gradleCommand": ":app:clean :app:assembleRelease"
          }
        }
      }
    }
    
  • 降级NDK版本:
    若因NDK版本过高引发模板推导问题,在android/build.gradle中指定兼容版本:
    buildscript {
      ext {
        ndkVersion = "25.2.9519653"
      }
    }
    

二、处理JS打包阶段的警告(未声明变量、重复属性)

  • 补全未声明变量:
    针对警告里的变量逐个排查,用let/const提前声明,避免隐式全局变量;如果是第三方库导致的,添加/* global 变量名 */注释消除警告。
  • 合并重复属性赋值:
    检查代码中是否存在多次给同一对象设置相同属性的情况,合并为单次赋值;若为依赖库问题,尝试升级依赖版本,或在metro配置中忽略对应文件的警告。
  • 开启严格模式提前排查问题:
    在babel.config.js中添加严格模式插件,提前发现潜在问题:
    module.exports = function(api) {
      api.cache(true);
      return {
        presets: ['babel-preset-expo'],
        plugins: ['@babel/plugin-transform-strict-mode']
      };
    };
    

三、额外排查动作

  • 重新同步依赖:
    执行npm install或yarn install后,运行npx expo prebuild --clean重新生成Android原生文件,确保依赖同步到位。
  • 检查SDK兼容性:
    用npx expo doctor扫描依赖冲突,按照提示修复,保证所有包版本与当前Expo SDK匹配。

内容的提问来源于stack exchange,提问作者Karunaaharan Bavaram

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 11:53:15