Hybrid開發框架搭建(一)PhoneGap簡介
本系列部落格將介紹採用PhoneGap、Backbone、Seajs、Ratchet和SPM等js庫或工具搭建一個Web主體型的Hybrid模式的移動應用開發框架。
Phonegap是一款開源的開發框架,旨在讓開發者使用HTML、Javascript、CSS等Web APIs開發跨平臺的移動應用程式。PhoneGap原本由Nitobi公司開發,後來Adobe收購了這件公司,Adobe將PhoneGap的核心程式碼捐獻給了Apache,於是有了Apache Cordova。其實這兩者的核心程式碼是沒區別的,PhoneGap是原來的名字,Adobe擁有
上圖分別是PhoneGap和Cordova官網上介紹二者的圖片,圖片對比也可以看出Cordova類似於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實現部分所引用,沒有它會報錯。
執行程式結果: