npm install -g phonegap
npm install -g cordova
检验语句:
phonegap -version
cordova -version
如果上面安装成功,就可以使用phonegap创建混合开发应用了:
phonegap create my-app
cd my-app
phonegap run android
plugman
http://blog.csdn.net/weixin_37730482/article/details/74989726
http://blog.csdn.net/b2259909/article/details/52471178
1.1 使用plugman工具创建plugin demo:
a. npm install -g plugman
b. 安装成功后就可以使用plugman命令生成Cordova插件模板
cmd中定位到你要生成插件的位置 cmd中输入
plugman create --name <pluginName> --plugin_id <pluginID> --plugin_version <version> [--path <directory>] [--variableNAME=VALUE]
plugman create --name PluginDemo --plugin_id org.apache.plugindemo --plugin_version 1.0.0
c. 添加安卓平台
d. 生成json文件,提交plugin需要此文件
plugman createpackagejson D:\Cordova\CordovaPlugin\PluginDemo
e. 修改plugin.xml内容,只在android平台修改这一句:
为:source-file src=”src/Android/PluginDemo.Java” target-dir=”src/plugindemo/PluginDemo”
为什么修改这里: 因为如果不修改,PLuginDemo.java会拷贝到src/plugindemo/PluginDemo这个包下,等会对应不上,这个估计是plugman的bug。只要知道一个事情,在Android平台下,plugin.xml下的:source-file src=”src/android/MyMath.Java” target-dir=”src/plugindemo”
定义Android平台下的底层实现的 ***包名.类*** : plugindemo 是包名,PluginDemo 是类名如果不对应,修改路径或者xml。param name=”android-package” value=”plugindemo.PluginDemo”
f. 修改www/PluginDemo.js为对应需求
g. 将插件提交到某个Cordova项目中
cmd中定位到要插入的Cordova项目,提交刚刚生成的插件到指定 Cordova 项目中
cordova plugin add D:\Cordova\CordovaPlugin\PluginDemo
项目的plugin文件夹下新增org.apache.PluginDemo文件夹,即添加plugin成功
h. 将Cordova项目D:\Cordova\CordovaDemo\NumberDemo\platforms android项目导入的androidstudio 中
i. 修改PluginDemo.java文件对应内容
j. 修改index.js index.html对应内容
1.2 PhoneGap plugin 工作流程:
a. index.html 按钮唤起js函数->
<button οnclick="pluginDemo();">PluginDemo</button>
function pluginDemo(){
cordova.plugins.PluginDemo.coolMethod(arg0, success, error)
}
c. PluginDemo.js cordova的接口
var exec=require('cordova/exec');
exports.coolMethod=function(arg0, success, error){
exec(success, error, “PluginDemo”, “coolMethod”, arg0);
};
d. PluginDemo.java 调用底层实现各自平台(ios或者Android)下的类 PluginDemo。
public class PluginDemo extends CordovaPlugin{
public boolean execute(..........){
if (action.equals("coolMethod")){
.....
}
}
}
1.3 cordova cli编译的gradle和android studio的gradle版本不同,需要手动修改
cordova cli: app buildgradle: com.android.tools.build:gradle:2.2.0
CordovaLib buildgradle: gradle:2.1.0
gradle-wrapper.propertie:
distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip
android studio 3.0 canary 6: gradle:2.3.2
gradle-wrapper.propertie:
distributionUrl=https\://services.gradle.org/distributions/gradle-4.0-milestone-1-all.zip
2 无法从github上添加plugin
原因:npm版本太低(-v 1.3.10)→nodejs是通过apt-get安装的。。
解决办法:下载nodejs安装包,解压安装之,并创建/usr/bin/npm /usr/bin/node /usr/local/bin/npm /usr/local/bin/node的软链接,此时npm(-v 3.10.10)
2.1 从github上添加plugin错误提示:
jiao@jiao-linux:~/AndroidStudioProjects/cordova/hello_1$ cordova plugin add https://github.com/heigeo/cordova-plugin-tensorflow.git
Error: Failed to fetch plugin https://github.com/heigeo/cordova-plugin-tensorflow.git via registry.
Probably this is either a connection problem, or plugin spec is incorrect.
Check your connection and plugin name/version/URL.
Error: npm: Command failed with exit code 34 Error output:
npm WARN package.json com.phonegap.helloworld@1.0.0 No repository field.
npm WARN package.json TFPlugin@1.0.0 No repository field.
npm http GET https://github.com/heigeo/cordova-plugin-tensorflow.git
npm http 200 https://github.com/heigeo/cordova-plugin-tensorflow.git
npm ERR! not a package /home/jiao/tmp/npm-16374-hIPiU0GE/1505181886389-0.8421687281224877/tmp.tgz
npm ERR! Error: ENOENT, open '/home/jiao/tmp/npm-16374-hIPiU0GE/1505181886389-0.8421687281224877/package/package.json'
npm ERR! If you need help, you may report this log at:
npm ERR! <http://github.com/isaacs/npm/issues>
npm ERR! or email it to:
npm ERR! <npm-@googlegroups.com>
npm ERR! System Linux 4.2.0-42-generic
npm ERR! command "/usr/bin/nodejs" "/usr/bin/npm" "install" "https://github.com/heigeo/cordova-plugin-tensorflow.git" "--save"
npm ERR! cwd /home/jiao/AndroidStudioProjects/cordova/hello_1/node_modules
npm ERR! node -v v0.10.25
npm ERR! npm -v 1.3.10
npm ERR! path /home/jiao/tmp/npm-16374-hIPiU0GE/1505181886389-0.8421687281224877/package/package.json
npm ERR! code ENOENT
npm ERR! errno 34
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR! /home/jiao/AndroidStudioProjects/cordova/hello_1/node_modules/npm-debug.log
npm ERR! not ok code 0
2.2 进入/usr/bin /usr/local/bin删除npm node nodejs
rm npm etc……
2.3 删除掉npm后会遇到错误:
module.js:471
throw err;
^
Error: Cannot find module 'npmlog'
at Function.Module._resolveFilename (module.js:469:15)
at Function.Module._load (module.js:417:25)
at Module.require (module.js:497:17)
at require (internal/module.js:20:19)
at /usr/share/npm/bin/npm-cli.js:18:11
at Object.<anonymous> (/usr/share/npm/bin/npm-cli.js:86:3)
at Module._compile (module.js:570:32)
at Object.Module._extensions..js (module.js:579:10)
at Module.load (module.js:487:32)
at tryModuleLoad (module.js:446:12)
2.4 根本解决:重新安装nodejs,并创建/usr/bin /usr/local/bin的软链接
安装参考:
http://www.cnblogs.com/liuqi/p/6483317.html
软链接最好把/usr/bin /usr/local/binl两个路径都创建了。。
apt-get那安装的nodejs卸载不了也不管了……