網頁語言開發Android_App環境佈建

網頁語言開發Android_App環境佈建

一、準備

1. JDK。主要是Android會使用到,建議先下載安裝完成。

1. IntelliJ IDEA 主要編輯環境,有免費社群版及商業版,官網均可下載。(編輯器有很多種,Eclipse 或 Android Studio 甚至純文字編輯器也行,但某些步驟可能不盡相同,需自行變化)。

2. Android SDK,官網可下載。

3. Phonegap 下載,以下範例以 2.9.0 為準。

4. 測試行動裝置的驅動程式安裝。

5. 如果是在VMWare Workstation建構開發環境,要把虛擬機的USB開啟,同時插入裝置時,必須將目前滑鼠位置Focus在該虛擬機內,才會抓取成功。抓取後如有USB無法辨認問題,也必須將驅動程式裝好,後續在開發時,才能使用裝置測試。

clip_image002[5]

另經實驗證實,也可以在 VMware Horizon View 的虛擬桌面內,建構開發環境,指定連線到本機 USB 裝置,即可結合插在本機上的Android,進行開發實測。

clip_image004[6]

6. 設定行動裝置。

行動裝置要能做為開發測試機必須允許 USB 偵錯功能。

以 ASUS PadFone 為例,通常在 [設定] 的 [開發人員選項] 裡。

image  image

二、JDK

1. 先至Oracle官網下載對應作業系統的JDK,如果是Linux,由於部分版本可能已經先安裝了 Open JDK,建議先移除之後,再安裝 Oracle 版的 JDK。

clip_image006clip_image008

2. JDK 安裝完後,設定兩個環境變數

JAVA_HOME 路徑指到JDK安裝的位置

JRE_HOME 路徑指到JDK安裝的資料夾內會有一個 jre 的子資料夾,如果沒有就是安裝版本有誤,請重新安裝。

clip_image010

clip_image012

clip_image014

3.安裝設定完畢,重開機。

4. 記住安裝位置,後續會用到。

三、IntelliJ IDEA

1. 逐步預設安裝,沒有特別之處。

clip_image016clip_image018

四、Android SDK

1. 直接至 Google 網站下載,檔案不小,下載完解壓即可,不須安裝。

clip_image020

2. 將解壓完的資料夾,拷貝到硬碟固定位置(自訂),就不要再動。記住資料夾位置,等會新建 Android 專案會用到。

clip_image022

3. 位置都固定之後,執行 IntelliJ IDEA。新增一個 Android 專案。

clip_image024

4. 系統會先詢問 JAVA 位置。

clip_image026

詢問 JDK 的安裝位置。

clip_image028

clip_image030

5. 詢問 Android SDK位置。

clip_image032

如果指定正確, 會出現目前Java SDK最大版本,及建置目標適用的Android系統版本號碼。

如果沒有意外,Google下載的SDK裡面只會有最新版的Android。待會再繼續線上抓其他舊版本,先按OK。

clip_image034

clip_image036

clip_image038

6. 增加 Android 版本。

clip_image040

呼叫 SDK manager。

clip_image042

選取勾選要安裝的版本。

clip_image044

clip_image046

clip_image048

clip_image050

五、Phonegap API

1. 至官網下載,目前為止 2.9.0 版。

2. 解壓縮完,在lib資料夾內有對應不同系統的目錄分類。

clip_image052

六、建立 Phonegap 專案。

1. 執行 IntelliJ IDEA,開啟前面建立的Android專案,或另外新增一個皆可,新增步驟參考前面 Android SDK 的部分。

2. 重點在cordova.js、cordova-2.9.0.jar、xml資料夾,拷貝到下圖所示,專案相對應位置。www資料夾新專案是沒有的,要自己建。

clip_image054

3. cordova-2.9.0.jar 引入。

拷貝過去後,還要必須告知此為程式庫,方能展開內容。

clip_image056

clip_image058

4. 建立 index.html。

在 assets/www/ 資料夾底下,新增 index.html 網頁,做為App的主要顯示畫面。

clip_image060

預設空內容

clip_image062

5. 修改 App 主要入口程式,讓App執行時,改由 index.html 負責呈現處理。

修改MyActivity.java(若開專案時沒有特別修改,此為java主程式的預設名稱。如果有變更請以自取名稱為主)。

clip_image064

原預設內容

clip_image066

修改後內容(注意紅色圈起部分即為修改處)。

clip_image068

package net.snoone.pg5;
 
import android.app.Activity;
import android.os.Bundle;
import org.apache.cordova.*;
 
public class MyActivity extends DroidGap {
    /**
     * Called when the activity is first created.
     */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //setContentView(R.layout.main); 該行註解掉
        super.loadUrl("file:///android_asset/www/index.html");
    }
}

 

6. 修改AndroidManifest.xml,以便讓 Phonegap 專案撰寫的 App 有存取裝置的權限。(更完整權限設定名詞字典,在 Phonegap 官網文件有,請自行查詢)。

clip_image070

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

此外,AndroidManifest.xml有兩個注意點,如果沒有發生過下述類似問題,可忽略。

(1)行動裝置橫直切換重新執行程式問題。

當裝置橫直切換時,通常只是顯示的改變,而不是重新執行,尤其當使用者不小心或意外致使螢幕旋轉之時,若重新執行程式,可能導致輸入一半資料喪失;或重新取樣結果。

加入 android:configChanges="orientation|keyboardHidden" 這行可避免重新執行。

clip_image072

(2)切換螢幕橫直時,程式無預警關閉問題。

如果<uses-sdk android:minSdkVersion="14"/>的值是在13以下,機器橫直切換還算正常。

clip_image074

如果13以上,在切換螢幕橫直時,有可能會發生程式無預警關閉問題。此時在 configChanges 的值應該多加 screenSize,應可解決問題。

clip_image076

PS. 此號碼為 SDK 編號,與選定的開發目標 Android 系統版本有關,有興趣者自行上網搜尋其對應關係即可,不詳述。

7. 測試是否正常執行 index.html。

image

如果使用連接在USB的行動裝置沒有回應,或出現如下對話框,但有任何裝置可選,極可能是沒有正確安裝對應的驅動程式所致。

clip_image080

image

如果有出現裝置可供執行,但相容性為 “no”,極可能專案指定使用的 SDK 版本比裝置上的 Android 版本還新,不相容所致。可調整執行目標 SDK版本。

如何加入SDK不同版本程式庫。

(1)[File/Project Structure]

clip_image084

image

clip_image088

image

clip_image092

(2)修改 AndroidManifest.xml 裡的版本號碼。

Android 4.0 API 對應 API Level 14,因此 android:minSdkVersion 的值可以往下調,改為14。

clip_image094

再度執行,通過相容性檢查。

clip_image096

在行動裝置上,成功顯示 index.html。

clip_image098

8. 如何使用外部 javascript 及 css。

如果前面都設定正確成功,在裝置上 App 執行時,都會被導到 assets/www/index.html,做為開始首頁。如同開發網站一般。

如要使用 jQuery 及其他 javascript API,只要拷貝到 assets/www/ 底下,以目錄分門別類管理好,同時在index.html 內引入(包含正確子路徑)即可。

以 jQuery 為例。

image

clip_image102

若再加上 jQuery Mobile 就可以讓程式有點雛形出現。

image

引入jqm。

clip_image106

簡單的 jQuery Mobile ListView

clip_image108

測試結果

clip_image110

至此,大致建立網頁技術與 Android 系統的橋樑,剩下的就是以 HTML+JavaScript 的語言運用豐富內容;運用JavaScript 的 UI 套件來豐富 App 介面;並了解 Phonegap API 的使用方法,以使用行動裝置的各項功能,例如最常用的鏡頭、檔案儲存等。

<<本文完>>