有了phonegap你还android吗?

第一章 phonegap介绍

1.1 什么是phonegap

PhoneGap是一个自由开放源码的开发工具和框架,允许利用HTML + JavaScript + CSS的强大功能在多个手机平台上开发程序,开发出来的程序经过在各自的平台上编译形成独立的安装程序。使程序看起来和native的程序一样。

1.2 PhoneGap的优势和劣势

优势:

l  跨平台:一次开发,多个平台共用。现主要包括了android,iOS,Apple iOS, Google Android, Palm, Symbian, BlackBerry 等。WP7等平台也在逐步兼容中。

l  降低开发门槛。对于很多WEB开发人员来说,熟悉Objective-C语言和Java语言都是比较痛苦的事情。有了PhoneGap就不用担心这些了。用熟悉的Web前端技术就可以开发出很专业的手机应用程序。

l  提供强大的硬件访问控制。比起传统的Web程序,PhoneGap提供了一些列的JS 的类,可以直接访问硬件。比如加速,相机,指南针,GPS,文件访问等,可以让你用JS方便地调用系统的硬件。以弥补传统Web程序的一块错误。

l  方便的安装和使用。PhoneGap的架构很复杂,但对于大多数开发者来说,只用很简单的配置就可以搭好环境。只用专注写好自己的Web页面,拷贝进去就可以了。

劣势:

l  运行速度慢:程序的载入和UI界面的反应都比原生的程序慢,因为它实际上还是在展示Web页面,所以载入、页面刷新等肯定是需要一定时间的。

l  不适合部分程序。如果你的程序需要3D功能,或者对界面刷新有较高的要求,这样的程序现在来说还只是用原生的语言会比较好。

1.3 PHONEGAP开发需要的基本知识

l  HTML:做为最基本的Web开发,HTML知识必不可少。现在很多移动终端已经支持HTML5了,所以最好学会HTML5相关的知识;

l  CSS:定义的页面的样式等等,不用CSS,你的页面会很难控制定位和样式等等。建议能掌握CSS3的相关知识,能写出更好的界面;

l  JavaScript:后台的交互都由JavaScript实现,读写数据库,载入Google Map等等;

l  PhoneGap的类库:都是JavaScript的库,使用很简单,有详细文档,可以参考官网:http://docs.phonegap.com/

l  基本的平台知识:比如要做iPhone的程序,就要知道XCode怎么安装,怎么编译,怎么获取授权证书,真机调试等等,要做android程序就要会搭建Ecllipse开发环境等等。会简单使用这些平台后,就可以安装PhoneGap的平台了,可以参考:http://www.phonegap.com/start

1.4 PHONEGAP的得力助手

开发PhoneGap的程序,jQuery Mobile不是必备,但是有了jQuery Mobile,可以使你的程序美观很多。

jQuery Mobile其实是一堆的样式集和JAVA事件。比如写一个按钮,iOS和android的是不同的,用HTML做出来的往往很丑。一般的处理方式是重新定义按钮的样式,使它变得更像手机平台上的按钮。jQuery Mobile为你提供了这一套框架,你可以通过很简单的属性设置就可以做出跟手机平台下车差不多的按钮,相当方便。

详情可以参考:http://jquerymobile.com/

也可以使用Sencha Touch,界面没的说,也是非常不错的选择

详情可参考:http://www.sencha.com/

第二章 快速开始

2.1 快速开始

官方的使用教程是

http://phonegap.com/start#android

这里只是简单的翻译了一下

2.1.1 选择平台

 

我选的是android

也可以直接看视频操作

2.1.2 环境需求及安装

Eclipse 3.4+

Download and install Eclipse Classic

Download and install Android SDK

Download and install ADT Plugin

Download the latest copy of PhoneGap and extract its contents. We will be working with the Android directory.

上边三个是android的基本环境,下边的是phonegap所需的sdk包。

2.1.3 设置工程

创建android工程,选择

 

创建完成后在根目录下创建两个新目录

  • /libs
  • /assets/www

然后到phonegap目录的android目录下拷贝

phonegap-1.3.0.js到 /assets/www

拷贝phonegap-1.3.0.jar到/libs

拷贝xml文件夹下的内容到/res目录下

修改完的目录结构如下

 

将主Activity的继承关系修改为DroidGap,并且将jar包的引用导入工程中。

setContentView(R.layout.main);修改为

super.loadUrl("file:///android_asset/www/index.html");

右键打开AndroidManifest.xml

把下面的内容贴到version name下边

<supports-screens
android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="true"
android:resizeable="true"
android:anyDensity="true"
/>
<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" /> <uses-permission android:name="android.permission.GET_ACCOUNTS" />

添加完后xml中的内容如下,如果有对不上的可以手动添加

 

我修改后的xml文件内容如下

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

    package="com.tgyt.phonegap"

    android:versionCode="1"

    android:versionName="1.0" >

   

    <supports-screens

     android:largeScreens="true"

     android:normalScreens="true"

     android:smallScreens="true"

     android:resizeable="true"

     android:anyDensity="true"

    />

    <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" />

    <uses-permission android:name="android.permission.GET_ACCOUNTS" />

    <uses-permission android:name="android.permission.RECORD_VIDEO" />

    <uses-permission android:name="android.permission.BROADCAST_STICKY" />

   

    <uses-feature android:name="android.hardware.comera" />

    <uses-feature android:name="android.hardware.comera.autofocus" />

 

    <uses-sdk android:minSdkVersion="8" />

 

    <application

        android:icon="@drawable/ic_launcher"

        android:label="@string/app_name" >

        <activity

            android:label="@string/app_name"

            android:name=".HellophonegapActivity" android:configChanges="orientation|keyboardHidden">

            <intent-filter >

                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />

            </intent-filter>

        </activity>

        <activity

            android:label="@string/app_name"

            android:name="com.phonegap.DroidGap" android:configChanges="orientation|keyboardHidden">

            <intent-filter >

            </intent-filter>

        </activity>

    </application>

 

</manifest>

运行android程序,就可以看到如下的界面

 

第三章 PhoneGap架构基础及工作原理

3.1 PhoneGap能做什么?

3.1.1 基于Web技术开发移动设备客户端应用

用您熟悉的JavaScript、HTML技术,或者结合移动Web UI框架jQuery Mobile、Sencha Touch 开发跨平台移动客户端。

3.1.2 用PhoneGap访问设备本地API

提供跨平台设备访问能力,以下列出访问设备部分功能,本系列专题在以后文章中详解使用方法。

ACCELEROMETER(重力感应)

CAMERA(摄像机)

COMPASS(指南针)

CONTACTS(通讯录)

FILE(文件)

GEOLOCATION(地理定位)

MEDIA(媒体)

NETWORK(网络)

NOTIFICATION (通知)

STORAGE(Sqlite数据库存储)

3.1.3 发布您的程序到不同移动平台

PhoneGap如何工作?

PhoneGap架构拥有强大的跨平台访问设备能力,但是其工作原理并不神秘,下面以iPhone和Android平台为例进行分析。

iPhone和Android平台共同点是都有内置的WebView组件,其具备两个特性:

1、WebView组件实质是移动设备的内置浏览器

WebView这个内置浏览器特性是Web能被打包成本地客户端的基础,可方便的用HTML5、CSS3页面布局,这是移动Web技术的优势相对于原生开发。

2、WebView提供Web和设备本地API双向通信的能力

PhoneGap针对不同平台的WebView做了扩展和封装,使WebView这个组件变成可访问设备本地API的强大浏览器,所以开发人员在PhoneGap框架下可通过JavaScript访问设备本地API。

明白以上两个特性,参照下面PhoneGap与设备本地API通信图,一个成熟的PhoneGap技术客户端运行状况如下:

应用运行在WebView组件上 —》 通过PhoneGap在各平台的扩展 —》 最终访问设备本地资源

 

看了上面的介绍你还在等什么,一起phonegap吧。

时间: 2024-08-29 19:36:38

有了phonegap你还android吗?的相关文章

phonegap和android混用问题

问题描述 phonegap初学者,android和phonegap可以混用吗?因为android页面的一些地方都已经写好了,现在有些地方需要使用phonegap,我看了它的用法super.onCreate(savedInstanceState);super.loadUrl("file:///android_asset/www/index.html");这样一个activity就全变成了html了,它能像webview那样可以自定义控件的大小和android的其他控件一起使用吗?如果不行

PhoneGap学习笔记

Mobile Application与Web Application的区别: 1.屏幕尺寸区别很大.手机屏幕上是寸土寸金,UI设计还需要考虑到用户手指点击的舒适度. 2.使用的场景不同,手机用户多数在户外的时候使用应用,希望能够在尽可能快的时间内完成任务. 3.用户交互的方式不同.因为手机拥有传感器.指南针等物理部件,因此我们开发程序的时候所需要考虑的会完全不同. 4.手机平台的差异性更加大,不仅操作系统有差异,每个操作系统上的特性都有所不同. PhoneGap架构 Android开发环境准备

android网络抓包及Wireshark介绍

为了解phonegap及一些android应用的webview使用情况,查找了一些资料,总结如下: 主要操作流程如下: 使用TCPdump工具,抓TCP数据包.将数据包上传到PC,通过Wireshark查看数据包. 如果要从物理设备(手机)上抓包,要确保拥有该设备的root权限.本文是用android虚拟设备进行实验. 1.下载TCPdump TCPdump下载地址http://www.strazzere.com/android/tcpdump 2.启动android虚拟机或手机,启动成功后,打

基于命令行编译打包phonegap for android应用

也许你习惯了使用Eclipse编译和打包Android应用.不过,对于使用html5+js开发的phonegap应用,本文建议你抛弃Eclipse,改为使用命令行模式,绝对的快速和方便. 一直以来,Eclipse+ADT是广大Android应用开发者的必备工具,毋庸置疑,Ecplise在开发Android原生应用方面有着几乎不可替换的位置.Phonegap是一个已经不算是新鲜事物的东西了.PhoneGap是一个开源的开发框架,使用HTML,CSS和JavaScript来构建跨平台的的移动应用程序

如何在Android中结合使用PhoneGap和Dojo Mobile

您还将使用 Dojo Mobile 为应用程序提供一种与原生应用类似的感觉.在本文中,将了解如何结合使用 PhoneGap 和 Dojo Mobile,快速为 Android 创建一个外观和行为都类似于典型 Android 应用程序的混合移动应用程序. 无论您走到哪里,都能看到人们使用移动设备与亲朋进行联系,比如照张照片发布到社交网站上,查找饭店地址,或者查看最新的新闻标题.移动设备的外形和款式各式各样.移动电话可以运行各种不同的操作系统,比如 Apple 的 iOS.Google 的 Andr

android 为什么刚建的项目,运行就报错,我什么还没干,就想试试,结果就报错了!!

问题描述 android 为什么刚建的项目,运行就报错,我什么还没干,就想试试,结果就报错了!! 解决方案 你新建的项目有错误,可能少了包,或者缺少文件吧! 解决方案二: 这个好像是布局文件不匹配的原因,但有时也可能是eclipse的原因.或者看看布局,或者重启eclipse就好了 解决方案三: 编译的class.apk文件有问题:执行清除一下就可以了.Project→Clean→Clena Projects Selected Below 选择你出错的项目就可以了. 解决方案四: 工程存在错误,

或许您还不知道的八款Android开源游戏引擎

原文: http://blog.csdn.net/cping1982/article/details/5788921 很多初学Android游戏开发的朋友,往往会显得有些无所适从,他们常常不知道该从何处入手,每当遇到自己无法解决的难题时,又往往会一边羡慕于iPhone下有诸如Cocos2d-iphone之类的免费游戏引擎可供使用,一边自暴自弃的抱怨Android平台游戏开发难度太高,又连个像样的游戏引擎也没有,甚至误以为使用Java语言开发游戏是一件费力不讨好且没有出路的事情. 事实上,这种想法

android中我想对实现View放大。放大以后里面的组件还有点击事件

问题描述 android中我想对实现View放大.放大以后里面的组件还有点击事件 我想对实现View放大.放大以后里面的组件还有点击事件.不是道能否实现.这个问题一直困扰我很久了.谢谢.

挑战Android,Ubuntu还远着呢!

Ubuntu是一个基于Linux的桌面电脑操作系统.这两天,智能手机界的一个热点消息是Canonical公司发布了Ubuntu的移动版.从展示来看,Ubuntu的界面比较干净,各种手势操作也比较人性化.但是客观来看,它要想能够比肩智能机操作系统老三老四(WP和RIM),都还有很长一段距离要走,更别说与Android和iOS论道了. 以下来自CNET的一篇文章,对此进行了分析,由虎嗅编译: Canonical公司为智能机世界带来了它的Ubuntu软件,并承诺将带来一个干净的界面.可以优化低端硬件性