问题描述
更新1:
这就是我最后所做的一切:
sudo aptitude install -y python-software-properties python g++ make
sudo add-apt-repository -y ppa:chris-lea/node.js
sudo aptitude update
sudo aptitude install nodejs
sudo aptitude install npm
sudo npm install -g cordova
sudo npm install -g phonegap
phonegap create my-app
cd my-app
export PATH=${PATH}:/home/oshirowanen/Downloads/adt-bundle-linux-x86_64-20131030/sdk/platform-tools:/home/oshirowanen/Downloads/adt-bundle-linux-x86_64-20131030/sdk/tools
sudo aptitude install ant
cordova platform add android
android create avd --name my_and --target 1
phonegap run android
有什么不是必要的吗?
原始问题:
在我的Ubuntu 12.04计算机上,我刚刚用npm和cordova安装了node.js:
$ node -v
v0.10.23
$ npm -v
1.3.17
$ cordova -v
3.3.0-0.1.1
当我尝试添加android时:
$ cordova platform add android
我得到以下输出:
Creating android project...
/usr/lib/node_modules/cordova/node_modules/q/q.js:126
throw e;
^
Error: An error occured during creation of android sub-project.
/home/oshirowanen/.cordova/lib/android/cordova/3.3.0/bin/node_modules/q/q.js:126
throw e;
^
Error: An error occurred while listing Android targets
at /home/oshirowanen/.cordova/lib/android/cordova/3.3.0/bin/lib/check_reqs.js:87:29
at _rejected (/home/oshirowanen/.cordova/lib/android/cordova/3.3.0/bin/node_modules/q/q.js:808:24)
at /home/oshirowanen/.cordova/lib/android/cordova/3.3.0/bin/node_modules/q/q.js:834:30
at Promise.when (/home/oshirowanen/.cordova/lib/android/cordova/3.3.0/bin/node_modules/q/q.js:1079:31)
at Promise.promise.promiseDispatch (/home/oshirowanen/.cordova/lib/android/cordova/3.3.0/bin/node_modules/q/q.js:752:41)
at /home/oshirowanen/.cordova/lib/android/cordova/3.3.0/bin/node_modules/q/q.js:574:44
at flush (/home/oshirowanen/.cordova/lib/android/cordova/3.3.0/bin/node_modules/q/q.js:108:17)
at process._tickCallback (node.js:415:13)
at /usr/lib/node_modules/cordova/src/platform.js:244:30
at ChildProcess.exithandler (child_process.js:641:7)
at ChildProcess.EventEmitter.emit (events.js:98:17)
at maybeClose (child_process.js:735:16)
at Socket.<anonymous> (child_process.js:948:11)
at Socket.EventEmitter.emit (events.js:95:17)
at Pipe.close (net.js:466:12)
任何人都知道为什么会这样,以及如何解决它?
我在PhoneGap上遇到了同样的问题。
最佳解决办法
Android工具二进制文件可能不在您的路径中。
根据PhoneGap文档(http://docs.phonegap.com/en/2.9.0/guide_getting-started_android_index.md.html),您需要在PATH环境变量中包含Android SDK的工具和platform-tools。
export PATH=${PATH}:/Development/adt-bundle/sdk/platform-tools:/Development/adt-bundle/sdk/tools
其中Development是您安装SDK的路径。
次佳解决办法
从adt \ sdk \ tools文件夹运行”android”命令并安装最新的Tools和SDK。还要确保您的PATH具有正确的变量。
为此,您需要安装ANT,安装JAVA JDK和Android SDK
JAVA_HOME(C:\ Program Files \ Java \ jdk)
ANT_HOME({ant location} \ apache \ apache-ant)
ANDROID_HOME({android sdk location} \ android-sdk)
将这些添加到您的PATH变量,如%ANT_HOME%/bin;%ANDROID_HOME%\ tools;%ANDROID_HOME%\ platform-tools;%JAVA_HOME%\ bin
关闭和re-open您的cmd并再次运行您的命令。
第三种解决办法
我正在运行Ubuntu 12.04并且在几分钟前遇到了和你一样的问题。
我注意到安装过程中遗漏的两件事:
-
Android版本应为19,您应该能够在控制台键入’android’并查看一些输出或查看窗口pop-up。确保将android.jar所在文件夹的路径添加到PATH变量,并将ANDROID_HOME设置为同一路径。通常,您可以在.bashrc文件或/etc /environment中执行此操作。如果您编辑其中任何一个文件,则需要’source ~/.bashrc’或重新打开终端以强制它重新加载文件。键入’android’以确保其正常工作。
-
我观察到cordova安装脚本试图将文件写入Android SDK的子目录’add-ons’。该目录在Android 19发行版本身中不存在。因此,我手动创建它并使其可由我的用户帐户写入。
例如:Android发布路径:
/opt/android/
它试图写入的路径:
/opt/android/sdk/add-ons
一旦我这样做了,我就能够解决你上面提到的问题。