如何添加 cordova 插件和平台

How to add cordova plugins and platforms

我正在使用 this cordova tutorial 尝试设置 cordova/phonegap 应用程序。我在 Windows 上开发,我安装了 node.js,我在 Node.js 命令提示符下工作。我下载并安装了:
Andorid SDK from here and have added it to PATH,
downloaded ant and installed it,
Java JDK 也 downloaded 并已安装。

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

在 cmd 中输入 android 打开 Android SDK 管理器。
输入 java 显示 java 命令帮助。
输入 ant -version 显示 ant 版本 (1.9.6)。
输入 cordova 显示 cordova 帮助命令。

我使用 npm install -g cordova 成功安装了 cordova,并创建了我的 workshop 目录。然后我尝试添加教程建议的平台和插件。这是 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>`.
我安装的

None 个平台或插件显示为已安装。 workshop\pluginsworkshop\platforms 文件夹也是空的。

教程应用程序在我的浏览器和 phone(由 PhoneGap 桌面和 phone 应用程序放在那里)中运行,但是当我尝试更复杂的教程时,例如 [=28 中的第 12 部分=] 需要摄像头 API,然后浏览器(显然)和我的 phone(Error: Camera API is not supported)不支持摄像头。

编辑

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

我认为文档很旧,这一直给我带来问题。此外,在使用 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 platform here, and a list of plugins here.

因此,例如要获取默认的 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 想要,我还添加了 deviceconsole 因为教程告诉我这样做。

现在,如果您键入 cordova platform lscordova 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 phone 应用程序在 phone 上测试您的应用程序。我很容易。我为此使用 windows 和 Android,我不知道任何其他系统。