在Apache Cordova中添加平台不起作用

我正在Ubuntu 13.10上安装Apache Cordova,请遵循以下说明: http : //cordova.apache.org/docs/en/3.5.0//guide_cli_index.md.html#The%20Command-Line%20Interface

我被困在“添加平台”部分:

$ cordova platforms ls Installed platforms: Available platforms: amazon-fireos, android, blackberry10, firefoxos, ubuntu 

看起来像Ubuntu是可用的。 所以我继续。

 $ cordova platform add ubuntu Checking ubuntu requirements... Running "dpkg-query -Wf'${db:Status-abbrev}' cmake debhelper libx11-dev libicu-dev pkg-config qtbase5-dev qtchooser qtdeclarative5-dev qtfeedback5-dev qtlocation5-dev qtmultimedia5-dev qtpim5-dev qtsensors5-dev qtsystems5-dev 2>/dev/null | grep -q '^i'" (output to follow) Make sure you have the following packages installed: user@host:/opt/lampp/htdocs/hello$ 

看起来已经很奇怪了,因为它警告我要给一个空列表安装软件包。

 $ cordova build No platforms added to this project. Please use `cordova platform add <platform>`. 

…并没有工作。

 $ cordova platforms ls Installed platforms: Available platforms: amazon-fireos, android, blackberry10, firefoxos, ubuntu 

看起来像之前。

有任何想法吗?


补充:

 $ cordova -d platform add ubuntu 

我得到以下内容:

 CordovaError: Make sure you have the following packages installed: at /usr/lib/node_modules/cordova/node_modules/cordova-lib/src/cordova/metadata/ubuntu_parser.js:56:22 at /usr/lib/node_modules/cordova/node_modules/cordova-lib/node_modules/shelljs/shell.js:1727:7 at ChildProcess.exithandler (child_process.js:651:7) at ChildProcess.emit (events.js:98:17) at maybeClose (child_process.js:755:16) at Socket.<anonymous> (child_process.js:968:11) at Socket.emit (events.js:95:17) at Pipe.close (net.js:465:12) 

补充2:

好的,我通过sudo apt-get install添加了所有缺less的库……

现在我明白了这一点:

 $ cordova -d platform add ubuntu cordova library for "ubuntu" already exists. No need to download. Continuing. Checking if platform "ubuntu" passes minimum requirements... Checking ubuntu requirements... Running "dpkg-query -Wf'${db:Status-abbrev}' cmake debhelper libx11-dev libicu-dev pkg-config qtbase5-dev qtchooser qtdeclarative5-dev qtfeedback5-dev qtlocation5-dev qtmultimedia5-dev qtpim5-dev qtsensors5-dev qtsystems5-dev 2>/dev/null | grep -q '^i'" (output to follow) Creating ubuntu project... Running command: /home/user/.cordova/lib/ubuntu/cordova/3.5.0/bin/create /opt/lampp/htdocs/hello/platforms/ubuntu com.example.hello HelloWorld Shelljs module was not found, running 'npm install'..... ERROR : running 'npm install' is npm installed? Error: Command failed: npm WARN package.json cordova-ubuntu@0.0.0 No README data npm ERR! Error: Attempt to unlock shelljs@0.2.6, which hasn't been locked npm ERR! at unlock (/usr/lib/node_modules/npm/lib/utils/locker.js:44:11) npm ERR! at cb (/usr/lib/node_modules/npm/lib/cache/add-named.js:32:5) npm ERR! at /usr/lib/node_modules/npm/lib/cache/add-named.js:41:20 npm ERR! at /usr/lib/node_modules/npm/lib/utils/locker.js:30:7 npm ERR! at /usr/lib/node_modules/npm/node_modules/lockfile/lockfile.js:167:38 npm ERR! at OpenReq.Req.done (/usr/lib/node_modules/npm/node_modules/graceful-fs/graceful-fs.js:144:5) npm ERR! at OpenReq.done (/usr/lib/node_modules/npm/node_modules/graceful-fs/graceful-fs.js:64:22) npm ERR! at Object.oncomplete (fs.js:107:15) npm ERR! If you need help, you may report this *entire* log, npm ERR! including the npm and node versions, at: npm ERR! <http://github.com/npm/npm/issues> npm ERR! System Linux 3.11.0-26-generic npm ERR! command "/usr/bin/node" "/usr/bin/npm" "install" npm ERR! cwd /home/user/.cordova/lib/ubuntu/cordova/3.5.0/bin npm ERR! node -v v0.10.29 npm ERR! npm -v 1.4.14 npm ERR! Error: Attempt to unlock elementtree@*, which hasn't been locked npm ERR! at unlock (/usr/lib/node_modules/npm/lib/utils/locker.js:44:11) npm ERR! at cb (/usr/lib/node_modules/npm/lib/cache/add-named.js:32:5) npm ERR! at /usr/lib/node_modules/npm/lib/cache/add-named.js:41:20 npm ERR! at /usr/lib/node_modules/npm/lib/utils/locker.js:30:7 npm ERR! at /usr/lib/node_modules/npm/node_modules/lockfile/lockfile.js:167:38 npm ERR! at OpenReq.Req.done (/usr/lib/node_modules/npm/node_modules/graceful-fs/graceful-fs.js:144:5) npm ERR! at OpenReq.done (/usr/lib/node_modules/npm/node_modules/graceful-fs/graceful-fs.js:64:22) npm ERR! at Object.oncomplete (fs.js:107:15) npm ERR! If you need help, you may report this *entire* log, npm ERR! including the npm and node versions, at: npm ERR! <http://github.com/npm/npm/issues> ....[several other lines with similar errors]..... Command finished with error code 1: /home/user/.cordova/lib/ubuntu/cordova/3.5.0/bin/create /opt/lampp/htdocs/hello/platforms/ubuntu,com.example.hello,HelloWorld Error: /home/user/.cordova/lib/ubuntu/cordova/3.5.0/bin/create: Command failed with exit code 1 at ChildProcess.whenDone (/usr/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:755:16) at Process.ChildProcess._handle.onexit (child_process.js:822:5) 

是的,安装了npm

通过将/home/user/.npm的所有权从“root”更改为“user”

不过,还是会出现下一个问题:

 $ cordova build Running command: /opt/lampp/htdocs/hello/platforms/ubuntu/cordova/build /opt/lampp/htdocs/hello/platforms/ubuntu/cordova/check_reqs Error: missing dependency cmake libicu-dev pkg-config qtbase5-dev qtchooser qtdeclarative5-dev qtfeedback5-dev qtlocation5-dev qtmultimedia5-dev qtpim5-dev qtsensors5-dev qtsystems5-dev /opt/lampp/htdocs/hello/platforms/ubuntu/cordova/check_reqs FAILED Error: /opt/lampp/htdocs/hello/platforms/ubuntu/cordova/build: Command failed with exit code 1 at ChildProcess.whenDone (/usr/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:755:16) at Process.ChildProcess._handle.onexit (child_process.js:822:5) 

我已经安装了这些:cmake libicu-dev pkg-config qtbase5-dev qtchooser qtdeclarative5-dev qtfeedback5-dev qtlocation5-dev qtmultimedia5-dev qtpim5-dev qtsensors5-dev qtsystems5-dev

错误消息看起来破碎,但这是你需要的cmake libicu-dev pkg-config qtbase5-dev qtchooser qtdeclarative5-dev qtfeedback5-dev qtlocation5-dev qtmultimedia5-dev qtpim5-dev qtsensors5-dev qtsystems5-devcmake libicu-dev pkg-config qtbase5-dev qtchooser qtdeclarative5-dev qtfeedback5-dev qtlocation5-dev qtmultimedia5-dev qtpim5-dev qtsensors5-dev qtsystems5-dev

至less根据这个github链接: 链接

您可能需要在执行添加平台代码时添加-d以获得额外的debugging信息,例如cordova -d platform add ubuntu

编辑:

从下面的问题之后:您可以调用apt-get install <insert package list>来安装软件包。

EDIT2:

评论后再次更多的信息。 不知道为什么它失败,因为它似乎你有npm安装吗?

你可以从你正在调用create命令的地方执行以下内容,但这不是正确的地方,但可能会使其工作

npm install shelljs@0.2.6 elementtree colors@0.6.2 optimist@0.6.0 q@2.0.*

根据cordova开发这个问题是固定在最新版本:

https://github.com/apache/cordova-lib/commit/153092f2c235185c7f141979a550779800954a92

尝试replace运行npm -g explore cordova并用GitHub中的最新版本的cordova-libreplacenode_modules/cordova-lib内容。

当你打开platform / ubuntu / cordova / check_reps的代码时,你会注意到一些有趣的事情:

 var deps = "cmake libicu-dev pkg-config qtbase5-dev qtchooser qtdeclarative5-dev qtfeedback5-dev qtlocation5-dev qtmultimedia5-dev qtpim5-dev qtsensors5-dev qtsystems5-dev"; exec("dpkg-query -Wf'${db:Status-abbrev}\\n' click " + deps, function(error, stdout, stderr) 

这将调用以下shell命令:

 dpkg-query -Wf'${db:Status-abbrev}\n' click cmake libicu-dev [and so on...] 

我不知道为什么“点击”包不包含在depsstring中,但也是必需的,错误信息不会告诉你。

我发现安装点击做的伎俩:

 sudo apt-get install click 

祝你好运!

顺便说一句,我发布了一个相同的答案在这里: 构build命令在Apachecordova