2014-11-06 38 views
25

科爾多瓦構建Android給了我下面的ERRPhonegap/Cordova build android node_modules/q/q.js throw e;

node_modules/q/q.js:126 throw e; (*error details) 

這個問題已經被問過,但典型的回答關於PATH和ANDROID_HOME並沒有爲我工作。

我要把它放到代碼段,以避免SO提交問題

export HOME="/Users/rover" 
export ANDROID_SDK="$HOME/Documents/Dev/Android/adt-bundle-mac-x86_64-20140702/sdk" 
export ANDROID_HOME="$ANDROID_SDK/tools" 
export ANDROID_PLATFORM_TOOLS="$ANDROID_SDK/platform-tools" 
export PATH="$ANDROID_HOME:$ANDROID_PLATFORM_TOOLS:$ANDROID_SDK/build-tools:$PATH" 
export ANT_HOME="/usr/local/bin/ant" 
#export PATH="$PATH:$ANT_HOME/bin" 

我的環境變量:

$設置| grep的 「機器人\ | PATH」

ANDROID_HOME = /用戶/流動站/文件/開發/ Android設備/ ADT-束-MAC-x86_64-20140702/SDK /工具 ANDROID_PLATFORM_TOOLS = /用戶/流動站/文件/開發/ Android的/ adt-bundle-mac-x86_64-20140702/sdk/platform-tools ANDROID_SDK =/Users/rover/Documents/Dev/Android/adt-bundle-mac-x86_64-20140702/sdk PATH =/Users/rover/Documents /開發/安卓/ ADT-束-MAC-x86_64-20140702/SDK /工具:/用戶/流動站/文檔/開發/安卓/ ADT-束-MAC-x86_64-20140702/SDK /平臺的工具:/用戶/流動站/文檔/開發/安卓/ ADT-束-MAC-x86_64-20140702/SDK /編譯工具:在/ usr/local/bin目錄:在/ usr/bin中:/ bin中:/ usr/sbin目錄:/ sbin目錄中:/ opt/X11/bin

$ which ant 
/usr/local/bin/ant 
$ ls /usr/local/bin/ant 
/usr/local/bin/ant 

$ cordova --version 
4.0.0 

$ ant -v 
Apache Ant(TM) version 1.9.4 

我在Mac OSX 10.10(Yosemite)上可能會遇到Java 8的問題。可以關聯嗎?

$ Java的版本 Java版本 「1.8.0_05」 的Java(TM)SE運行時環境(建立1.8.0_05-B13) 的HotSpot的Java(TM)64位服務器VM(建25.5-B02,混合模式)

$ ant --execdebug 
exec "/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home/jre/bin/java" -classpath "/usr/local/Cellar/ant/1.9.4/libexec/lib/ant-launcher.jar" -Dant.home="/usr/local/Cellar/ant/1.9.4/libexec" -Dant.library.dir="/usr/local/Cellar/ant/1.9.4/libexec/lib" org.apache.tools.ant.launch.Launcher -cp "" 

(*error details) 

BUILD FAILED 
/Users/rover/Documents/Dev/Android/adt-bundle-mac-x86_64-20140702/sdk/tools/ant/build.xml:653: The following error occurred while executing this line: 
/Users/rover/Documents/Dev/Android/adt-bundle-mac-x86_64-20140702/sdk/tools/ant/build.xml:698: null returned: 1 

Total time: 1 second 

/Library/WebServer/Documents/Booster/core_ionic_git/platforms/android/cordova/node_modules/q/q.js:126 
        throw e; 
         ^
Error code 1 for command: ant with args: debug,-f,/Library/WebServer/Documents/Booster/core_ionic_git/platforms/android/build.xml,-Dout.dir=ant-build,-Dgen.absolute.dir=ant-gen 
Error: /Library/WebServer/Documents/Booster/core_ionic_git/platforms/android/cordova/build: Command failed with exit code 8 
    at ChildProcess.whenDone (/usr/local/lib/node_modules/cordova/node_modules/cordova-lib/src/cordova/superspawn.js:135:23) 
    at ChildProcess.emit (events.js:98:17) 
    at maybeClose (child_process.js:756:16) 
    at Process.ChildProcess._handle.onexit (child_process.js:823:5) 

修復此問題的任何想法?

回答

9

我注意到你的ANDROID_HOME變量可能被錯誤地設置了 - 據我所知,它應該被設置爲你的SDK文件夾的根目錄(你設置了ANDROID_SDK),嘗試一下(並確保你你的路徑上仍然有$ ANDROID_HOME/tools和$ ANDROID_HOME/platform-tools)。

+0

我沒有在Yosemite上下載Java 6 for OSX,因爲Eclipse抱怨它需要它。我會嘗試將我的Java設置爲該類型,但如果這是問題,則得到一個奇怪的錯誤。 – mylord 2014-11-07 11:12:34

+0

是的,你是對的,我有一個與「q.js:126」錯誤消息類似的錯誤,但事實證明這是一個非常通用的地方發生錯誤(如果我記得,它調用一些外部程序,在這個我假設的情況下的螞蟻)。我可能在另一個問題中找到了解決方案:關閉Eclipse並在項目文件夾中運行ant clean。 http://stackoverflow.com/questions/23753320/build-error-referencing-build-xml-and-proguard-file-null-returned-1/23774435#23774435 – Marxama 2014-11-12 08:16:25

+0

ant clean給出:Buildfile:build.xml不會存在! 我的項目中唯一的build.xml與facebookconnect插件有關。任何其他想法? – mylord 2014-11-12 22:21:48

1

@mylord我有類似的錯誤,這是由於無效的調試證書。在Linux上刪除〜/ .android debug.keystore文件。

下次構建時,構建工具將重新生成新的密鑰庫和調試密鑰。

這解決了我。我希望這有幫助。

+1

我移動該文件並運行:cordova build android。同樣的錯誤依然存在。此外,沒有其他debug.keystore生成。無論如何,幫助+1。任何其他想法? – mylord 2014-11-12 22:19:18

20

我把頭撞在牆上幾個小時,最終想出了一個簡單的解決方案。我走進項目目錄併發出兩個命令:

cordova platform remove android 
cordova platform add android 

與重新編譯「科爾多瓦構建Android」和它的工作就像一個魅力。

我認爲科爾多瓦想要更新一些文件。

爲離子======== =====更新

如果您使用的是離子的框架,那麼這些都是你的救援命令:

ionic platform remove android 
ionic platform add android 

我已經注意到,這通常發生在中斷(Ctrl-C)編譯過程時。

+0

謝謝!是的,我也遇到了npm安裝問題。當我嘗試更新cordova項目時,例如shelljs丟失,並基本上安裝任何東西,npm抱怨未滿足的依賴關係等......但這是追捕的另一個bug :) – mylord 2015-01-02 08:59:57

+1

如果你可以重新安裝它應該工作,我認爲。我也重新安裝了nodejs。 – Anjum 2015-01-02 09:30:43

+1

移除並添加Android平臺後,我還注意到了另外一件事。輸出的Apk文件名顯然也發生了變化。以前我曾經得到MyAppName-debug.apk。現在它是CordovaApp-debug.apk。如果您使用DOS批處理文件來自動執行此過程,此信息將會很有幫助。 – Anjum 2015-01-02 09:34:29

0

我遇到了同樣的錯誤消息,但是我的ANDROID_HOME設置是正確的。 我發現這個錯誤是由我在\ platforms \ android \ ant-build文件夾中打開一個.apk文件造成的。關閉佔用.apk文件的7zip後,ant構建過去了。

0

在更改任何東西之前,會創建一個空的cordova項目並嘗試構建它,並且您可以找出問題是否是項目特定的。

經過很多改變後,我發現我們不應該有兩個同名的文件夾:jqueryjQuery

0

我有同樣的問題。這是由於Google Play商店(它是我們的Beta版本)中安裝的Android設備上安裝了具有相同名稱的應用程序(和我的情況下是相同的反向樣式域名)所導致的。

2

我運行相同的問題,並通過轉義​​3210中的非字母字符來解決它。格外爲name屬性:

<name>Temps d'espera</name> 

我把它改爲:

<name>Temps d\'espera</name> 

然後它完美運行。希望能幫助到你。

+0

這是我一直在問題,無論我已安裝的構建工具。 – Wayferer 2015-04-10 12:17:29

1

我在運行'phonegap serve'時遇到了同樣的問題,但解決方案非常不同。我注意到,當我重新啓動計算機時,操作將會起作用。以防其他人遇到這個問題。這裏是一個從計算器線程Grunt watch error - Waiting...Fatal error: watch ENOSPC

採取除海報錯誤在Ubuntu 15

echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p 

的解決方案,我有錯誤

at exports._errnoException (util.js:856:11) 
at FSWatcher.start (fs.js:1313:19) 
at Object.fs.watch (fs.js:1341:11) 

進一步下跌。

+0

是的,確實如此。在Ubuntu 16.04上出現同樣的錯誤!謝謝 – Andrea 2016-12-08 13:37:28