Bubblewrap 在 gradlew assembleRelease 期间失败,并显示“无法为对象堆保留足够的空间”

问题描述 投票:0回答:1

我尝试在 Windows 上使用 Bubblewrap CLI 构建可信 Web 活动 (TWA) 项目,但在运行

gradlew.bat assembleRelease
命令时不断遇到错误。这是完整的错误消息:

Unable to start the daemon process.
This problem might be caused by incorrect configuration of the daemon.
For example, an unrecognized JVM option is used. For more details on the daemon, please refer to https://docs.gradle.org/8.8/userguide/gradle_daemon.html in the Gradle documentation.

...

Error occurred during initialization of VM
Could not reserve enough space for 1572864KB object heap

环境详情:

  • 操作系统:Windows
  • Java:通过 Bubblewrap 安装
  • Gradle:版本 8.8
  • Bubblewrap CLI:最新版本(通过 npm 安装)

有人对解决这个问题有建议吗?我有什么遗漏的吗?

任何帮助将不胜感激!

android gradle npm jvm bubblewrap
1个回答
0
投票

好的,这是一个可能的气泡包装解决方案,在这种情况下对我有用。它实际上类似于更通用的 Gradle 堆内存问题,该问题的出现是因为 Bubblewrap 设置的默认 Gradle JVM 参数需要的内存多于系统可以分配的内存(可能存在内存泄漏)。

因此,我将

org.gradle.jvmargs=-Xmx1024M
添加到
gradle.properties
文件中,解决了问题。

!!但是,Bubblewrap 在更新和构建期间会覆盖此文件(

bubblewrap update
bubblewrap build
),这可能会令人沮丧。

为了使此更改持久存在,我使用由 npm 脚本node 启动的 js 脚本 自动化了该过程。

const { execSync } = require('child_process');
const { version } = require('./package.json');
const fs = require('fs');

try {

  // run update based on package.json version
  execSync(`bubblewrap update --appVersionName=${version} --manifest=twa-manifest.json`, { stdio: 'inherit' });

  // replace gradle.properties as said
  const gradlePropertiesPath = 'gradle.properties';
  let gradleProperties = fs.readFileSync(gradlePropertiesPath, 'utf8');
  gradleProperties = gradleProperties.replace('-Xmx1536m', '-Xmx1024M');
  fs.writeFileSync(gradlePropertiesPath, gradleProperties);

  // run build after it
  execSync(`bubblewrap build`, { stdio: 'inherit' });
} catch (error) {
  console.error('Failed to run Bubblewrap update and build:', error.message);
  process.exit(1);
}
© www.soinside.com 2019 - 2024. All rights reserved.