一. 安裝javascript
在安裝PhoneGap開發環境以前,須要按順序安裝一下工具: 1 java SDKhtml
java sdk,不安裝的話不能正常安裝Android SDK。java
安裝成功檢測:啓動DOS窗口start-->run-->cmd,在DOS窗口中鍵入:java -version,若是能顯示版本信息說明安裝正常。android
2 Eclipseapache
3 Android SDKapp
下載下來安裝以後是一個Android SDK Manager,下載相應版本組件,可能須要較長時間。eclipse
4 ADt Pluginide
這是一個Eclipse插件,做用是關聯Android SDK,使Eclipse可以新建Android工程,安裝方法以下: 打開Eclipse中的菜單項「Helpe「 -> "InstallNewSoftware"進入軟件安裝界面,點擊Add"按鈕,在Add Site這個彈出的對話框中的Name處輸入一個名字例如Android,在Location處輸入:https://dl-ssl.google.com/android/eclipse/工具
5 PhoneGapui
下載PhoneGap,解壓縮便可,打開裏面的libs->android文件夾,咱們會用到其中的三個文件,分別爲xml,cordova-2.0.0.jar及cordova-2.0.0.js
二 新建一個PhoneGap項目
1 在eclipse中新建Android Project
2 在項目的目錄下建兩個文件夾: /libs
/assets/www
3 進入將剛剛下載並解壓的PhoneGap包裏Android目錄,咱們須要的資源都在這個目錄下。 將cordova-2.0.0.js這個js文件(具體名稱視當時下載的版本而定)copy到/assets/www目錄下, 把cordova-2.0.0.jar文件copy到/libs目錄下。 在把xml目錄(xml整個文件夾)copy到android項目的res目錄下
4 在/assets/www下創建index.html文件,內容看起來像這樣:
<!-- lang: html --> <!DOCTYPE HTML> <!-- lang: html --> <html> <!-- lang: html --> <head> <!-- lang: html --> <title>PhoneGap</title> <!-- lang: html --> <script type="text/javascript" charset="utf-8" src="cordova-2.0.0.js"></script> <!-- lang: html --> </head> <!-- lang: html --> <body> <!-- lang: html --> <h1>Hello World</h1> <!-- lang: html --> </body> <!-- lang: html --> </html>
5 將如下權限配置的xml內容copy到AndroidManifest.xml文件中:
<!-- lang: xml --> <supports-screens <!-- lang: xml --> android:largeScreens="true" <!-- lang: xml --> android:normalScreens="true" <!-- lang: xml --> android:smallScreens="true" <!-- lang: xml --> android:resizeable="true" <!-- lang: xml --> android:anyDensity="true" <!-- lang: xml --> /> <!-- lang: xml --> <uses-permission android:name="android.permission.CAMERA" /> <!-- lang: xml --> <!-- lang: xml --> <uses-permission android:name="android.permission.VIBRATE" /> <!-- lang: xml --> <!-- lang: xml --> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <!-- lang: xml --> <!-- lang: xml --> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <!-- lang: xml --> <!-- lang: xml --> <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" /> <!-- lang: xml --> <!-- lang: xml --> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <!-- lang: xml --> <!-- lang: xml --> <uses-permission android:name="android.permission.INTERNET" /> <!-- lang: xml --> <!-- lang: xml --> <uses-permission android:name=" android.permission.RECEIVE_SMS" /> <!-- lang: xml --> <!-- lang: xml --> <uses-permission android:name=" android.permission.RECORD_AUDIO"/> <!-- lang: xml --> <!-- lang: xml --> <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/> <!-- lang: xml --> <!-- lang: xml --> <uses-permission android:name="android.permission.READ_CONTACTS"/> <!-- lang: xml --> <!-- lang: xml --> <uses-permission android:name="android.permission.WRITE_CONTACTS"/> <!-- lang: xml --> <!-- lang: xml --> <uses-permission android:name="android.permission.WRITE_EXTERNAM_STORAGE"/> <!-- lang: xml --> <!-- lang: xml --> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <!-- lang: xml --> <!-- lang: xml --> <uses-permission android:name="android.permission.GET_ACCOUNTIS"/>
6 將如下內容添加到AndroidManifest.xml文件的activity標籤中
android:configChanges="orientation|keyboardHidden"
這是爲了保證機器在橫豎屏切換的時候不會從新執行Activity的onCreate方法;
7 AndroidManifest.xml最後看起來會像這樣:
<!-- lang: xml --> <?xml version="1.0" encoding="utf-8"?> <!-- lang: xml --> <manifest xmlns:android="http://schemas.android.com/apk/res/android" <!-- lang: xml --> package="com.example.shawn" <!-- lang: xml --> android:versionCode="1" <!-- lang: xml --> android:versionName="1.0"> <!-- lang: xml --> <supports-screens <!-- lang: xml --> android:anyDensity="true" <!-- lang: xml --> android:largeScreens="true" <!-- lang: xml --> android:normalScreens="true" <!-- lang: xml --> android:resizeable="true" <!-- lang: xml --> android:smallScreens="true" <!-- lang: xml --> android:xlargeScreens="true" /> <!-- lang: xml --> <!-- lang: xml --> <uses-permission android:name="android.permission.CAMERA" /> <!-- lang: xml --> <uses-permission android:name="android.permission.VIBRATE" /> <!-- lang: xml --> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <!-- lang: xml --> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <!-- lang: xml --> <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" /> <!-- lang: xml --> <uses-permission android:name="android.permission.INTERNET" /> <!-- lang: xml --> <uses-permission android:name="android.permission.RECEIVE_SMS" /> <!-- lang: xml --> <uses-permission android:name="android.permission.RECORD_AUDIO" /> <!-- lang: xml --> <uses-permission android:name="android.permission.RECORD_VIDEO" /> <!-- lang: xml --> <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> <!-- lang: xml --> <uses-permission android:name="android.permission.READ_CONTACTS" /> <!-- lang: xml --> <uses-permission android:name="android.permission.WRITE_CONTACTS" /> <!-- lang: xml --> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <!-- lang: xml --> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- lang: xml --> <uses-permission android:name="android.permission.GET_ACCOUNTS" /> <!-- lang: xml --> <uses-permission android:name="android.permission.BROADCAST_STICKY" /> <!-- lang: xml --> <!-- lang: xml --> <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="15" /> <!-- lang: xml --> <!-- lang: xml --> <application android:label="@string/app_name" <!-- lang: xml --> android:icon="@drawable/ic_launcher" <!-- lang: xml --> android:theme="@style/AppTheme"> <!-- lang: xml --> <activity <!-- lang: xml --> android:name="outer" <!-- lang: xml --> android:configChanges="orientation|keyboardHidden" <!-- lang: xml --> android:label="@string/app_name" > <!-- lang: xml --> <intent-filter> <!-- lang: xml --> <action android:name="android.intent.action.MAIN" /> <!-- lang: xml --> <category android:name="android.intent.category.LAUNCHER" /> <!-- lang: xml --> </intent-filter> <!-- lang: xml --> </activity> <!-- lang: xml --> </application> <!-- lang: xml --> </manifest>
其中<application>標籤咱們能夠看作是咱們當前的應用,而,<activity>表明咱們應用內的一個界面,<intent-filter>標籤裏咱們給當前頁面設置了一個權限,android.intent.action.MAIN表示是最早啓動的界面;android.intent.category.LAUNCHER決定應用程序是否顯示在程序列表裏
另外須要注意的是:
<!-- lang: xml --> <activity <!-- lang: xml --> android:name="outer" <!-- lang: xml --> android:configChanges="orientation|keyboardHidden" <!-- lang: xml --> android:label="@string/app_name">
咱們的<activity>標籤中有這樣一個類名爲outer,咱們能夠本身定義它
8 在剛剛新建的Android Project中找到libs目錄並在cordova-2.0.0.jar上點擊右鍵,選擇Build Path->Add to Build Path
9 最後再修改下src下的java主文件(若是沒有就本身建立一個),咱們要作一下幾件事:
1)添加 import com.phonegap.*;
2)刪掉import android.app.Activity;
3)還記得剛纔的outer類麼?這裏將outer繼承爲DroidGap;
4)把setContentView()這行替換爲super.loadUrl("file:///android_asset/www/index.html");
5)最後看起來就像這樣:
<!-- lang: java --> package com.example.shawn; <!-- lang: java --> <!-- lang: java --> import android.os.Bundle; <!-- lang: java --> import org.apache.cordova.*; <!-- lang: java --> <!-- lang: java --> public class outer extends DroidGap{ <!-- lang: java --> @Override <!-- lang: java --> public void onCreate(Bundle savedInstanceState){ <!-- lang: java --> super.onCreate(savedInstanceState); <!-- lang: java --> super.loadUrl("file:///android_asset/www/index.html"); <!-- lang: java --> } <!-- lang: java --> }
到此爲止環境搭建完畢