1. 程式人生 > >Android開發環境搭建和HelloWorld

Android開發環境搭建和HelloWorld

一、Android開發環境搭建前準備:

1、Android開發利器

  • JavaSDK(software development kit)
  • AndroidSDK
  • Eclipse及ADT外掛(android development tools)

二、開發環境安裝(常規安裝步驟):【瞭解】

1、安裝JavaSDK,配置環境變數

2、安裝Eclipse

3、安裝Android SDK,完成配置

4、安裝ADT外掛,下載安裝包(https://dl-ssl.google.com/android/eclipse/)

5、建立AVD

 

三、快速安裝:

1、拷貝其他機器中android sdk和eclipse

2、修改Eclipse中配置資訊

3、建立AVD(android virtual device)

 

Eclipse的首選項設定:】

1、字符集設定:

  • General——Editors——TextEditors——Spelling——utf-8
  • General——Workspace——Other——UTF-8
  • Content Assist —— Auto Activation triggers for Java
  • save actions

 

四、Android發展歷史【瞭解】

  1. Android公司於2003年在美國加州成立,創始人Andy Rubin , Rich Miner等;
  2. 2005年由Google收購注資,並組建開放手機聯盟;
  3. 2007年11月12日,Google釋出Android1.0作業系統;
  4. 2008年9月,首款搭載Android 1.0 OS的Android手機誕生T-Mobile G1。不支援觸控輸入,因此G1配置實體鍵盤。(HTC巨集達電代加工);
  5. 2009年4月30日釋出Android 1.5 Cupcake。這是Android發展歷史上第一個重要的里程碑。此後,Android系統版本都是以甜點進行命名,並以字母排序;
  6. 2009年9月15日釋出Android 1.6 Donut。Android1.6首次支援了CDMA網路;
  7. 2009年11月Android 2.0 Eclair降臨了。它是Android發展歷史上第二個重要的里程碑;
  8. 2010年5月20日釋出Android 2.2 Froyo。直到Android2.2釋出時,谷歌似乎才開始認真考慮Android的企業級功能;
  9. 2010年12月7日釋出Android 2.3 Gingerbread。該版本開始對NFC的支援(Near Field Communication);
  10. 2011年2月2日釋出Android 3.0 Honeycomb。“蜂巢”正式進軍平板電腦。
  11. 2011年10月19日在香港釋出Android4.0 Sandwich。4.0是Android發展歷史上又一次重大的升級;
  12. 2012年6月28日釋出Android 4.1/4.2 Jellybean。Android4.1是谷歌繼蜂巢之後,一次全新的平板策略嘗試。

【Android基本常識:】【掌握】

  • 1.5                    Cupcake                         API 3 
  • 1.6                    Donut                             API 4 
  • 2.0/2.0.1/2.1     Eclair                               API 7 
  • 2.2                     Froyo (Frozen Yogurt)   API 8
  • 2.3.1/2.3.3         Gingerbread                   API 9/API 10 
  • 3.0/3.1/3.2         Honeycomb                   API 11/API 12/API 13 
  • 4.0/4.0.3             Icecream Sandwich       API 14/API 15 
  • 4.1.2/4.2.2/4.3      JellyBean                       16/17/18 
  • 4.4.2 /4.4w            KitKat                          19/20
  • 5.0.1/5.1.1           Lollipop                         21/22
  • 6.0                       MarshMallow               23

 

五、Android學習路線圖:

  1. 學習Android要具備的基礎知識
  2. JavaSE基本知識:集合IO操作、執行緒、網路訪問、XML解析、JSON解析
  3. WEB開發知識:HTML、jsp、servelet
  4. 伺服器開發知識:jdbc資料庫操作(Mysql)

 

六、Android的系統架構

  1. 裝置驅動程式層(Linux Kernel):該層主要包括:驅動、記憶體管理、程序管理、網路協議等元件。
  2. 執行層c/c++函式庫層(Libraries)及Android Runtime:
    • Java不能直接訪問硬體,要訪問硬體,必須使用NDK。NDK是由c/c++語言編寫的庫(.so檔案),該層是對應用程式框架層提供支援的層。
    • SSL:Secure Sockets Layer安全套接字層
    • libc:C執行時庫
    • WebKit:負責瀏覽器支援(Chrome和Safari都使用該庫來支援瀏覽器)
    • FreeType:負責字型支援
  3. 應用程式框架層(Application FrameWork):該層一般都是開發人員直接呼叫的API。該層主要由Java語言編寫。
  4. 應用程式層(Applications):由執行在Dalvik虛擬機器上的app組成。(Dalvik是Google公司為Android專門設計的Java虛擬機器,執行Java程式的速度比JVM更快,以此來克服手持裝置在記憶體、處理器速度和功率等方面上的限制)。該層由Java語言編寫。
    1. Dalvik是冰島一個小鎮的名字。Dalvik VM獲取生成的java類檔案,將它們組合為一個或者多個、Dalvik可執行檔案(.dex)。Dalvik VM的目標是找到所有可能的方式來優化JVM效能、記憶體及電池壽命。
    2. 採用Dalvik VM的一個結果是,Android中最終的可執行程式程式碼不是java位元組碼,而是.dex檔案。這意味著無法直接執行java位元組碼,必須得到java的類檔案,然後將它們轉換為.dex檔案。

 

七、如何學習Android?

  1. PPT註明當天教學重點和教學目標,必須要達到教學目標;
  2. 熟練模仿出當天課堂演示程式碼的內容;
  3. 完成講師佈置的作業;
  4. 手寫筆記,整理當天學習過程中核心程式碼
  5. 有道詞典

八、Andorid要掌握的核心內容:

  1. Android開發環境配置
  2. Android介面程式設計(常用佈局、基本元件)
  3. Android高階元件程式設計(Dialog設計、ListView設計及分頁、Toast、Notification、Menu、WebView)
  4. 事件處理
  5. Activity及Intent
  6. Android應用資源的訪問
  7. Android網路應用開發及非同步任務AsyncTask
  8. Android資料儲存(內部儲存及SDcard儲存)和IO
  9. 使用ContentProvider實現資料共享
  10. Service程式設計
  11. Broadcast程式設計
  12. 影象影象處理
  13. 多媒體應用開發
  14. 感測器應用開發
  15. GPS應用開發
  16. 效能優化、apk安裝、平板技術開發

九、Android-sdk目錄結構介紹:

  1. tools
  2. platforms
  3. platform-tools
  4. docs
  5. sources

十、開發Android的Eclipse檢視設定

  1. DDMS
  2. LogCat
  3. 其它首選項設定

十一、HelloWorld及Android專案目錄結構介紹

  1. src(開發人員原始碼放置目錄)
  2. gen(自動生成R.java,所有的資原始檔都會在R.java檔案中以final static 內部類的形式被註冊。所以可以通過R..id,R.layout等形式來訪問資源。)
  3. assets(資產目錄。在這個目錄中放置的資原始檔,不會在R.java檔案中被註冊,也就是不會生成資源id。一般程式中的音訊或視訊檔案可以放置在這個目錄下。這個目錄支援任意深度的子目錄,而res資源目錄則不可以。)
  4. bin(編譯後的class等檔案在此目錄。系自動生成)
  5. libs(專案自動生成)
  6. res(資原始檔。是Android程式設計中最重要的目錄。所有的資源都定義在這個目錄下。)
  7. drawable(圖片放置的目錄)【備註:android中不允許圖片資源的檔名中出現大寫字母,並且不能以數字開頭
  8. layout(佈局檔案放置的目錄)
  9. menu(選單檔案放置的目錄)
  10. values(字串、尺寸等檔案放置的目錄)
  11. AndroidManifest.xml (Android清單檔案——是Android開發中非常重要的檔案。
  • 該檔案中定義了本App的版本號;
  • 適用的手機作業系統最大及最小的相容版本號;
  • 整個專案中每寫一個元件(Activity、Service、Broadcast),都需要在該清單檔案中註冊;
  • 執行本程式的許可權等等。

【備註:】res和assests目錄的不同:

  1. 是否在R.java檔案中被註冊;
  2. res所放的檔案型別是規定好的;而assests目錄下放置的檔案型別不限制;
  3. 訪問方法不同。res中檔案使用R.內部靜態類.id來訪問;而assest中的檔案通過IO流來訪問。

 

十二、需要掌握的單詞縮寫:

專業英文縮寫及詞彙:

API,JDK,SDK,Dalvik,ADT,AVD,Emulator,DDMS,ADB,APK

drawable,activity,intent,manifest,permission

 

十三、備註:

1、如何通過F3訪問到原始碼?

點選需要訪問的類或者方法,顯示介面如下圖:

 

點選“Attach source”,進入下一個介面,選擇"External location" , 選擇“External Folder”,找到android_sdk下面的sources目錄下的某個子目錄即可。

 

十四、Android程式初體驗:

  1. 在xml佈局檔案中給一個文字控制元件的id賦值;
  2. 在MainActivity的onCreate方法中,載入該文字控制元件;
  3. 給該文字控制元件賦值。
  4. 核心程式碼如下:
  • private TextView text_main_info;
  • text_main_info = (TextView)findViewById(R.id.text_main_info);
  • text_main_info.setText("指定的內容");

 

【備註:】Android UI:

    Android使用的UI框架本質上更先進,更具有非同步特徵。屬於第四代UI框架。UI是宣告性的,具有獨立的樣式和主題。

  1. 基於c的傳統Microsoft Windows API是第一代UI框架;
  2. 基於c++的MFC(Microsoft Foundation Classes , Microsoft基礎類)是第二代UI框架;
  3. 基於java 的Swing是第三代;
  4. Android UI,javaFX , Microsoft Silverlight ,Mozilla  XUL都是第四代UI框架。

 

十五、擴充套件知識:【常用adb shell命令】 【瞭解

1. 顯示系統中全部Android平臺:

android list targets

 

2. 顯示系統中全部AVD(模擬器):

android list avd

 

3. 建立AVD(模擬器):

android create avd --name 名稱 --target 平臺編號

 

4. 啟動模擬器:

emulator -avd 名稱 -sdcard ~/名稱.img (-skin 1280x800)

 

5. 刪除AVD(模擬器):

android delete avd --name 名稱

 

6. 建立SDCard:

mksdcard 1024M ~/名稱.img

 

7. AVD(模擬器)所在位置:

Linux(~/.android/avd) Windows(C:\Documents and Settings\Administrator\.android\avd)

 

8. 啟動DDMS:

ddms

 

9. 顯示當前執行的全部模擬器:

adb devices

 

10. 對某一模擬器執行命令:

abd -s 模擬器編號 命令

 

11. 安裝應用程式:

adb install -r 應用程式.apk

 

12. 獲取模擬器中的檔案:

adb pull <remote> <local>

 

13. 向模擬器中寫檔案:

adb push <local> <remote>

 

14. 進入模擬器的shell模式:

adb shell

 

15. 啟動SDK文件例項下載管理器:

android

 

16. 解除安裝apk包:

adb shell

cd data/app

rm apk包

exit

adb uninstall apk包的主包名

adb install -r apk包

 

17. 檢視adb命令幫助資訊:

adb help

 

18. 在命令列中檢視LOG資訊:

adb logcat -s 標籤名

 

19. adb shell後面跟的命令主要來自:

原始碼\system\core\toolbox目錄和原始碼\frameworks\base\cmds目錄。

 

20. 刪除系統應用:

adb remount (重新掛載系統分割槽,使系統分割槽重新可寫)。

adb shell cd system/app rm *.apk

 

21. 獲取管理員許可權:

adb root

 

22. 啟動Activity:

adb shell am start -n 包名/包名+類名(-n 類名,-a action,-d date,-m MIME-TYPE,-c category,-e 擴充套件資料,等)。

 

23、釋出埠:

你可以設定任意的埠號,做為主機向模擬器或裝置的請求埠。

如:adb forward tcp:5555 tcp:8000

 

24、複製檔案:

你可向一個裝置或從一個裝置中複製檔案, 複製一個檔案或目錄到裝置或模擬器上:

adb push <source> <destination></destination></source>

如:adb push test.txt /tmp/test.txt

 

從裝置或模擬器上覆制一個檔案或目錄:

adb pull <source> <destination></destination></source>

如:adb pull /addroid/lib/libwebcore.so

 

25、搜尋模擬器/裝置的例項:

取得當前執行的模擬器/裝置的例項的列表及每個例項的狀態: adb devices

 

26、檢視bug報告:

adb bugreport

 

27、記錄無線通訊日誌:

一般來說,無線通訊的日誌非常多,在執行時沒必要去記錄,但我們還是可以通過命令,設定記錄:

adb shell logcat -b radio

 

28、獲取裝置的ID和序列號:

adb get-product

adb get-serialno

 

29、訪問資料庫SQLite3

adb shell sqlite3

#cd system/sd/data //進入系統內指定資料夾

#ls //列表顯示當前資料夾內容

#rm -r xxx //刪除名字為xxx的資料夾及其裡面的所有檔案

#rm xxx //刪除檔案xxx

#rmdir xxx //刪除xxx的資料夾

 

 

十六:備註:

(一)、AVD中的ARM:

  • ARM:Advanced RISC Machine  高階的精簡指令集機器
  • RISC:Reduced Instruction Set Computer 精簡指令集計算機
  • ARM是一種基於RISC的32位微處理器架構,設計簡單,通過高度集中精簡的指令集來提高速度。模擬器就是在基於此架構的處理器上執行Android app。
  • ARM被廣泛應用於手持裝置和其它嵌入式電子裝置。低功耗是它最大的特點,移動市場廣泛使用基於此架構的處理器。

【備註:】

ARM EABI v7a System Image

Intel x86 Atom System Image

Intel x86 Atom 64 System Image 

這3個是給模擬器用的,模擬器在不同CPU平臺下的系統映象檔案。必須安裝,否則模擬器打不開

首先:要明白ARM(Advanced RISC Machines)是微處理器行業的一家知名企業,設計了大量高效能、廉價、耗能低的RISC處理器、相關技術及軟體。它作為智慧財產權供應商,本身不直接從事晶片生產,靠轉讓設計許可由合作公司生產各具特色的晶片,正是因為這樣,各家都採用了自己的編號來命名,所以CPU型號較為複雜。

其次:EABI(Embedded application binary interface) 即嵌入式應用二進位制介面,是描述可連線目的碼,庫目的碼,可執行檔案等的規範。

最後:armeabi和armeabi-v7a是表示cpu的型別,不同型別的cpu特性和指令集是不一樣的,armeabi通用性強,但速度慢,而v7a能充分發揮v7a cpu的能力,也就是說armeabi針對普通的或舊的arm cpu,armeabi-v7a針對有浮點運算或高階擴充套件功能的arm cpu。

    一般開發使用的Android 模擬器模擬都是 ARM 的體系結構(arm-eabi),因此模擬器並不是執行在x86上而是模擬的ARM,所以除錯程式的時候經常感覺到非常慢。針對這種情況,Intel推出了支援x86的Android模擬器,這將大大提高啟動速度和程式的執行速度,它允許Android模擬器能夠以原始速度(真機執行速度)執行在使用Intel x86處理器的電腦中。

 

必須條件:(requirement:)

1. requires the Android* SDK to be installed (version 17 or higher).                                             

        SDK17或者以上

2.Intel® processor with support for VT-x, EM64T, and Execute Disable (XD) Bit functionality         

        Intel的CPU:並支援VT-X(虛擬化技術)、可擴充套件64位、Execute Disable Bit。(均需要保證在BIOS中開啟Enable)

3. At least 1 GB of available RAM    

 

 

(二)、android:configChanges屬性

對android:configChanges屬性,一般認為有以下幾點:

1、不設定Activity的android:configChanges時,切屏會重新呼叫各個生命週期,切橫屏時會執行一次,切豎屏時會執行兩次

2、設定Activity的android:configChanges="orientation"時,切屏還是會重新呼叫各個生命週期,切橫、豎屏時只會執行一次

3、設定Activity的android:configChanges="orientation|keyboardHidden"時,切屏不會重新呼叫各個生命週期,只會執行onConfigurationChanged方法

但是,自從Android 3.2(API 13),在設定Activity的android:configChanges="orientation|keyboardHidden"後,還是一樣 會重新呼叫各個生命週期的。因為screen size也開始跟著裝置的橫豎切換而改變。所以,在AndroidManifest.xml裡設定的MiniSdkVersion和 TargetSdkVersion屬性大於等於13的情況下,如果你想阻止程式在執行時重新載入Activity,除了設定"orientation", 你還必須設定"ScreenSize"。

解決方法:

AndroidManifest.xml中設定android:configChanges="orientation|screenSize

 

【備註:】

SDK版本號是22,那麼ADT的版本應該是22及以上。

android-sdk-windows/tools/lib下的plugin.pro檔案
# begin plugin.prop
plugin.version=20.0.0
# end plugin.prop