来自 Cordova 的流星运行 android-spawn ENOENT 和 gradle 错误
Posted
技术标签:
【中文标题】来自 Cordova 的流星运行 android-spawn ENOENT 和 gradle 错误【英文标题】:meteor run android- spawn ENOENT and gradle errors from Cordova 【发布时间】:2016-07-08 18:21:58 【问题描述】:我正在尝试在 android 设备和/或模拟器上运行 Meteor 项目。当我运行meteor run --verbose android
或meteor run --verbose android-device
时,出现与Cordova 无法找到某些gradle
文件相关的错误。这是我的控制台的一些输出:
sarah@sarah-ThinkPad-X220:~/simple-todos$ meteor run --verbose android
Getting installed version for platform android in Cordova project
Checking Cordova requirements for platform Android
[[[[[ ~/simple-todos ]]]]]
=> Started proxy.
=> Started MongoDB.
Local package version is up-to-date: autopublish@1.0.4
<... removed some other "Local package" messages here ...>
Preparing Cordova project from app bundle
Copying resources for mobile apps
Writing new config.xml
Preparing Cordova project for platform Android
Running Cordova app for platform Android with options --emulator
ANDROID_HOME=/home/sarah/Android/Sdk/ |
JAVA_HOME=/usr/lib/jvm/default-java
=> Started your app.
=> App running at: http://localhost:3000/
WARNING : no emulator specified, defaulting to nexus4
Waiting for emulator...oid Emulator |
emulator: UpdateChecker: skipped version check
BOOT COMPLETEpp on Android Emulator -
cp: no such file or directory: /home/sarah/Android/Sdk/tools/templates/gradle/wrapper/gradlew
chmod: File not found: /home/sarah/simple-todos/.meteor/local/cordova-build/platforms/android/gradle/wrapper/gradle-wrapper.properties
sed: no such file or directory: /home/sarah/simple-todos/.meteor/local/cordova-build/platforms/android/gradle/wrapper/gradle-wrapper.properties
Running: /home/sarah/simple-todos/.meteor/local/cordova-build/platforms/android/gradlew cdvBuildDebug -b /home/sarah/simple-todos/.meteor/local/cordova-build/platforms/android/build.gradle -PcdvBuildArch=x86 -Dorg.gradle.daemon=true
events.js:72app on Android Emulator \
throw er; // Unhandled 'error' event
^
Error: spawn ENOENT
at errnoException (child_process.js:1011:11)
at Process.ChildProcess._handle.onexit (child_process.js:802:34)
=> Errors executing Cordova commands:
While running Cordova app for platform Android with options --emulator:
Error: Command failed:
/home/sarah/simple-todos/.meteor/local/cordova-build/platforms/android/cordova/run --emulator
at ChildProcess.exitCallback (/tools/utils/processes.js:137:23)
at ChildProcess.emit (events.js:98:17)
at Process.ChildProcess._handle.onexit (child_process.js:820:12)
ExitWithCode:1
确实,它试图访问的文件和目录不存在。 $ANDROID_HOME/tools/template/gradle/wrapper
没有目录 gradlew
sarah@sarah-ThinkPad-X220:~/Android/Sdk/tools/templates/gradle/wrapper$ ls
gradle
同样,我的~/simple-todos/.meteor/local/cordova-build/platforms/android/gradle/wrapper
目录中根本没有文件,所以也没有gradle-wrapper.properties
。
我也很不确定spawn ENOENT
错误的含义。
我该如何解决这个问题?
编辑:我想测试 gradle 在我的机器上是否能正常工作,所以我在 Android Studio 中制作了一个应用程序并在我的手机上运行它——运行良好。我的 Meteor 项目仍然无法在 Android 上运行,但我认为这告诉我 gradle 正在我的计算机上(某处)工作。
编辑:我在我的计算机上搜索了一个gradlew
目录,我发现的唯一目录在android-studio
中,而不是在我的$ANDROID_HOME
(~\Android/Sdk
) 中。不确定如何处理此信息,但似乎相关。
编辑我想到gradle -v
的输出可能有用:
$ gradle -v
------------------------------------------------------------
Gradle 2.5
------------------------------------------------------------
Build time: 2015-08-31 14:26:53 UTC
Build number: none
Revision: UNKNOWN
Groovy: 2.4.3
Ant: Apache Ant(TM) version 1.9.6 compiled on July 8 2015
JVM: 1.7.0_95 (Oracle Corporation 24.95-b01)
OS: Linux 4.2.0-23-generic amd64
【问题讨论】:
我想知道这是否对我有帮助:guides.codepath.com/android/Getting-Started-with-Gradle 这可能会有所帮助,至少有一点帮助:docs.gradle.org/current/userguide/gradle_wrapper.html 【参考方案1】:初始免责声明:我对您在 android+gradle 上使用的特定工具不是很熟悉,但我会尽力提供帮助。
这篇值得一读:https://docs.gradle.org/current/userguide/gradle_wrapper.html
另外,您可能希望首先在系统上设置 gradle,并仔细检查 gradle home 是否已设置(*并非总是必要的,但取决于 android studio 等其他东西自动拉入):@987654322 @
我的猜测是,您正在使用的工具正在尝试查找它期望在您的项目中可用的系统 gradle 和/或 gradlew...而且它正在混淆。
【讨论】:
以上是关于来自 Cordova 的流星运行 android-spawn ENOENT 和 gradle 错误的主要内容,如果未能解决你的问题,请参考以下文章
在流星应用程序中如何在cordova config.xml中添加orgin = *?
如何“流星运行 android-device”到我的流星服务器?