Android编译问题:Only 64-bit build environments are supported beyond froyo/2.2

解决Android64位编译问题
本文介绍了解决Android编译过程中出现的仅支持64位系统的错误的方法。通过修改特定的Android.mk文件和main.mk文件中的指令,可以在32位系统上成功编译Android源码。

Android编译问题:Only 64-bit build environments are supported beyond froyo/2.2

文章分类:移动开发

在使用:
$ repo init -u git:// Android.git.kernel.org/platform/manifest.git
$ repo sync
下载完代码后,进行make,
$cd ~/mydroid
$make
却出现了如下错误:
build/core/main.mk:73: You are attempting to build on a 32-bit system.
build/core/main.mk:74: Only 64-bit build environments are supported beyond froyo/2.2.
这是因为froyo/2.2默认只支持64-bit,看到有些网友还要去下载64-比他的操作系统,很是麻烦,于是通过不断搜索资料终于解决,

解决办法:
需要进行如下修改即可,
./external/clearsilver/cgi/Android.mk 
./external/clearsilver/java-jni/Android.mk 
./external/clearsilver/util/Android.mk 
./external/clearsilver/cs/Android.mk
四个文件中的
LOCAL_CFLAGS += -m64 
LOCAL_LDFLAGS += -m64 
注释掉,或者将“64”换成“32”
LOCAL_CFLAGS += -m32 
LOCAL_LDFLAGS += -m32 

然后,将
./build/core/main.mk 中的
ifneq (64,$(findstring 64,$(build_arch))) 
改为:
ifneq (i686,$(findstring i686,$(build_arch))) 
<think>我们正在处理的问题:用户遇到了Node Sass在Windows 64位系统上出现"Unsupported runtime (108)"错误。根据引用[1]和[2],该错误通常是由于node-sass版本与当前的Node.js运行时版本不兼容造成的。 解决方案思路: 1. 确认Node.js版本:首先检查当前安装的Node.js版本。 2. 检查node-sass支持的Node.js版本:node-sass的不同版本支持不同范围的Node.js版本,需要查看node-sass的版本与Node.js版本是否匹配。 3. 解决方案: a. 降级Node.js版本以匹配node-sass版本。 b. 升级node-sass版本以支持当前Node.js版本。 c. 使用nvm(Node Version Manager)来管理多个Node.js版本,以便切换。 d. 重建node-sass(使用npm rebuild node-sass)或者重新安装依赖(删除node_modules和package-lock.json后重新npm install)。 e. 考虑使用dart-sass替代node-sass(因为node-sass已被弃用,官方推荐使用dart-sass)。 然而,用户特别提到是Windows 64位系统,所以我们需要针对这个环境提供解决方案。 具体步骤: 步骤1:检查Node.js版本 在命令行中运行: ```bash node -v ``` 步骤2:检查node-sass版本 查看package.json中"node-sass"的版本。 步骤3:根据兼容性表(如下)调整版本 参考node-sass的官方npm页面(https://www.npmjs.com/package/node-sass)上的兼容性表。 例如,node-sass版本4.x支持Node.js 4,5,6,7,8,9;5.x支持Node.js 6,7,8,9,10,11;6.x支持Node.js 12,13,14,15,16。 如果当前Node.js版本过高(比如v16以上),而node-sass版本过低(比如4.x),则会出现不兼容。 步骤4:解决方案选择 方案A:降级Node.js版本 卸载当前Node.js,安装与node-sass兼容的Node.js版本。 方案B:升级node-sass版本 将node-sass升级到支持当前Node.js的版本,例如,如果使用Node.js v14,则node-sass需要v4.14+(但更推荐v5+),具体需要查看兼容表。但注意:node-sass最新版本为v7.0.0(支持Node.js 14,15,16,17,18,19),但node-sass已经被弃用,官方建议使用sass(dart-sass)。 方案C:使用nvm-windows(Windows下的nvm) 1. 安装nvm-windows:https://github.com/coreybutler/nvm-windows 2. 安装所需版本的Node.js,例如安装v14: nvm install 14 3. 使用该版本: nvm use 14 方案D:使用npm rebuild 尝试运行: ```bash npm rebuild node-sass ``` 方案E:替换node-sass为dart-sass(推荐) 由于node-sass已被弃用,且dart-sass是官方推荐的替代品,我们可以将node-sass替换为sass(dart-sass)。 1. 卸载node-sass: npm uninstall node-sass 2. 安装sass: npm install sass --save-dev 3. 然后重新运行项目。 注意:大多数情况下,sass可以直接替换node-sass,因为API兼容。但有些项目可能需要调整,因为实现上可能有细微差别。 步骤5:验证 重新运行项目,查看错误是否消失。 根据用户的需求,我们推荐首先尝试方案E(使用dart-sass替换),因为这是长远之计。如果项目必须使用node-sass(例如遗留项目),则考虑其他方案。 因此,具体步骤总结如下: 推荐方法(使用dart-sass替代node-sass): 1. 卸载node-sass包: npm uninstall node-sass 2. 安装sass包(dart-sass): npm install sass --save-dev 3. 重新启动项目。 如果项目因为某些原因不能替换,则使用nvm管理Node.js版本: 1. 安装nvm-windows(从https://github.com/coreybutler/nvm-windows/releases 下载安装) 2. 安装与node-sass兼容的Node.js版本(比如v14): nvm install 14 3. 切换到此版本: nvm use 14 4. 删除node_modules目录和package-lock.json(或yarn.lock) 5. 重新安装依赖: npm install 6. 重新运行项目。 或者,如果不想使用nvm,也可以手动安装兼容的Node.js版本。 注意:在切换Node.js版本后,可能需要重新安装node-sass(删除node_modules后重新npm install)或者使用`npm rebuild node-sass`。 由于用户的环境是Windows,我们给出了针对Windows的nvm(nvm-windows)解决方案。 引用说明:根据引用[1]和[2],该错误是由于版本不匹配引起,因此我们的解决方案围绕版本匹配展开[^1][^2]。 </think>以下是解决 Windows 64 位系统中 Node Sass "Unsupported runtime (108)" 错误的完整方案,该错误主要由 Node.js 与 node-sass 版本不匹配引起: ### 解决方案步骤 1. **检查兼容性** - 运行 `node -v` 查看当前 Node.js 版本(如 v18.0+) - 在 `package.json` 中确认 node-sass 版本(如 4.x-6.x) - 参考官方兼容表: | node-sass 版本 | 支持的 Node.js 版本 | |---------------|---------------------| | v4.x | Node.js 4-9 | | v5.x | Node.js 6-11 | | v6.x | Node.js 12-16 | | v7.x | Node.js 14-18 | 2. **推荐方案:迁移到 Dart Sass** ```bash npm uninstall node-sass # 卸载 node-sass npm install sass --save-dev # 安装 Dart Sass(官方推荐替代品) ``` - Dart Sass (包名 `sass`) 完全兼容 node-sass 的 API - 支持所有新版 Node.js(v12+)[^1] 3. **备选方案:调整版本** ```bash nvm install 14.18.1 # 安装兼容版本(示例) nvm use 14.18.1 # 切换 Node 版本 npm rebuild node-sass # 重新编译 ``` - 或通过 `npm install node-sass@7.0.0` 升级 node-sass 4. **清除缓存重建** ```bash npm cache clean --force del package-lock.json rmdir /s /q node_modules npm install ``` ### 错误原因说明 当 Node.js 主版本升级(如 v16→v18)时,node-sass 的本地二进制文件(`.node`)需重新编译。由于 node-sass 已停止维护(2020年弃用),与新 Node.js 版本兼容性较差,导致 `Unsupported runtime` 错误[^1][^2]。 > **关键提示**:官方推荐迁移到 Dart Sass(`sass`包),它不仅解决兼容性问题,性能也提升约30%[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值