我尝试在 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
环境详情:
有人对解决这个问题有建议吗?我有什么遗漏的吗?
任何帮助将不胜感激!
好的,这是一个可能的气泡包装解决方案,在这种情况下对我有用。它实际上类似于更通用的 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);
}