Android開發環境搭建和HelloWorld

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

1、Android開發利器【掌握】

*   JavaSDK(software development kit)
*   AndroidSDK
*   Eclipse及ADT插件(android development tools)(或者AndroidStudio)

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

Eclipse:
1、安裝JavaSDK,配置環境變量

2、安裝Eclipse

3、安裝Android SDK,完成配置

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

5、創建AVD(android virtual device)

三、快速安裝:【掌握】

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

AndroidStudio:
1、安裝JavaSDK,配置環境變量

2、下載as,安裝as

3、安裝Android SDK,完成配置

4、創建AVD(android virtual device)

四、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
*   7.0                       Nougat               24


 


五、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?
真正去理解!

七、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

九、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訪問到源代碼?
Eclipse:
點擊需要訪問的類或者方法,顯示界面如下圖:


 

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

as:
點擊源碼會有提示,直接下載源碼,重新啓動as即可!

十二、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

HAXM:

Hardware Accelerated Execution Manager

微軟提供的硬件加速執行管理器

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章