1、PhoneGap-Android開發環境搭建

一. 安裝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 -->
}

到此爲止環境搭建完畢

相關文章
相關標籤/搜索