当前位置:首页 » 操作系统 » phonegap源码下载

phonegap源码下载

发布时间: 2022-03-16 05:29:22

‘壹’ 如何 在phonegap 框架 使用mqtt 消息推送推送 源码

在开发Android和iPhone应用程序时,我们往往需要从服务器不定的向手机客户端即时推送各种通知消息,iPhone上已经有了比较简单的和完美的推送通知解决方案,可是Android平台上实现起来却相对比较麻烦,最近利用几天的时间对Android的推送通知服务进行初步的研究。
在Android手机平台上,Google提供了C2DM(Cloudto Device Messaging)服务,起初我就是准备采用这个服务来实现自己手机上的推送功能。Android Cloud to Device Messaging
(C2DM)是一个用来帮助开发者从服务器向Android应用程序发送数据的服务。该服务提供了一个简单的、轻量级的机制,允许服务器可以通知移动应用程序直接与服务器进行通信,以便于从服务器获取应用程序更新和用户数据。C2DM服务负责处理诸如消息排队等事务并向运行于目标设备上的应用程序分发这些消息。

‘贰’ phonegap和android sdk之间怎么连接

java 端介绍
Java 端作为后台调用 Android 本地 SDK 的接口,主要实现了如下的功能:
建立通讯机制,提供接口给浏览器端,方便 JavaScript 进行调用。
数据队列的维护,以保证浏览器端的调用后产生的数据可以回送。
插件体系的建立,提供整个框架的可扩展性。
而这三部分的功能对应到代码中则是如下的几个重要的 Java 类:
DroidGap、CallbackServer
CallbackServer
Plugin、PluginManager
因此我们需要依次来了解这几个重要的 Java 类的具体实现,这样才可以对 PhoneGap 在 Android 上的体系有一个很好的了解。
DroidGap 的实现
当 我们完成一个基本的 PhoneGap 的示例后,我们就会发现,在使用 PhoneGap 进行开发的手机应用中,第一步就是将继承关系 extends Activity 修改为 extends DroidGap。因此,DroidGap 是整个应用开始的地点,首先需要了解 DroidGap 的内容。
在源码中可以看到 DroidGap 继承自 PhonegapActivity,而 PhonegapActivity 是一个抽象类,继承自 Activity,但是具体的实现都是集中在 DroidGap 类中。
因 此,我们继续回到 DroidGap 类中,当我们知道 DroidGap 类也是一个 Acitvity 后,就会明白,DroidGap 在 onCreate 方法中实现了整个类最初的一些操作,代码的实现则集中在 onCreate() 和 init() 这两个方法中,具体的流程如下:
设置 WebView
设 置 WebView 的代码都集中在 init() 方法中,其中一个值得注意的工作是设置 WebChromClient。代码中提供了一个继承自 WebChromClient 的类,重写了其中的 onJsAlert,onJsConfirm,onJsPrompt 等方法。而在 onJsPrompt() 方法中,实现了 PhoneGap 中 Java 端和浏览器端通讯的关键一步。因此,值得我们专门的关注其代码,具体的功能实现代码如下,我们已经过滤了一些错误处理、安全验证等等可能会妨碍我们对重要 的功能实现理解的代码:
代码清单 1. WebView 代码
if (reqOk && defaultValue != null && defaultValue.length() > 3
&& defaultValue.substring(0, 4).equals("gap:")) {
JSONArray array;
try {
array = new JSONArray(defaultValue.substring(4));
String service = array.getString(0);
String action = array.getString(1);
String callbackId = array.getString(2);
boolean async = array.getBoolean(3);
String r = pluginManager.exec(service, action, callbackId, message, async);
result.confirm(r);
} catch (JSONException e) {
e.printStackTrace();
}
}
// Polling for JavaScript messages
else if ......
在此,我们就可以明白,实现 JavaScript 与 Java 端通讯的原理是 JavaScript 利用 prompt 来传递调用信息的数据,在 onJsPrompt 中,重写的方法截获了这些数据,在完成了对数据格式等等分析后,按照要求进行具体的调用。而具体的调用利用是的 PluginManager 类,这将在随后说明。
绑定 js
在 完成 WebView 的设置后,再将 PhoneGap 和 js 绑定,实现 js 与 PhoneGap 的通讯。在这一步中主要的内容就是实例化了 CallbackServer 和 PluginManager 两个类。因此,更多的内容会在随后对这两个类的介绍中再说明。
载入 URL
LoadUrl 方法也是实现一个 PhoneGap 示例后很熟悉的方法,在 loadUrl 中,完成基本的字符串处理后,主要利用 runOnUiThread 开始处理,其中第一步检测是否需要提供载入的显示,之后使用 WebView 的 loadUrl 载入内容,并且设置超时时间。
至此,Java 端的准备工作也就完成,实现了 UI 的载入。可以看到,在 DroidGap 类中最重要的一个部分就是截获 JavaScript 的 prompt 数据。这是实现浏览器端和 Java 端通讯的基础。
Plugin 的实现
Plugin 是一个抽象类,实现了 IPlugin 接口,PhoneGap 中利用 Android SDK 实现逻辑代码的途径就是通过继承 Plugin 来实现。应此 Plugin 本身非常简单,最主要的部分是提供一个 execute 方法,如下:
public abstract PluginResult execute(String action, JSONArray args, String callbackId);
Plugin 的实现中的重要逻辑在其中来实现,它返回的是一个 PluginResult 对象,这个对象主要负责传递数据信息,包括的成员主要如下:
private final int status;
用于返回状态,status 与一个 enum 类型相关,用于标注插件的执行结果如何。
private final String message;
用于返回数据信息。
PluginManager 的实现
PluginManager 事实上是 DroidGap 类和具体的继承自 Plugin 的插件的联系纽带,由它来寻找和载入插件,并且调用。
首 先,PluginManager 在构造函数中,调用了 loadPlugins 方法,该方法负责解析 xml 配置文件,对应每个 plugin,调用一次 addService 用于注册插件,具体的注册地点,是通过维护一个 HashMap<String, String> 来实现,分别保存 serviceType, className。在成员中,有另外一个 HashMap<String, IPlugin> 用于实现 className 和 IPlugin 类的绑定。这样就实现了 serviceType 和 IPlugin 的对应。
在 PluginManager 中,执行插件的方法 exec 是主要功能,我们将会详细说明一下这个方法的过程:
利用查询之前提到的 HashMap<String, String> 将 service 和 className 对应起来,这样我们就获得了提供功能的插件类的位置。
通过 getClassByName 来获得插件类。
完成类型检测,确定对应的类是一个插件类。
执行 addPlugin 方法,其中则将第 2 步中获得插件类的 className 和具体的 Plugin 接口的实现绑定,具体的实现就是上文中提到的 HashMap<Strig,IPlugin>。
判断 Plugin 是否需要异步执行,再根据情况,选择直接执行或者是建立新的线程来执行。
完成执行后,得到的数据会根据情况交给 CallbackServer 来处理,PluginManager 会调用 DroidGap 中的 sendJavaScript 来将数据交给 CallbackServer,事实上,DroidGap 中的 sendJavaScript 不过是对 CallbackServer 中的 sendJavaScript 包装,实际调用的是 CallbackServer 中的 sendJavaScript 方法,这涉及到了 CallbackServer 类,随后就会说明。
执行结果的转换则是利用 PluginResult 中的一些 to***String 方法。这些方法返回了一个 String 类型,其中包括了具体的 JSON 对象和 callbackId,具体的形式则是一个 js 代码,用于前端的调用。
CallbackServer 的实现
CallbackServer 实现了 Runnable 接口,具体的功能就是维护一个数据的队列,并且建立一个服务器,用于 XHR 的数据传递,对数据的队列的维护利用的是 LinkedList<String>。
由于实现的是 Runnable 接口,在 CallbackServer 中,最主要的方法就是 run() 方法,run() 方法的具体内容简介如下:
首先利用 ServerSocket 监听端口,具体端口则自由分配。
在 accept 后则是对 HTTP 协议的解析,和对应的返回 status code。
在验证正确后,利用 getJavascript 方法得到维护的 LinkedList<String>() 中的保存的 js 代码,如果为空则返回 null。
这些具体的 string 类型的 js 代码则利用 socket 作为 response 返回给前端。
之后就是对队列维护的方法,这时理解之前的 sendJavaScript 则很简单,该方法与 getJavaScript 相反,一个是从 LinkedList 中取出 js 代码,一个则是加入。
综 上,CallbackServer 实现的是两个功能,一个是 XHR 的 SocketServer,一个是对队列的维护。而完成 CallbackServer 类的说明后,Java 端的主要功能也都说明完毕。随后会说明浏览器端的说明,在完成浏览器端说明后,我们就会明白整个 PhoneGap 框架运行的原理。

‘叁’ 像类似Phonegap这样的app开发工具还有哪些

PhoneGap是一个用基于Web语言去创建移动跨平台移动应用程序的快速开发平台。像这类的工具还有很多,尤其是国内有很多,我给你举几个例子。

1.APICloud

RhoMobile提供了Rhodes,这是一种基于Ruby的开源框架。这个工具让开发人员可以开发能够跨一大批操作系统和智能手机运行的原生应用程序。操作系统包括安卓、Windows Mobile、iPhone,几乎涵盖所有主流操作系统。

使用RhoMobile提供的框架,你只需要编写一次代码。该代码可以用来为大多数主流的智能手机开发应用程序。原生应用程序很适合与现有的硬件协同运行,所以你可以轻松、快速、准确地完成开发任务。

RhoMobile还为开发人员提供了RhoHub和RhoSync,前者是一种托管型的开发环境,后者可以作为独立式服务器软件来部署,以便确保用户手持设备上的所有应用程序数据是最新的。

‘肆’ 如何对phonegap应用加密

因为存放的是assets文件,不参与编译,只是单纯打在包里
目前加密方法只能是把js做压缩

高级一点就得结合Native做了

‘伍’ 如何使用PhoneGap打包Web App

因为我只弄了Andriod的环境,所以在此只以Andriod为例。
使用PhoneGap搭建Android开发的项目整体步骤如下:
安装java环境。
安装ant构建工具。
安装android的开发环境并配置环境变量。
安装Node.js环境并配置环境变量。
安装git
使用npm安装PhoneGap全局环境。
使用PhoneGap命令创建PhoneGap项目。
将PhoneGap编译为android项目。
将上述项目导入ADT进行后续开发。
安装.apk文件
其实官网给出的安装过程忽略了很多步骤(因为这里是Andriod环境,所以才会比官网的例子多出不少步骤),像我这种前端开发人员,电脑里可是连java都没装的,下面就详细讲解这些步骤,并最终生成apk文件。
安装Java环境
这点不用我讲,网上一搜一大堆,而且很多程序员电脑里面都是有java环境的,需要强调的是安装java的环境要和后面下载andriod开发环境一致,不然会报错,要保证都是32位或64位,笔者就装了个64位jdk然后,安卓环境是32位的,运行不成功。

‘陆’ 如何利用PhoneGap制作地图APP

在Android上,我们可以基于android.webkit.WebView作为应用的main view来产生一个应用程序,并让此WebView在应用启动时加载指定的网页,这样就构建了一个基于Android的WebApp。对于Android, Sencha的phonegap也是基于此方法对网页程序进行打包的,下载phonegap后,其主要包括二个文件:1、phonegap.0.9.4.jar此jar文件中包含了类DroidGap,其对Activity及WebView进行了适当的封装,可以让用户更方便地进行打包。更主要的功能是能实现的多个Webkit的plugin, 通过这些plugin可以在javascript中直接调用android的一些系统功能,比如得到设备的信息如屏幕大小,系统版本号等,还有打电话,发送短信,写本地文件等一系列功能。2、phonegap.0.9.4.js此js文件作了更高层次的封装,以便于在javascript中更方便地调用所增加的plugin的功能。比如在js中直接调用:navigator.notification.vibrate(0)可以直接让手机进行振动而navigator.notification.beep(2)可以让手机Beep二声以下尝试一个最简单的例子(也可以参见phonegap中自带的一个例子):(1)java源代码文件: Sample.javapackage com.phonegap.Sample; import android.app.Activity; import android.os.Bundle; import com.phonegap.*; public class Sample extends DroidGap { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); super.loadUrl("file:///android_asset/www/index.html"); } } (2)网页代码: index.html > <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <script type="text/javascript" charset="utf-8" src="phonegap.0.9.4.js">script> <title>Testtitle> head> <body> <a href="javascript:navigator.notification.alert('hello');">click mea> body> html> 把此文件放置在工程的assets/www/目录下,如果网页代码中包含了其它的目录,则一并放置在这一目录下。(3)在工程中加入库phonegap.0.9.4.jar的引用编译运行并点击页面中click me链接时,可以见到以下画面:注意:(1)phonegap.0.9.4.jar中提供了很多的plugin, 上面的示例程序只调用了navigator.notification.alert, 如需要调用其它功能,则需要在android工程的Manifest.xml中加入这个功能permission声明:<uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.VIBRATE" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.RECEIVE_SMS" /> <uses-permission android:name="android.permission.RECORD_AUDIO" /> <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> <uses-permission android:name="android.permission.READ_CONTACTS" /> <uses-permission android:name="android.permission.WRITE_CONTACTS" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> (2)在此可下载完整的工程文件,此例子基于phonegap自带的一个例子,但只保留了最少的部分。小结:的内容介绍完了,希望通过PhoneGap内容的学习能对你有所帮助!

‘柒’ 如何用phonegap打包基于ios的webapp

对于Android, Sencha的phonegap也是基于此方法对网页程序进行打包的,下载phonegap后,其主要包括二个文件:

1、phonegap.0.9.4.jar

此jar文件中包含了类DroidGap,其对Activity及WebView进行了适当的封装,可以让用户更方便地进行打包。

更主要的功能是能实现的多个Webkit的plugin, 通过这些plugin可以在javascript中直接调用android的一些系统功能,比如得到设备的信息如屏幕大小,系统版本号等,还有打电话,发送短信,写本地文件等一系列功能。

2、phonegap.0.9.4.js

此js文件作了更高层次的封装,以便于在javascript中更方便地调用所增加的plugin的功能。比如在js中直接调用:

navigator.notification.vibrate(0)可以直接让手机进行振动

而navigator.notification.beep(2)可以让手机Beep二声

以下尝试一个最简单的例子(也可以参见phonegap中自带的一个例子):

(1)java源代码文件: Sample.java

packagecom.phonegap.Sample; importandroid.app.Activity; importandroid.os.Bundle; importcom.phonegap.*; { @Override publicvoidonCreate(BundlesavedInstanceState) { super.onCreate(savedInstanceState); super.loadUrl("file:///android_asset/www/index.html"); } }

(2)网页代码: index.html

<!DOCTYPEhtml><html><head><metahttp-equiv="Content-Type"content="text/html;charset=utf-8"> <scripttype="text/javascript"charset="utf-8"src="phonegap.0.9.4.js"></script><title>Test</title></head><body><ahref="javascript:navigator.notification.alert('hello');">clickme</a></body></html>

把此文件放置在工程的assets/www/目录下,如果网页代码中包含了其它的目录,则一并放置在这一目录下。

(3)在工程中加入库phonegap.0.9.4.jar的引用

编译运行并点击页面中click me链接时,可以见到以下画面:

‘捌’ 如何用最新的phonegap创建一个ios应用

对于Android,Sencha的phonegap也是基于此方法对网页程序进行打包的,下载phonegap后,其主要包括二个文件:1、phonegap.0.9.4.jar此jar文件中包含了类DroidGap,其对Activity及WebView进行了适当的封装,可以让用户更方便地进行打包。更主要的功能是能实现的多个Webkit的plugin,通过这些plugin可以在javascript中直接调用android的一些系统功能,比如得到设备的信息如屏幕大小,系统版本号等,还有打电话,发送短信,写本地文件等一系列功能。2、phonegap.0.9.4.js此js文件作了更高层次的封装,以便于在javascript中更方便地调用所增加的plugin的功能。比如在js中直接调用:navigator.notification.vibrate(0)可以直接让手机进行振动而navigator.notification.beep(2)可以让手机Beep二声以下尝试一个最简单的例子(也可以参见phonegap中自带的一个例子):(1)java源代码文件:Sample.javapackagecom.phonegap.Sample;importandroid.app.Activity;importandroid.os.Bundle;importcom.phonegap.*;{@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);super.loadUrl("file:///android_asset/www/index.html");}}(2)网页代码:index.htmlTestclickme把此文件放置在工程的assets/www/目录下,如果网页代码中包含了其它的目录,则一并放置在这一目录下。(3)在工程中加入库phonegap.0.9.4.jar的引用编译运行并点击页面中clickme链接时,可以见到以下画面:

‘玖’ phonegap3.0在命令行下运行phonegap run android后,如何选择本地设备

phonegap环境配置比较复杂,建议你下载phonegap3.0的zip包后解压缩,里面有android的事例源代码,用ADT打开然后在示例代码里面修改就可以了,手机连接的话要确认手机与ADT连接的端口没有被占用,建议用豌豆荚脸上手机后run az android application,然后就可以选择在你的手机上运行啦

‘拾’ phonegap 能将网站打包为APP吗

对于Android, Sencha的phonegap也是基于此方法对网页程序进行打包的,下载phonegap后,其主要包括二个文件: 1、phonegap.0.9.4.jar 此jar文件中包含了类DroidGap,其对Activity及WebView进行了适当的封装,可以让用户更方便地进行打包。 更主要...

热点内容
把服务器做成虚ip 发布:2024-09-25 17:18:24 浏览:931
安卓手机看如懿传怎么看 发布:2024-09-25 17:11:18 浏览:791
pythonnumpy矩阵 发布:2024-09-25 17:11:07 浏览:666
个性化linux 发布:2024-09-25 17:10:01 浏览:587
解压好文件后如何安装系统文件 发布:2024-09-25 16:25:09 浏览:164
编程字体排行 发布:2024-09-25 16:15:32 浏览:796
幸运之杖安卓在哪里下载 发布:2024-09-25 16:13:26 浏览:254
execsqlinsertinto 发布:2024-09-25 16:08:56 浏览:624
相对权重算法 发布:2024-09-25 15:57:13 浏览:591
gl8es买哪个配置 发布:2024-09-25 15:47:02 浏览:724