安卓開發(fā)復習(一)

第一章

安卓應(yīng)用開發(fā)特色:

? 四大組件

Activity,Service,Broadcast Receiver,Content Provider

?? SQLite 數(shù)據(jù)庫

輕量級,運算速度極快的嵌入式關(guān)系型數(shù)據(jù)庫,不僅支持sql語句,還可以通過安卓封裝好的API進行操作,讓存儲和讀取數(shù)據(jù)變得特別方便。

??地理位置定位

Android手機都內(nèi)置GPS,結(jié)合強大的地圖功能,LBS這一領(lǐng)域潛力無限。



需要準備的工具:

?Java JDK

?Android SDK

?Android Studio


Project結(jié)構(gòu)模式下目錄介紹:

無需更改區(qū)域:

? .gradle & .idea 自動生成文件

? build 編譯時自動生成的文件

? gradle

。。。一堆,不過多贅述


開發(fā)者設(shè)計區(qū)域:

【app文件夾下】

1. build

無需關(guān)心

?2. libs

使用到的第三方j(luò)ar包都會放在libs目錄下,放在這個目錄下的jar包就會自動被添加到構(gòu)建路徑中去

?3. android Test

此處是用來編寫Android Test 測試用例用的

?4. java

毫無疑問,所有java代碼放置到該目錄下

?5. res

項目中使用到過的所有圖片、布局、字符串等資源都要存放在這個目錄下。

①圖片放在drawable目錄下

②布局放在layout目錄下

③字符串放在valves目錄下

?6. AndroidManifest.xml

這是整個Android項目的配置文件,程序中定義的四大組件都要在這個文件中注冊,另外還可以再擇個文件中給應(yīng)用程序添加應(yīng)用權(quán)限聲明。

7. test

自動化測試

?8. build.gradle

這是app模塊的gradle構(gòu)建腳本,這個文件會制定很多項目構(gòu)建相關(guān)的配置

9. proguard-rules.pro

代碼打包后如果不希望別人進行破解,通過這個文件讓代碼混淆,從而讓閱讀者難以閱讀



首先了解一下AndroidManifest.xml文件的這個部分,從中可以找到這段代碼:


這段代碼用于對MainActivity這個活動進行注冊,沒有在AndroidMainfest內(nèi)注冊的活動是不能使用的。

往下出現(xiàn)兩個<intent-filter>,其中的內(nèi)容非常重要

這兩行加起來的總效果就是MainActivity是這個項目的總活動,所謂總活動就是點擊應(yīng)用圖標后進入的第一個活動。

標識符【.Main】




接下來看一下這段MainActivity.java中的代碼,這是安卓四大組件中活動的代碼。

凡是在應(yīng)用中看得到的東西都是要放在Activity中的。


首先要注意MainActivity是繼承AppCompatActivity類的,這是一種向下兼容的Activity

可以將Activity在各個版本中增加的特性和功能最低兼容到Android 2.1系統(tǒng)

Activity是Android系統(tǒng)提供的一個活動基類,我們項目中的所有活動必須繼承它或者他的子類才能擁有活動特性。

這里AppCompatActivity就是Activity的子類。


然后注意到MainActivity中存在的onCreate()方法

這個方法是一個活動被創(chuàng)建時必須要執(zhí)行的方法


注意onCreate函數(shù)中第二行代碼:setContentView(R.layout.activity_main);

在這里我們要了解Android程序的設(shè)計其實是邏輯和視圖是分離的

因此通用的做法是:在布局文件中編寫界面,然后在活動中引進來

那么在此處就是這個setContentView()方法給當前的活動引入了一個main_activity布局。




布局文件都定義在res/layout目錄下,activity_main.xml文件中你能看到以下代碼:


android:text="Hello World!";便是HelloWorld的出處。




接下來我們來了解一下build.gradle這個文件。

不同于Eclipse,Android Studio是采用Gradle來構(gòu)建項目的。

Gradle是一個非常先進的項目構(gòu)建工具

它使用了一種基于Groovy(我也不知道這是啥,厲害就完事了)的領(lǐng)域特定語言(DSL)來聲明項目設(shè)置

摒棄了傳統(tǒng)基于XML的各種繁瑣配置。

仔細觀察會發(fā)現(xiàn)有兩個build.gradle文件,一個是最外層的,一個是app目錄下的。




先討論最外層的build.gradle文件


這些代碼都時自動生成的,雖然與法比較難,只看最關(guān)鍵的部分,難度不大。

兩處repositories閉包中都聲明了jcenter()這行配置

jcenter()其實是一個代碼管理倉庫

很多Android開源項目都會將代碼托管到j(luò)center上

聲明了這行配置之后,我們就可以輕松地引用任何jcenter上的開源項目了。


接下來,dependencies閉包中使用了classpath聲明了一個Gradle插件。

聲明這個插件的意義在于Gradle不僅僅服務(wù)于Android項目,還有Java,C++等。

因而我們想要使用它就需要聲明此插件。


這樣外層build.gradle文件中的要點就分析完了,通常情況下并不需要修改這個文件中的內(nèi)容。

除非你想添加全局的項目構(gòu)建配置。




再來看一下app目錄下的build.gradle文件:

我們來一行一行分析:

首先第一行應(yīng)用了一個插件,一般有兩種值可以選:

com.android.application?表示這是一個應(yīng)用程序模塊。

②?com.android.library?表示這是一個庫模塊。

應(yīng)用程序模塊和庫模塊的最大差別在于,應(yīng)用程序模塊是可以直接運行的,而庫模塊只能作為依附于別的應(yīng)用程序模塊來進行。


接下來是一個大的android閉包

在這個閉包中,我們可以配置項目構(gòu)建的各種屬性,同樣在編輯器或者SDK更新的時候編譯器出現(xiàn)故障時,這里也是故障發(fā)生的集中地。

1.?compileSdkVersion?用于指定項目的編譯版本。

2.?buildToolVersion?用于指定項目構(gòu)建工具的版本。

3.?defaultConfig??閉包

? ? ?在這個閉包中可以對項目中的更多細節(jié)進行配置,其中

? ? ?① applicationID 用于指定項目的包名,在創(chuàng)建項目的時候應(yīng)該已經(jīng)指定過包名了,如果想更改,要在這里更改。

? ? ?② minSdkVersion 用于指定項目最低兼容的Android系統(tǒng)版本

? ? ?③ targetSdkVersion 指定的值表示你在該目標版本上已經(jīng)做了充分的測試,如果測試的版本號較低,較高版本的某些運行時功能權(quán)限不會對App開放

? ? ?④ versionCode & versionName 用于指定項目的版本號和版本名,這兩個文件在生成安裝文件的時候非常重要!

4.?buildTypes 閉包

? ? ?用于指定生成安裝文件的相關(guān)配置,通常只會由兩個子閉包,一個是debug,另一個是release。

debug閉包用于制定生成測試版安裝文件的配置,可以忽略不寫的

? ? ?release閉包用于指定生成正式版安裝文件的配置,下面詳細介紹一下。

? ? ?① minifyEnabled 用于指定是否對項目的代碼進行了混淆(加密)

? ? ?② proguardFiles 用于指定混淆時的規(guī)則文件,這里指定了兩個文件:

? ? ? ? ?第一個 proguard-android.txt 是在Android SDK目錄下的,里面是所有項目通用的混淆規(guī)則

? ? ? ? ?第二個 proguard-rules.pro 是在當前項目根目錄下的,里面可以編寫當前項目的特有的混淆規(guī)則? ?

這樣,整個?android 閉包?中的內(nèi)容就都分析完了。


接下來還剩一個?dependencies 閉包,這個閉包非常強大,它可以指定當前項目所有的依賴關(guān)系

通常 Android Studio 項目一共有三種依賴類型:本地依賴、庫依賴、遠程依賴。

本地依賴可以對本地的 jar包 或者 目錄 添加依賴關(guān)系

庫依賴可以對項目中的庫模塊添加依賴關(guān)系

遠程依賴可以對 jcenter 庫上的開源項目添加依賴關(guān)系。


下面來介紹一下 dependencies 閉包中的配置

1. compile fileTree

? ? ? 是一個本地依賴聲明,它表示將libs目錄下所有 .jar 后綴的文件都添加到項目的構(gòu)建路徑當中。

2. compile

? ? ? 是遠程依賴聲明,后邊標明遠程依賴庫、域名、組名稱、版本號。





安卓日志工具 Log:

1. Log.v() 用于打印那些最為瑣碎的,意義最小的日志信息,對應(yīng)級別verbose。日志級別最低

2. Log.d() 用于打印一些調(diào)試信息,調(diào)試程序常用,對應(yīng)級別debug,比verbose高級一些

3. Log.i() 用于打印一些比較重要的數(shù)據(jù),這些數(shù)據(jù)是開發(fā)者非常想要看到的、可以幫你分析數(shù)據(jù)行為數(shù)據(jù)。對應(yīng)級別info,比debug級別高一些

4. Log.w() 用于打印一些警告信息,提示程序在這個地方可能會出現(xiàn)一些潛在的風險,最好去修復一下這些出現(xiàn)警告的地方,對應(yīng)級別warn,比info高一級

5. Log.e() 用于打印程序中的錯誤信息,比如程序進入到了catch語句中,當有錯誤信息打印出來的時候,一般都代表你的程序出現(xiàn)了嚴重錯誤,對應(yīng)級別error,比warn高一級

如圖所示,可以根據(jù)等級篩選日志。


我們在MainActivity.java中加入此調(diào)試代碼




Log.d(tag,msg); 調(diào)試方法有兩個參數(shù),第一個是標簽,第二個是調(diào)試信息。

此處關(guān)于標簽要強調(diào),logcat中可以很輕松地添加過濾器。

下圖是系統(tǒng)給的默認過濾器

接下來就讓我們嘗試自己創(chuàng)建一個過濾器,點擊上圖中的Edit Filter Configuration,出現(xiàn)下圖創(chuàng)建界面,

給filter起名后,通過更改Lag Tag為“data”(自定義),再將調(diào)試信息第一個參數(shù)改為data即可實現(xiàn)只顯示特定調(diào)試。


?日記級別控制的好處就是能方便快捷地找到你所關(guān)心的那些日志。




第一章完成啦~~~




? ??

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容