環境配製javascript
英文網站:http://cordova.apache.org/前端
中文網站:http://cordova.axuer.com/java
Cordova的命令行運行在Node.js 上面而且能夠經過NPM安裝。 根據 平臺具體指導 安裝相應平臺的依賴。打開命令提示符或終端,而後鍵入npm install -g cordova
.node
使用命令行建立一個空的Cordova項目。導航到你但願建立項目的目錄,而後鍵入 cordova create <path>
。android
要知道這個命令完整的選項,鍵入cordova help create
。ios
cordova create <PATH> [ID [NAME [CONFIG]]] [options]git
例如:cordova create hello com.wrs.helloworld HelloWorldgithub
cordova create 路徑 BundleID/PackageID 名稱apache
在建立完一個Cordova項目後,導航到項目目錄。在項目目錄中,你須要添加你想構建app的平臺npm
爲了添加平臺, 鍵入 cordova platform add <platform name>
。
爲了知道你能夠添加的平臺,你能夠運行cordova platform
。
例如:cordova platform ios android
在命令中,鍵入cordova run <platform name>
。
例如:cordova run ios
經常使用命令:
cordova prepare:將項目根目錄下www文件替換到各個平臺下的對應目錄,並配製各個平臺的插件、修改各平臺下config.xml文件及相關配置
cordova requirements:檢查是否知足構建平臺要求
cordova build:爲全部添加平臺構建www/js/index.js文件中的deviceready事件
cordova emulate:從新構建APP並運行,如:cordova emulate android
cordova plugin search 插件名:搜索插件,如:cordova plugin search camera
cordova plugin add 插件名:添加插件,如:cordova plugin add camera
cordova plugin rm 插件名:刪除插件,如:cordova plugin rm camera
cordova plugin ls:查看已安裝插件
建立插件
npm install -g plugman
plugman create --name JSBridge --plugin_id com.wrs.plugin --plugin_version 1.0.0
cd JSBridge
plugman platform add --platform_name android
plugman platform add --platform_name ios
修改模板內容
plugin.xml修改成:
<?xml version='1.0' encoding='utf-8'?> <plugin id="JSBridge" version="1.0.0" xmlns="http://apache.org/cordova/ns/plugins/1.0" xmlns:android="http://schemas.android.com/apk/res/android"> <name>JSBridge
</name> <js-module name="JSBridge
" src="www/JSBridge
.js"> <clobbers target="cordova.plugins.JSBridge
" /> </js-module> <platform name="android"> <config-file parent="/*" target="res/xml/config.xml"> <feature name="JSBridge
"> <param name="android-package" value="com.wrs.plugin.JSBridge
" /> </feature> </config-file> <config-file parent="/*" target="AndroidManifest.xml" /> <source-file src="src/android/JSBridge
.java" target-dir="src/com/wrs/plugin" /> </platform> <platform name="ios"> <config-file parent="/*" target="config.xml"> <feature name="JSBridge
"> <param name="ios-package" value="JSBridge
" /> </feature> </config-file> <source-file src="src/ios/JSBridge
.m" /> </platform> </plugin>JSBridgeJSBridgeJSBridgeJSBridgeJSBridgeJSBridgeJSBridgeJSBridgeJSBridgeJSBridge
將
<source-file src=」src/android/JSBridge.java」 target-dir=」src/com/wrs/plugin
/JSBridge」 />
com/wrs/plugin修改成:
<source-file src="src/android/JSBridge
.java" target-dir="src/com/wrs/plugin" />
target-dir:將JSBridge.java拷貝到此目錄下,對應的是目錄名
clobbers
:前段經過這個clobbers來調用www/JSBridge.js的導出方法
feature:定義服務名,feature會被註冊到平臺下的config.xml文件中,www/JSBridge.js裏其實是經過這個服務名來調用原生方法的:
exec(success, error, "JSBridge", "coolMethod", [arg0]);
JSBridgeclobbers
定義android的原生調用方法,value爲包名+類名<param name="android-package" value="com.wrs.plugin.JSBridge
" />JSBridge
定義ios的原生調用方法,value爲類名<param name="ios-package" value="JSBridge
" />JSBridge
:聲明Android源碼路徑,target-dir:聲明Android源碼安裝的時候將被拷貝到Android項目的哪一個文件夾下
JSBridge.js:
var exec = require('cordova/exec');
exports.coolMethod = function(arg0, success, error) {
exec(success, error, "JSBridge", "coolMethod", [arg0]);
};
前端業務調用方法:<source-file src="src/android/JSBridge
.java" target-dir="src/com/wrs/plugin" />JSBridge
.coolMegthod(arg0, success, error);
整個調用流程爲:
js調用
.coolMegthod(arg0, success, error);
底層爲
cordova調用exec(success, error, "JSBridge", "coolMethod", [arg0]);
模式爲:exec(success, error, Service, Action, []);
Service是各自平臺下config.xml裏定義的feature名
Action對iOS來講是執行對應的方法,對Android來講做爲方法入參action
在插件目錄調用打包插件命令:cordova.plugins.JSBridge
JSBridgecordova.plugins.JSBridge
JSBridge
sudo plugman createpackagejson .
能夠生成一個 package.json,防止安裝插件時出現:
Error: Invalid Plugin! xxxxx needs a valid package.json
若是不是以插件的方式,前段與原生須要互相調用的話,能夠這樣配置:
在iOS平臺下的config.xml,即:Staging/wwww/config.xml添加:
<feature name="JSBridge">
<param name="ios-package" value="JSBridge" />
</feature>
android平臺下的config.xml,即:res/xml/config.xml添加:
<feature name="JSBridge">
<param name="android-package" value="" />
</feature>
兩個平臺都不能執行cordova prepare命令,不然會覆蓋掉上面的配置信息,
前段調用方式:
<script type="text/javascript" src="cordova.js"></script>
<script type="text/javascript">
function btnClick() {com.wrs.plugin.JSBridge
JSBridge
cordova.exec(successCallback, failCallback, "JSBridge", "coolMethod", actionArgs);
}
</script>
若是iOS工程須要使用cocopods,須要添加cordova-plugin-cocoapod-support插件:
cordova plugin add cordova-plugin-cocoapod-support --save
在comfit.xml裏面添加配置庫,代碼以下:
<platform name="ios"> <allow-intent href="itms:*" /> <allow-intent href="itms-apps:*" /> <preference name="pods_ios_min_version" value="9.0" /> <preference name="pods_use_frameworks" value="true" /> <pod branch="4.2.0" git="https://github.com/Alamofire/Alamofire" name="Alamofire" /> </platform>
執行ionic build iOS,會自動生成cocoa pods的庫文件, 可是因爲cocoa pods版本及oc與swift的問題,須要本身在生成工程後,從新使用本身的cocoa pods,更改pod file文件,執行pod install,這樣生成的工程纔會對應版本,正常編譯。