cordova.js教程,cordova nodejs

本文目錄一覽:

怎麼在android studio中編寫自定義cordova插件

一、編寫JS插件

僅提供Javascript介面可供調用,不與native code相交互。

1、創建如下結構的項目,將其push到github方便後續安裝

2、編寫配置文件

創建項目之後,修改plugin.xml對該插件進行配置,因為該插件為單純的js插件,與平台無關,所以plugin.xml配置很簡單。

?xml version=”1.0″ encoding=”utf-8″?

plugin xmlns=””

id=”cordova.plugin.demo”

version=”0.1.0″

nameCordovaPluginJsDemo/name

js-module src=”www/jsplugin.js” name=”jsplugin”

clobbers target=”JsPlugin” /

/js-module

/plugin

3、編寫javascript介面

修改jsplugin.js,加入介面內容

var JsPlugin = function() {};

JsPlugin.prototype.alert = function() {

alert(“I am a js plugin”);

};

var jsPlugin = new JsPlugin();

module.exports = jsPlugin;

完成之後將整個插件內容push到github準備後續安裝。

二、創建ionic項目

創建空白ionic項目進行插件測試。

1、創建空白項目,使用ios模擬機測試

ionic start testPlugin blank

cd testPlugin

ionic platform add ios

ionic build ios

ionic emulate ios

2、安裝插件

cordova plugin add

cordova如何修改安卓 app 目標版本

在Eclipse裡面設置啊。在android項目里打開AndroidManifest設置。在Manifest選項卡里有個Version code設置版本號,Version name設置版本名稱。

或者你不用Eclipse,就用記事本打開AndroidManifest文件,

manifest xmlns:android=”xxxxxx(這個地方不要複製修改)”

    package=”com.xxx.xxx”

    android:versionCode=”2″

    android:versionName=”2.0″

cordova怎麼使用jquery

如何使用cordova使用jQuery Mobile

jquery html5 cordova

我想要的Cordova 2.7.0我跨platoform瀏覽器的jQuery Mobile的工作。 我是新來的手機的差距和jQuery。 我已經下載了Cordova 2.7.0從PhoneGap的。 但如何獲得Cordova-2.7.0.js從它的文件和wher它被裝入和它是如何被安裝。 利用這一點,我想Geolocation APIcordova。 請指教

本文地址 :CodeGo.net/8385569/

————————————————————————————————————————-

1.添加js文件中您的選擇:script type=”text/javascript” charset=”utf-8″ src=”cordova-2.0.0.js”/script與文件執行。

的問候,丹尼爾

2.PhoneGap的入門

按照說明,這正是。你必須創建一個新的PhoneGap項目來自行也看過這個線程,如果你遇到了「Microsoft JScript中的錯誤:找不到路徑:錯誤

之後一切都做,你不是簡單地包括jQuery的

如何安裝固定版本的cordova

1、cordova3.0.0的命令行cordoava CLI和phonegap CLI在windows系統上開發android程序的注意事項『

a 首先要根據要求安裝最新的android SDK,目前我的版本要求 SDk 17才能順利進行

b 一定要配置好環境變數,把SDK’s tools and platform-tools 目錄配置到你的環境變數中去,

另外還要把ANT也要配置到系統環境變數中去,如

;%JAVA_HOME%\bin;%ANT_HOME%\bin

2、cordovan3.0.0的插件可以用命令行遠程從git添加,也可以下載下來從本地用命令行添加,兩種方法的命令

是一樣的,只需要把最後參數的遠程地址改成本地路徑即可

3、npm install -g cordova@XXXXX 可以指定要安裝的cordova版本

4、把老版本的3.0.0以前開發的程序升級到3.0.0的注意事項

a 需要新建一個cordova項目

b 把seerts里的www文件夾下的東西都複製過去,記住cordova.js文件不要替換,要用新創建的裡面的cordova.js不要用舊的程序里的覆蓋

c 把 src文件下的程序包都複製到新程序的src下面,需要修改所有的引用org.apache.cordova.api成org.apache.cordova,

這是新版本的cordova命名上的變化

d 先前程序中的android的訪問許可權設置需要在新程序中重新進行設置

e 把config.xml中添加的插件的格式在新的程序中按照新的格式重新進行整理

Cordova iOS 怎麼注入本地cordova.js 給遠程H5調用

Function Deal(exp)exp=Replace(exp,””,””)exp=Replace(exp,””,””)exp=Replace(exp,”‘”,”””)exp=Replace(exp,Chr(13),”br”)Deal=expEnd Function這個方法就可以了,沒必要判斷那麼多。用不出這個標記怎麼也掛不上,每個HTML標記都會有嘛。

crodova怎麼直接調用android原生方法

crodova直接調用android原生方法的時候要了解一些東西,你可以看下!我發你看下,

一.總體結構

Cordova的目標是用HTML,JS,來完成手機客戶端的開發,並且是只開發一次可以在各種手機平台上跑,所以理想狀態是用JS去控制所有事件。Cordova基於WebView組件。每個繼承自DroidGap的Activity對應一個獨立的CordovaWebView。Cordova提供了一些列的JS介面來訪問Android的native。以插件(Plugin)的形式提供自定義介面給JS端訪問。

二.一些疑問

1. Cordova框架是如何啟動的?

2. 插件是怎麼回事?如何工作的。

3. Cordova的官方文檔都是說JS如何訪問Android的native,那麼在Android的native中是否可以訪問JS的函數?如何訪問?

三.結構解剖

1.Cordova的啟動

1) 如何啟動

Cordova提供了一個Class(DroidGap)和一個interface(CordovaInterface)來讓Android開發者開發Cordova。一般情況下實現DroidGap即可,因為DroidGap類已經做了很多準備工作,可以說DroidGap類是Cordova框架的一個重要部分;如果在必要的情況下實現CordovaInterface介面,那麼這個類中很多DroidGap的功能需要自己去實現。

繼承了DroidGap或者CordovaInterface的Activity就是一個獨立的Cordova模塊,獨立的Cordova模塊指的是每個實現了DroidGap或者CordovaInterface介面的Activity都對應一套獨立的WebView,Plugin,PluginManager,沒有共享的。(我覺得這樣是很不爽的,沒有共享,如果plugin和Activity很多的情況下這樣是相當的耗資源)

當在實現了DroidGap或者CordovaInterface介面的Activity的onCreate方法中調用DroidGap的loadUrl方法即啟動了Cordova框架。

2)啟動過程

public class A extends DroidGap{}

a. 在A的onCreate方法中首先調用super. onCreate()

這一步中創建了一個LinearLayout(LinearLayoutSoftKeyboardDetect.class)布局,以及計算這個Layout的大小及顯示的一些方式。在後面的過程中會將一個WebView加到這個LinearLayout中。

b. 再次調用DroidGap 的loadUrl()方法

DroidGap. loadUrl()中首先判斷A的CordovaWebView是否實例化,如果沒有回實例化一個CordovaWebView對象並將該對象添加到父LinearLayout中去,同時將該LinearLayout添加的ContentView。見以下代碼:

public void onCreate(Bundle savedInstanceState) {

root = new LinearLayoutSoftKeyboardDetect(this, width, height);

}

public void init() {

CordovaWebView webView = new CordovaWebView(DroidGap.this);

this.init(webView,

new CordovaWebViewClient(this, webView),

new CordovaChromeClient(this, webView));

}

public void init(CordovaWebView webView, CordovaWebViewClient webViewClient, CordovaChromeClient webChromeClient) {

this.appView = webView;

this.appView.setId(100);

this.root.addView(this.appView);

setContentView(this.root);

}

public void loadUrl(String url) {

if (this.appView == null) {

this.init();

}

}

這樣就完成了我們在一般開發中使用的模式:

public void onCreate(Bundle savedInstanceState) {

super. onCreate(Bundle savedInstanceState);

setContentView(resID);

}

在初始化完CordovaWebView後調用CordovaWebView.loadUrl()。此時完成Cordova的啟動。

c. 在實例化CordovaWebView的時候, CordovaWebView對象會去創建一個屬於當前CordovaWebView對象的插件管理器PluginManager對象,一個消息隊列NativeToJsMessageQueue對象,一個JavascriptInterface對象ExposedJsApi,並將ExposedJsApi對象添加到CordovaWebView中,JavascriptInterface名字為:_cordovaNative。

d. Cordova的JavascriptInterface

在創建ExposedJsApi時需要CordovaWebView的PluginManager對象和NativeToJsMessageQueue對象。因為所有的JS端與Android native代碼交互都是通過ExposedJsApi對象的exec方法。

在exec方法中執行PluginManager的exec方法,PluginManager去查找具體的Plugin並實例化然後再執行Plugin的execute方法,並根據同步標識判斷是同步返回給JS消息還是非同步。由NativeToJsMessageQueue統一管理返回給JS的消息。

e. 何時載入Plugin,如何載入

Cordova在啟動每個Activity的時候都會將配置文件中的所有plugin載入到PluginManager。那麼是什麼時候將這些plugin載入到PluginManager的呢?

在b中說了最後會調用CordovaWebView.loadUrl(),對,就在這個時候會去初始化PluginManager並載入plugin。PluginManager在載入plugin的時候並不是馬上實例化plugin對象,而是只是將plugin的Class名字保存到一個hashmap中,用service名字作為key值。

當JS端通過JavascriptInterface介面的ExposedJsApi對象請求Android時,PluginManager會從hashmap中查找到plugin,如果該plugin還未實例化,利用java反射機制實例化該plugin,並執行plugin的execute方法。

2.Cordova插件

在『1』中已經接觸了些Cordova插件的東西,這裡總結下Cordova的插件

Cordova插件只是一個普通的java類,沒有什麼特殊之處。插件中的execute方法只是Cordova框架的一個規定。

Cordova為了方便於插件的管理,所以引進了一個PluginManager來管理插件。在ExposedJsApi中,PluginManager起一個代理作用。

在原生態的WebView開發中,我們可以給WebView添加一個JavascriptInterface對象來使JS可以訪問android的代碼;在Cordova也有一個這樣的對象ExposedJsApi。

在ExposedJsApi中,它將請求轉發給我們的PluginManager,這個時候PluginManager會根據給的service的名字來查找具體的Plugin並執行。

所以,我認為Cordova插件是android端的API,提供給JS。

在Cordova雖然有JavascriptInterface對象ExposedJsApi,但在JS端並不是真正通過android提供的window.JavascriptInterface.request這種方式來請求。在JS端,Cordova是通過JS的prompt()函數觸發ChromeClient中的onJsPrompt方法,通過onJsPrompt去獲取到請求,再將請求轉發給ExposedJsApi。

註:在Cordova中,Java端和JavaScript端都準備了代碼來使用特殊URL(” + service + ‘#’ + action + ‘#’ + callbackId + ‘#’ + argsJson;)的方式交互請求,但並沒有真正使用。

3.Cordova的數據返回

Cordova中通過exec()函數請求android插件,數據的返回可同步也可以非同步於exec()函數的請求。

在開發android插件的時候可以重寫public boolean isSynch(String action)方法來決定是同步還是非同步。

Cordova在android端使用了一個隊列(NativeToJsMessageQueue)來專門管理返回給JS的數據。

1)同步

Cordova在執行完exec()後,android會馬上返回數據,但不一定就是該次請求的數據,可能是前面某次請求的數據;因為當exec()請求的插件是允許同步返回數據的情況下,Cordova也是從NativeToJsMessageQueue隊列頭pop頭數據並返回。然後再根據callbackID反向查找某個JS請求,並將數據返回給該請求的success函數。

2)非同步

Cordova在執行完exec()後並不會同步得到一個返回數據。Cordova在執行exec()的同時啟動了一個XMLHttpRequest對象方式或者prompt()函數方式的循環函數來不停的去獲取NativeToJsMessageQueue隊列中的數據,並根據callbackID反向查找到相對應的JS請求,並將該數據交給success函數。

註:Cordova對本地的HTML文件(file:// 開頭的URL)或者手機設置有代理的情況下使用XMLHttpRequest方式獲取返回數據,其他則使用prompt()函數方式獲取返回數據。

4.Android代碼訪問JS

翻了Cordova的官方文檔和Cordova代碼,發現Cordova並未提供一種方式來讓我們在Android中去訪問JS。現在想來可能是這樣的道理(個人觀點),因為Cordova框架的性質就是一個用HTML+JS來開發APP的,相當於java用的虛擬機層(比喻不是很恰當),所以Cordova未提供Android訪問JS的方式。

如果需要Android訪問JS,只有使用原生態WebView開發的方式

loadUrl(「javascript:xxx」)

因為在Cordova框架中需要訪問JS的時候也是使用的這種方式,如下(Activity的onResume事件):

public void handleResume(boolean keepRunning, boolean activityResultKeepRunning)

{

// Send resume event to JavaScript

this.loadUrl(“javascript:try{cordova.fireDocumentEvent(‘resume’);}catch(e){console.log(‘exception firing resume event from native’);};”);

// Forward to plugins

if (this.pluginManager != null) {

this.pluginManager.onResume(keepRunning);

}

// Resume JavaScript timers (including setInterval)

this.resumeTimers();

paused = false;

}

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/304295.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2025-01-01 11:05
下一篇 2025-01-01 11:05

相關推薦

  • JS Proxy(array)用法介紹

    JS Proxy(array)可以說是ES6中非常重要的一個特性,它可以代理一個數組,監聽數據變化並進行攔截、處理。在實際開發中,使用Proxy(array)可以方便地實現數據的監…

    編程 2025-04-29
  • MQTT使用教程

    MQTT是一種輕量級的消息傳輸協議,適用於物聯網領域中的設備與雲端、設備與設備之間的數據傳輸。本文將介紹使用MQTT實現設備與雲端數據傳輸的方法和注意事項。 一、準備工作 在使用M…

    編程 2025-04-29
  • Python3.6.5下載安裝教程

    Python是一種面向對象、解釋型計算機程序語言。它是一門動態語言,因為它不會對程序員提前聲明變數類型,而是在變數第一次賦值時自動識別該變數的類型。 Python3.6.5是Pyt…

    編程 2025-04-29
  • Deepin系統分區設置教程

    本教程將會詳細介紹Deepin系統如何進行分區設置,分享多種方式讓您了解如何規劃您的硬碟。 一、分區的基本知識 在進行Deepin系統分區設置之前,我們需要了解一些基本分區概念。 …

    編程 2025-04-29
  • 寫代碼新手教程

    本文將從語言選擇、學習方法、編碼規範以及常見問題解答等多個方面,為編程新手提供實用、簡明的教程。 一、語言選擇 作為編程新手,選擇一門編程語言是很關鍵的一步。以下是幾個有代表性的編…

    編程 2025-04-29
  • Qt雷達探測教程

    本文主要介紹如何使用Qt開發雷達探測程序,並展示一個簡單的雷達探測示例。 一、環境準備 在開始本教程之前,需要確保你的開發環境已經安裝Qt和Qt Creator。如果沒有安裝,可以…

    編程 2025-04-29
  • 猿編程python免費全套教程400集

    想要學習Python編程嗎?猿編程python免費全套教程400集是一個不錯的選擇!下面我們來詳細了解一下這個教程。 一、課程內容 猿編程python免費全套教程400集包含了從P…

    編程 2025-04-29
  • Python煙花教程

    Python煙花代碼在近年來越來越受到人們的歡迎,因為它可以讓我們在終端里玩煙花,不僅具有視覺美感,還可以通過代碼實現動畫和音效。本教程將詳細介紹Python煙花代碼的實現原理和模…

    編程 2025-04-29
  • NodeJS 建立TCP連接出現粘包問題

    在TCP/IP協議中,由於TCP是面向位元組流的協議,發送方把需要傳輸的數據流按照MSS(Maximum Segment Size,最大報文段長度)來分割成若干個TCP分節,在接收端…

    編程 2025-04-29
  • 使用Snare服務收集日誌:完整教程

    本教程將介紹如何使用Snare服務收集Windows伺服器上的日誌,並將其發送到遠程伺服器進行集中管理。 一、安裝和配置Snare 1、下載Snare安裝程序並安裝。 https:…

    編程 2025-04-29

發表回復

登錄後才能評論