PhoneGap/Cordova Android 开发

Posted

技术标签:

【中文标题】PhoneGap/Cordova Android 开发【英文标题】:PhoneGap/Cordova Android Development 【发布时间】:2014-01-01 19:46:38 【问题描述】:

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

【问题讨论】:

同样的错误/问题cordova platform add android not working while listing Android targets Cordova platform add android error的可能重复 【参考方案1】:

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

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

导出 PATH=$PATH:/Development/adt-bundle/sdk/platform-tools:/Development/adt-bundle/sdk/tools

其中 Development 是您安装 SDK 的路径。

【讨论】:

仅供参考,我在 Windows 上,我将这两个文件夹都添加到了我的路径中。但是,Windows 会以一定长度修剪路径变量,因此不包括完整的文件夹路径。将 adt 的东西移到“c:\adt”中以缩短路径并且它起作用了。 谢谢!这对我有用(在花了很多时间调试到底出了什么问题之后..)。 非常感谢,这就是我的问题的解决方案。再次感谢。 如果你使用的是 android studio,使用这个:export PATH=$PATH:/opt/android-studio/sdk/tools 我设置了 PATH 等,但仍然出现此错误。请在此处提供帮助:***.com/questions/26783594/…【参考方案2】:

从您的 adt\sdk\tools 文件夹运行“android”命令并安装最新的工具和 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 位置\android-sdk)

将这些添加到您的 PATH 变量中,例如 %ANT_HOME%/bin;%ANDROID_HOME%\tools;%ANDROID_HOME%\platform-tools;%JAVA_HOME%\bin

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

【讨论】:

最初的问题是关于 Ubuntu,但这为我在 Windows 8 上解决了同样的问题。 这在 Windows 8 上完美运行。谢谢! 我设置了 PATH 等,但仍然出现此错误。请在此处提供帮助:***.com/questions/26783594/… @mylord 我知道这听起来很简单,但是您是否关闭了 cmd/终端并重试?这让我困惑了一段时间 是的,我刚刚尝试过......同样的错误。 PATH=/Users/rover/Documents/Dev/Android/adt-bundle-mac-x86_64-20140702/sdk:/Users/rover/Documents/Dev/Android/adt-bundle-mac-x86_64-20140702/sdk/platform-工具:/Users/rover/Documents/Dev/Android/adt-bundle-mac-x86_64-20140702/sdk/build-tools【参考方案3】:

我正在运行 Ubuntu 12.04,并且直到几分钟前才遇到与您相同的问题。

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

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

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

ex:Android 分发路径:

/opt/android/

它试图写入的路径:

/opt/android/sdk/add-ons

完成此操作后,我就能够解决您上面提到的问题。

【讨论】:

我建议您将问题重命名为“Android,Cordova 3.3.0 - 无法创建子项目”或类似名称。当前标题没有描述性,很多人似乎都遇到了这个问题。【参考方案4】:

您的主目录中的cordova andorid 库文件似乎已损坏。

尝试删除 home//.cordova 目录并在您的 cordova 项目中再次执行此操作cordova platform add android

确保您已将 /platform-tools 和 /tools 获取到 PATH。

【讨论】:

【参考方案5】:

安卓

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

创建一个项目

使用以下参数运行创建命令:

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

【讨论】:

【参考方案6】:

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

【讨论】:

【参考方案7】:

我使用科尔多瓦。 2天我有同样的问题“java,ant,android,cordova,命令测试没问题, 但运行 cordova platform add android show me 错误:列出 Android 目标时发生错误”。 现在我修复它使用: “chmod 777 ant and android sdk place” ,然后它会工作。 我用的是 ubuntu 14.04 32bit,

【讨论】:

【参考方案8】:

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

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

还要确保您没有使用 sudo 将 Android 添加为平台

这在默认的 Cordova 安装中是不正确的

sudo cordova platform add android

做吧

cordova platform add android

【讨论】:

【参考方案9】:

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

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

祝你好运!

【讨论】:

【参考方案10】:

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

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

在我修好路径后,它工作正常。

【讨论】:

【参考方案11】:

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

【讨论】:

以上是关于PhoneGap/Cordova Android 开发的主要内容,如果未能解决你的问题,请参考以下文章

eclipse / Android上的Cordova phonegap

Phonegap/Cordova 无法下载到 Android 中的子文件夹

如何在 android webview 中实现 phonegap/cordova?

制作安全的 PhoneGap/Cordova 应用程序 (Android)

在 iOs 和 Android 的 PhoneGap/Cordova-app 中播放视频

Phonegap/Cordova Geolocation 不适用于 Android 4.0+,但适用于所有其他平台