Android入門介紹
Android入門介紹
3G、4G
第三代移動通訊技術(3rd - Generation),速率一般在幾百Kbps,較之前的2G和2.5G在資料轉送速度上有很大提升。 第四代移動通訊技術(4th - Generation),速度可達到100Mbps以上,幾乎可以滿足人們的所有傳輸資料的需求。
目前主流的3G技術標準有三種:
WCDMA:全球80%以上的3G網路都是採用此種制式。中國聯通運營。186 CDMA2000:目前日韓及北美使用較多。中國電信運營。 189 TD-SCDMA:中國自主智慧財產權的3G通訊技術。中國移動運營。 188
目前主流的4G技術為LTE,但還沒有被廣泛應用:
GSM → GPRS → EDGE → WCDMA → HSDPA → HSDPA+ → LTE
Android是什麼
手機裝置的軟體棧記憶體,包括
一個完整的作業系統 中介軟體 關鍵的應用程式
底層是Linux核心
安全管理 記憶體管理 進程管理 電源管理 硬體驅動
Android體繫結構
Applications:案頭應用、打電話應用、瀏覽器等應用程式 Applications Framework:ActivityManager、 WindowManager、ContentProvider、ResourceManager等 Libraries: SQLite庫、SurfaceManager、WebKit、OppenGL等。
Android運行時
Core Libraries Dalvik Virtual Machine Linux Kernel: 硬體驅動、電源管理等
Dalvik VM和JVM的區別
編譯後檔案的格式:
JVM: .java->.class->.jar Dalvik: .java->.class->.dex->.odex 基於的架構不同
JVM基於棧的架構(棧記憶體) Dalvik基於寄存器的架構(CPU),執行效率比JVM要高 Dalvik專門針對移動平台進行最佳化
JVM的jar包中會有很多class檔案,每個class檔案中都含有頭資訊、常量池、欄位、方法等,而apk中只有一個dex,它裡麵包括了所有頭資訊、常量池、方法等。這樣讀取一個檔案要比讀取多個檔案去找塊。
CPU處理器架構
x86
intel AMD ARM
摩托羅拉 三星
Android項目目錄結構
src:原始碼 gen:系統自動產生的檔案,R.java 中記錄了項目中各種資源ID res:系統資源,所有檔案都會在R檔案產生資源ID
drawable:圖片 layout:介面布局 values:資料 anim:定義動畫的XML raw:原生檔案 assets:資源路徑,不會在R檔案註冊 project.properties:供Eclipse使用,讀取該項目使用Android版本號碼。早期版本名為default.properties AndroidManifest.xml:資訊清單檔,在軟體安裝的時候被讀取
Android中的四大組件(Activity、ContentProvider、BroadcastReceiver、Service)都需要在該檔案中註冊程式所需的許可權也需要在此檔案中聲明,例如:電話、簡訊、互連網、訪問SD卡 bin:二進位檔案,包括class、資源檔、dex、apk等 proguard.cfg:用來混淆代碼的設定檔,防止別人反編譯
APK 安裝過程
Eclipse將.java源檔案編譯成.class 使用dx工具將所有.class檔案轉換為.dex檔案 再將.dex檔案和所有資源打包並且簽名成.apk檔案 將.apk檔案安裝到虛擬機器完成程式安裝 啟動程式 – 開啟進程 – 開啟主線程 建立Activity對象 – 執行OnCreate()方法 按照main.xml檔案初始化介面
簡單的來說軟體的安裝都是兩個過程
拷貝apk中得一些檔案到系統的某個目錄,1./data/app/目錄下, 2.建立一個檔案夾 /data/data/com.test.helloworld/來儲存資料 在系統的註冊表裡面配置一些資訊. data/system/packages.xml
Android安全學
Android安全學中的一個重要的設計點是在預設情況下應用程式沒有許可權執行對其它應用程式、作業系統或使用者有害的操作。這些操作包括讀/寫使用者的隱私資料(例如連絡方式或e-mail),讀/寫其它應用程式的檔案,執行網路訪問,保持裝置活動,等等。 所以牽扯到付費或者可能與使用者隱私相關的操作都要申請許可權.
測試分類
單元測試(Unit test) -> 功能測試( Function test) ->整合測試(Intergation test)
Android單元測試
AndroidManifest.xml中進行配置,匯入android的junit環境 編寫測試類別繼承Android的測試父類,AndroidTestCase這個類( AndroidTestCase是為了去類比一個手機的運行環境, 這個類中有一個getContext方法能擷取到當前測試類別的應用內容物件,所以這個方法必須要等到測試架構初始化完成後才可以去調用) 測試的方法名要求以小寫test開頭,如不以test開頭只能單獨點這個方法運行,整體全部運行時沒有這個方法,所有的測試方法都要拋出異常,要把異常拋給測試架構不能自己去捕獲。
注意:測試得代碼也是只能在手機上跑,它是在手機上測試完之後又將資訊發送到了eclipse中