PhoneGap / Cordova Android开发

时间:2013-12-13 21:55:53

标签: android node.js ubuntu cordova

更新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上遇到了同样的问题。

11 个答案:

答案 0 :(得分:88)

Android工具二进制文件可能不在您的路径中。

根据PhoneGap文档(http://docs.phonegap.com/en/2.9.0/guide_getting-started_android_index.md.html),您需要在PATH环境变量中包含Android SDK的工具平台工具

  

export PATH = $ {PATH}:/ Development / adt-bundle / sdk / platform-tools:/ Development / adt-bundle / sdk / tools

其中,开发是您安装SDK的路径。

答案 1 :(得分:10)

从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

关闭并重新打开cmd并再次运行命令。

答案 2 :(得分:5)

我正在运行Ubuntu 12.04并且在几分钟之前遇到了和你一样的问题。

我注意到安装过程中遗漏的两件事:

  1. Android版本应为19,您应该能够在控制台输入“android”并查看一些输出或查看弹出窗口。确保将android.jar所在文件夹的路径添加到PATH变量中,并将ANDROID_HOME设置为同一路径。通常,您可以在.bashrc文件或/ etc / environment中执行此操作。如果您编辑其中任何一个文件,则需要'source~ / .bashrc'或重新打开终端以强制它重新加载文件。输入'android'以确保其正常工作。

  2. 我发现cordova设置脚本试图将文件写入Android SDK的子目录“附加组件”。该目录在Android 19发行版本身中不存在。因此,我手动创建它并使其可由我的用户帐户写入。

  3. ex:Android发布路径:

    /opt/android/
    

    尝试写入的路径:

    /opt/android/sdk/add-ons
    

    一旦我这样做了,我就能解决你上面提到的问题。

答案 3 :(得分:1)

看起来你的主目录中的cordova andorid库文件已损坏。

尝试删除主目录.cordova目录并在您的cordova项目中再次执行 cordova platform add android

确保您拥有PATH的源/平台工具和/工具。

答案 4 :(得分:0)

<强>的Android

Android命令行工具基于shell脚本构建。您必须在PATH中拥有Android SDK的工具和平台工具文件夹!

创建项目

使用以下参数运行create命令:

Path to your new Cordova Android project

Package name, following reverse-domain style convention

Main Activity name

$ /path/to/cordova-android/bin/create /path/to/my_new_cordova_project com.example.cordova_project_name CordovaProjectName

答案 5 :(得分:0)

看起来这个错误也可能是因为缺少兼容的Android SDK版本(目前为4.2)。

答案 6 :(得分:0)

我用cordova。 2天我有同样的问题&#34; java,ant,android,cordova,命令测试还可以, 但运行cordova平台添加android显示错误:列出Android目标时出错&#34;。 现在我修复使用: &#34; chmod 777 ant和android sdk place&#34; 那么它会奏效。  我使用ubuntu 14.04 32bit,

答案 7 :(得分:0)

如果问题仍然存在,请确保您拥有正确的权限尝试

sudo chmo-R 777 /home/your-user-name/.cordova/

另外请确保您没有使用sudo将Android添加为平台

在默认的Cordova安装

中这是不正确的
sudo cordova platform add android

只做

cordova platform add android

答案 8 :(得分:0)

我为此搜索了很多,对我来说有用的是将shell变量$ANDROID_HOME设置为android sdk/目录中adt-bundle文件夹的路径。使用export执行此操作:

export ANDROID_HOME="/Users/YOUR_USER/Developer/adt-bundle/sdk/" 但请务必更改目录以匹配您的目录。

祝你好运!

答案 9 :(得分:0)

不确定其他人是否有这个问题,但是当删除并再次添加我的平台时,我意识到在我的config.xml中我有<icon src='...'>并且src内部的路径是错误的。

以下是我再次添加平台时收到的错误输出:cp: no such file or directory: C:\Users\{pathtofile}.png

修好路径后,工作正常。

答案 10 :(得分:-2)

可能是您的cordova安装已损坏尝试删除.cordova文件夹“rm -R~ / .cordova” 并且“再次运行cordova平台添加android”