1. 程式人生 > >Hybrid開發框架搭建(一)PhoneGap簡介

Hybrid開發框架搭建(一)PhoneGap簡介

本系列部落格將介紹採用PhoneGapBackboneSeajsRatchetSPMjs庫或工具搭建一個Web主體型的Hybrid模式的移動應用開發框架。

 

Phonegap是一款開源的開發框架,旨在讓開發者使用HTMLJavascriptCSSWeb APIs開發跨平臺的移動應用程式。PhoneGap原本由Nitobi公司開發,後來Adobe收購了這件公司,AdobePhoneGap的核心程式碼捐獻給了Apache,於是有了Apache Cordova。其實這兩者的核心程式碼是沒區別的,PhoneGap是原來的名字,Adobe擁有

PhoneGap的商標,所以捐出去的程式碼就改了名字為Apache Cordova,目前為止基本上可以認為這二者是同一個東西,除了包名不同,事實上從PhoneGap下載到的phonegap-2.9.1.zip解壓後發現裡面的名字也是cordova。

                                

上圖分別是PhoneGapCordova官網上介紹二者的圖片,圖片對比也可以看出Cordova類似於PhoneGap

的大腦(核心部件)。PhoneGap為企業開發者提供了雲端打包服務和其它功能。

下面在Android平臺下采用PhoneGap實現一個簡單的Demo。開發環境Windows7+Eclipse 4.2.2 + Android SDK 17

http://phonegap.com/ 下載一個最新的PhoneGap軟體包,解壓後在lib資料夾下得到如下資料夾,可以看到PhoneGap目前支援的平臺有android、ios、windows-phone等,現在我們只做Android平臺的演示,從android資料夾中找到src資料夾和assets資料夾。

    

新建一個Android工程HybridDemo,將這兩個資料夾下的檔案分別拷貝到新建工程對應的目錄下,如下圖所示(新版的PhoneGap依賴了okhttp這個庫):

                              

修改MainActivity.java檔案:

import org.apache.cordova.DroidGap;

import android.os.Bundle;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.view.Menu;

public class MainActivity extends  DroidGap {  
	
	@SuppressLint("SetJavaScriptEnabled")
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);    
		super.init();
		super.appView.getSettings().setJavaScriptEnabled(true);  
		
		super.loadUrl("file:///android_asset/www/index.html",2000);	 
	} 

}

  修改AndroidManifest.xml檔案,為PhoneGap各個功能元件的呼叫增加許可權。

   <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.INTERNET" />
    <uses-permission android:name="android.permission.RECEIVE_SMS" />
    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    <uses-permission android:name="android.permission.RECORD_VIDEO"/>
    <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.BROADCAST_STICKY" />

還有一個config.xml配置檔案,檔案路徑為res/xml/config.xml,我們只做演示,沒有涉及到外掛的開發,不需要修改這個配置檔案,從phonegap資料夾下拷貝過來就是了,這個配置檔案被PhoneGap框架java實現部分所引用,沒有它會報錯。

執行程式結果: