1

我是 Cordova 的新手,我正在尝试将 android 平台添加到我的应用程序中,但它失败了:

$ cordova create myapp com.example.asd myapp
Creating a new cordova project with name "myapp" and id "com.example.asd" at location "/home/user/Scaricati/android/eclipse/alternativeworkspace/myapp"
$ cd myapp
$ cordova platform add android
Checking Android requirements...
Creating android project...
Preparing android project
{ [Error: ENOENT, no such file or directory '/home/user/Scaricati/android/eclipse/alternativeworkspace/myapp/platforms/android/src/com/example/asd']
  errno: 34,
  code: 'ENOENT',
  path: '/home/user/Scaricati/android/eclipse/alternativeworkspace/myapp/platforms/android/src/com/example/asd',
  syscall: 'readdir' }

它试图到达一个无效的路径。我试图调查这个问题,我发现在 src 目录中包名处理不正确:

$ ls platforms/android/src
comundefinedexampleundefinedasd

如您所见,点(“.”)被“未定义”替换。顺便说一句,简单地重命名目录并不能解决问题。

奇怪的是,cordova 在其他地方成功处理了包名:

$ grep -ri com.example.asd .
./www/config.xml:<widget id="com.example.asd" version="0.0.1" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
    ./platforms/android/res/xml/config.xml:<widget id="com.example.asd" version="0.0.1" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
    ./platforms/android/AndroidManifest.xml:<manifest android:hardwareAccelerated="true" android:versionCode="1" android:versionName="0.0.1" android:windowSoftInputMode="adjustPan" package="com.example.asd" xmlns:android="http://schemas.android.com/apk/res/android">
    ./platforms/android/assets/www/config.xml:<widget id="com.example.asd" version="0.0.1" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
    ./platforms/android/src/comundefinedexampleundefinedasd/myapp.java:package com.example.asd;
    ./.cordova/config.json:{"id":"com.example.asd","name":"myapp"}

我的科尔多瓦版本是

$ cordova --v
3.1.0-0.2.0

这个问题也会影响“非 cli”Cordova(我试图让它在 Eclipse 中工作)。

如果您不知道如何解决此问题,但您知道我在哪里可以看到“cordova create”源,请发布它,我会尝试自己开发一个快速修复。在此先感谢您的帮助。

* 编辑 *

对于那些会找到这个线程来寻找解决方案的人,我正在回复自己。我已经手动编辑了资源,我想我删除了这个错误。

第 128 行,~/.cordova/lib/android/cordova/3.1.0/bin/lib/create.js

var package_as_path = package_name.replace(/\./g, path.sep);

path.sep 未定义。我只是用我的操作系统的路径 sep 替换它(“/”)

var package_as_path = package_name.replace(/\./g, '/');

它现在似乎可以正常工作。

4

1 回答 1

3

我在这里找到了不同的解决方案:https ://github.com/adapt-it/adapt-it-mobile/wiki/Troubleshooting-Development-Work

您所做的是,通过命令行导航到根项目文件夹并创建“插件”文件夹

mkdir plugins

然后运行命令

cordova platform add <platform>

错误应该消失了。似乎科尔多瓦无法创建插件文件夹。

这是在带有 cordova 3.5.0 的 Linux-Mint 16 上完成的

于 2014-05-30T00:33:34.173 回答