第一行代碼,Android Go

第一行代碼,Android Go

一、Android系統架構

1、第一層 Linux內核層

這一層為Android設備的各種硬件提供底層的驅動,如 顯示驅動、音頻驅動、電源管理、Wi-Fi驅動等。

2、第二層 系統運行庫層

這一層通過一些C/C++庫來為Android系統提供瞭主要的特性支持。也就是說利用較底層庫,來實現Android系統。這些庫具有效率更高,更加系統化、專業化,

有商業公司維護等特點。

同樣在這一層還有Android運行時庫(JRE),主要提供一些核心庫,能夠允許開發者使用java語言來編寫Android應用。

Android運行時庫包含Dalvik虛擬機,現在叫ART運行環境。

3、第三層 應用框架層

這一層主要提供瞭構建應用程序時可能需要的各種API,無論是Android自帶的核心應用還是開發者自己開發的application都可以通過調用這些API來完成。

4、第四層 應用層

顧名思義,就是application層。所有安裝在手機上的application都屬於這一層。

二、Android已發佈版本

主要就是2014年,google發佈Android 5.0版本,其中使用ART運行環境替代Dalvik虛擬機,大大提升應用的運行速度。

目前4.0以上的系統已經占據瞭超過98%的Android市場份額,因此以後開發的程序基本隻面向4.0以上的系統。

三、Android應用開發特色

Android系統提供的工具/服務,可供開發者開發出優秀的程序。

1、四大組件

活動(Activity)、服務(Service)、廣播接收器(Broadcast Receiver)和內容提供器(Content Provider).

Activity:所有在應用中能看到的東西,都是放在活動中。

Service:在後臺默默運行,即使用戶退出,Service仍然可以繼續運行。

Broadcast Receiver:它讓應用可以接受來自各處的廣播信息,比如電話,短信等。同樣,應用也可以由此向外發出廣播信息。

Content Provider:為應用程序之間共享數據提供支持。比如要讀取系統電話簿中的聯系人,就需要通過Content Provider來實現。

2、系統控件

Android系統提供非常豐富的系統控件,讓我們可以輕松快速的寫出漂亮的界面。

同樣我們可以開發專屬控件。

3、SQLite DB

Android自帶SQLite DB。它是輕量級、運算速度極快的嵌入式關系型數據庫。

支持標準SQL語法、同時可通過Android封裝好的API進行操作。

4、地理位置定位

移動設備自帶GPS,配合地圖,LBS(Location Based Services)潛力無限。

四、搭建開發環境

1、準備工具

a、Java基礎知識

Java基本語法和特性

b、JDK

包含JRE、工具集合、基礎類庫

Ps、JDK 8以上版本

c、Android SDK

Google提供的Android開發工具包,在開發Android程序時,需通過引入該工具包,來使用Android相關API。

d、Android Studio

在2013年Google退出Android Studio之前,開發Android項目都是用Eclipse,安裝ADT插件之後就可以瞭。

隨著Android Studio的發展,現在普及程度已遠超Eclipse。

2、搭建開發環境

上述軟件並不需要逐個下載,Google為簡化搭建開發環境,將所有工具都集成好瞭,到Android官網下載最新版本Android Studio即可。

Ps:我的情況並不是如此,JDK沒有集成進去,需要自己安裝並幫助Android Studio找到它。

Ps:需要科學上網才能訪問。

下載完成後,安裝時一直點擊Next。其中選擇安裝組件時建議全部勾選。組件包括:Android Studio(默認選擇)、Android SDK、Android Virtual Device

接下來會有選擇Android Studio以及Android SDK安裝地址。根據自己實際情況選擇。註意,如果更改默認地址的話,要記得安裝位置,過會會找不到Android SDK

位置,你要幫助Android Studio找到它。

其它的一路Next下去就好瞭。

五、創建第一個Android項目

1、創建HelloWorld項目

流程略

註意點:

Application name表示應用名稱

Company Domain表示公司域名,個人使用example.com

Package name表示項目包名

Project location表示項目代碼存放位置

Minimun SDK一般指定API 15(Android 4.0以上)

Activity Name:XxxXxxActivity

Layout Name:xxx_xxx_layout

在模擬器中選擇操作系統版本

2、分析Android程序

項目結構模式默認為Android,我們調整為Project。

現階段主要註意gradle與app

gradle是項目自動化構建工具,相關的文件夾暫時不分析。我們重點看app

app:

build:主要包含編譯時自動生成的文件,不重要。

libs:項目中使用到的第三方jar包都要放到libs目錄下,放在該目錄下的jar包都會被自動添加到構建路徑裡去。

androidTest:編寫Android Test測試用例。

java:放置所有Java代碼的地方。

res:項目中所有用到的圖片、佈局、字符串等資源!!資源!!!存放的位置!其下有許多子目錄,圖片放在drwaable目錄下,佈局放在layout目錄下等。為瞭

兼容,有時候需要同一種資源多種格式的文件目錄,比如:mipmap-hdpi、mipmap-mdpi等。

AndroidManifest.xml:整個Android項目的配置文件,程序中定義的四大組件都要在這個文件裡註冊!還可以在這個文件中給應用程序添加權限聲明。

test:Unit Test測試用例

其他文件目錄略。

AndroidManifest.xml 有如下代碼:

表示對HelloWorldActivity這個活動進行註冊,未在AndroidManifest.xml中註冊的活動不能使用。其中 intent-filter裡的兩行代碼表示HelloWorldActivity活動是這個項

目的主活動。

HelloWorldActivity代碼如下:

public class HelloWorldActivity extends AppCompatActivity {

@Override

protected void onCreate(Bundle savedInsatanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.hello_world_layout);

}

}

HelloWorldActivity是繼承自AppCompatActivity的,這是一種向下兼容的Activity,可以將Activity在各系統版本中增加的特性和功能最低兼容到Android 2.1系統。

Activity是Android系統提供的一個活動基類,所有的活動都直接或間接繼承自它。

onCreate()方法時一個活動被創建時必定要執行的方法。

Android程序設計講究 邏輯 和 視圖 分離。在佈局文件中編寫界面,然後在活動中引入進來。

3、項目中的資源及build.gradle文件

基本語法:

在代碼中通過 R.string.app_name可以獲得該字符串的引用。

在XML中通過 @string/app_name可以獲得該字符串的引用。

string可以替換成drawable等等。

XML中定義一個時這樣做:@+string/app_name

build.gradle文件解析

不同於Eclipse,Android Studio采用Gradle(項目構建工具)來構建項目。它使用基於Groovy的的“領域特定語言(DSL)(求專不求全)”來聲明項目

設置,拋棄瞭傳統的基於XML的各種繁瑣配置。

respositories {

jcenter()

}

jcenter:代碼托管庫

聲明瞭以上配置後,可以在項目中引入jcenter上的開源項目

dependencies中使用classpath聲明瞭一個Gradle插件 com.android.tools.build:gradle:2.2.0

apply plugin: ”com.android.application"

引入一個插件

com.android.application(直接運行)或者com.android.library(庫模塊)

android閉包

包含配置項目構建的各種屬性

compileSdkVersion指定項目編譯版本

buildToolsVersion指定項目構建工具的版本

defaultConfig閉包

applicationId指定項目包名,以後更改包名都在這裡改

minSdkVersion指定項目最低兼容Android系統版本

targetSdkVersion指定在該版本上已充分測試,系統會為你的應用程序氣筒一些最新的功能和特性。(到targetSdkVersion為止,超過

的新特性就沒瞭。)

VersionCode指定項目版本號

VersionName指定項目名

defaultTypes閉包

用於指定生成 安裝 文件的相關配置

通常包含兩個閉包:debug和release

debug用於指定生成測試版安裝文件的配置

release用於指定生成正式版安裝文件的配置

debug閉包可以省略

release閉包:

minifuEnabled用於指定是否對項目代碼進行混淆,true代表混淆,false代表不混淆

proguardFiles用於指定混淆是使用的規則文件,這裡指定兩個文件,proguard-rules.txt和proguard-rules.pro

.txt是在Android SDK目錄下,裡面是所有項目的混淆規則

.pro是在當前項目的根目錄下,裡面可以編寫當前項目特有的混淆規則

Android Studio直接運行項目生成的都是測試版啊安裝文件

dependencies閉包:

用於指定當前項目所有的依賴關系

Android Studio一共有三種依賴關系:本地依賴、庫依賴、遠程依賴

本地依賴可以對本地的Jar包或目錄添加依賴關系

compile fileTree(dir: 'libs',include:['*.jar'] 它表示將libs目錄下所有.jar文件添加到項目的構建路徑中去

庫依賴可以對項目中的庫模塊添加依賴關系

compile project(':helper') 它表示將一個helper庫模塊添加到項目的構建路徑中去

Ps:此處假設有一個叫helper的庫模塊

庫依賴添加可以百度地址https://jingyan.baidu.com/article/4e5b3e193b96e991901e24f2.html

遠程依賴可以對jcenter庫上的開源項目添加依賴關系

compile ‘com.android.support:appcompat-v7:24.2.1

com.android.support是域名部分

appcompat-v7是組名部分

24.2.1是版本號

六、日志工具

1、Log工具類

Log.v() verbose

Log.d() debug

Log.i() info

Log.w() warn

Log.e() error

Log.x()(x代指具體方法)方法中傳入兩個參數:第一個Tag,一般傳入當前類名,主要用於對打印信息進行過濾;第二個參數是msg,即要打印的信息

2、Log的優勢

System.out.println()雖然方便 syso + Tab就出來 但是 :日志打印不可控、打印時間不確定、不能添加過濾器、日志沒有級別區分

Log配合Logcat可以:

logx + Tab 快速輸入

過濾器

自定義過濾器

級別控制

關鍵字過濾 (支持正則表達式)

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *