3

我正在使用这个 cordova 教程来尝试设置一个 cordova/phonegap 应用程序。我在 Windows 上开发,我安装了 node.js,我在 Node.js 命令提示符下工作。我下载并安装了:
Andorid SDK from here添加到PATH
下载了ant安装了它
Java JDK也下载并安装了。

我的PATH包含这些:
%ANT_HOME%\bin;%JAVA_HOME%\bin;C:\Program Files (x86)\Android\android-sdk\tools

输入androidcmd 会打开 Android SDK 管理器。
键入java显示命令的 java 帮助。
键入ant -version显示 ant 版本(1.9.6)。
键入会cordova显示cordova 帮助命令。

我用 成功安装了cordova npm install -g cordova,并创建了我的工作室目录。然后我尝试添加教程建议的平台和插件。以下是仅适用于 android 平台和设备插件的命令提示符输出:

C:\Users\Roman\All\Work\CriticalID\again>cordova platforms add android
npm http GET https://registry.npmjs.org/cordova-android/-/cordova-android-4.0.2.tgz
npm http 200 https://registry.npmjs.org/cordova-android/-/cordova-android-4.0.2.tgz

C:\Users\Roman\All\Work\CriticalID\workshop>cordova plugin add cordova-plugin-device
Fetching plugin "cordova-plugin-device" via npm
npm http GET https://registry.npmjs.org/cordova-plugin-device
npm http 304 https://registry.npmjs.org/cordova-plugin-device
npm http GET https://registry.npmjs.org/cordova-plugin-device/-/cordova-plugin-device-1.0.1.tgz
npm http 200 https://registry.npmjs.org/cordova-plugin-device/-/cordova-plugin-device-1.0.1.tgz

检查是否安装了平台和插件:

C:\Users\Roman\All\Work\CriticalID\workshop>cordova platforms ls
Installed platforms:
Available platforms: amazon-fireos, android, blackberry10, browser, firefoxos, windows, windows8, wp8

C:\Users\Roman\All\Work\CriticalID\workshop>cordova plugin ls
No plugins added. Use `cordova plugin add <plugin>`.

C:\Users\Roman\All\Work\CriticalID\workshop>cordova build
No platforms added to this project. Please use `cordova platform add <platform>`.

我安装的平台或插件都没有显示为已安装。workshop\pluginsworkshop\platforms文件夹也是空的。

教程应用程序在我的浏览器和手机中运行(由 PhoneGap 桌面和手机应用程序放置在那里),但是当我尝试更复杂的教程时,比如需要相机 API 的这个 PhoneGap 教程的第 12 部分,那么相机在浏览器(显然)和我的手机上(Error: Camera API is not supported)。

编辑

我通过使用 git 添加 Android 平台和插件解决了这个问题;解决方案如下。但是,如果我遗漏了什么,请告诉我。
似乎config.xml应该处理一些功能,但我无法弄清楚。
Cordova 5.1.1 的一切

4

1 回答 1

0

我相信文档很旧,这给我带来了问题。此外,使用 Cordova 或通过 PhoneGap 或 PhoneGap 构建从头开始创建应用程序时,某些 config.xml 和文件结构会有所不同。

首先,在使用 Cordova 构建应用程序时,这些代码行似乎不起作用:

cordova platforms add android
cordova plugin add org.apache.cordova.device
cordova plugin add cordova-plugin-device

所有平台和插件都需要通过Git添加。 Android 平台在这里插件列表在这里

因此,例如要获取默认的 Cordova 应用程序,(对于灌输,请参阅上面的问题)将以下内容复制并粘贴到 CMD 中:

cd into your working directory
cordova create workshop com.name.workshop Workshop
cd workshop
cordova platform add https://github.com/apache/cordova-android.git
cordova plugin add https://git-wip-us.apache.org/repos/asf/cordova-plugin-whitelist.git
cordova plugin add https://git-wip-us.apache.org/repos/asf/cordova-plugin-camera.git

请注意,必须在插件之前添加平台。我添加whitelist是因为config.xml想要,我还添加了device并且console因为教程告诉我这样做。

现在,如果您键入cordova platform lsand cordova plugin ls,那么您应该有一个非空列表返回给您。

为了完整起见,如果您现在想使用相机: 1) 将以下内容复制到index.html

<img id='image' src='' style="position:absolute;margin:5px;left:0px;top:0px;"/>
<button id="test_camera">Camera Test</button>
<script type="text/javascript" src="js/test.js"></script>

2)创建一个新脚本test.js,并将以下内容粘贴到其中。我不喜欢教程创建这个函数的复杂方式,这更直接:

var changePicture = function() {
  if (!navigator.camera) {
      alert("Camera API not supported", "Error");
      return;
  }
  var options =   {   quality: 50,
                      destinationType: Camera.DestinationType.DATA_URL,
                      sourceType: 1,      // 0:Photo Library, 1=Camera, 2=Saved Album
                      encodingType: 0     // 0=JPG 1=PNG
                  };

  navigator.camera.getPicture(
      function(imgData) {
          $('#image').attr('src', "data:image/jpeg;base64," + imgData);
      },
      function() {
          alert('Error taking picture', 'Error');
      },
      options);

  return false;
};

$("#test_camera").on('click', function() {
    changePicture()
})

index.js您可以单独保留初始化代码。

现在使用PhoneGap 桌面应用程序和PhoneGap 手机应用程序在您的手机上测试您的应用程序。我很容易。我正在为此使用Windows和Android,我不知道任何其他系统。

于 2015-07-20T11:12:27.960 回答