1.(下) 開(kāi)始啟程 你的第一行Android代碼

動(dòng)漫美少女
  • app的目錄結(jié)構(gòu)
  • 一些零碎的知識(shí)
  • 詳解build.gradle文件
  • Android的日志工具
  • 過(guò)濾器的使用

4. app的目錄結(jié)構(gòu)

image

1.build
這個(gè)目錄和外層的build目錄類似粹淋,主要也是包含了一些在編譯時(shí)自動(dòng)生成的文件柒莉,不過(guò)他里面的內(nèi)容更多更雜。
2.libs
如果你的項(xiàng)目中使用到了第三方的jar包尽楔,就需要把這些jar包都放在libs文件夾下面驹尼,放在這個(gè)目錄下的jar包都會(huì)自動(dòng)添加到構(gòu)建路徑里去丙者。
3.androidTest
此處是用來(lái)編寫(xiě)AndroidTest測(cè)試用例的雳刺,可以對(duì)項(xiàng)目進(jìn)行一些自動(dòng)化測(cè)試盔性。
4.java
java目錄是放置我們所有Java代碼的地方仲锄。
5.res
你在項(xiàng)目中使用到的所有圖片劲妙,布局,字符串等資源都要放在這個(gè)目錄下儒喊,當(dāng)然這個(gè)目錄下還有很多的子目錄镣奋,圖片放到drawable目錄下,布局放到layout目錄下怀愧,字符串放到values目錄下侨颈。
6.AndroidManifest.xml
這是你整個(gè)Android項(xiàng)目的配置文件余赢,你在程序中定義的四大組件都需要在這個(gè)文件中注冊(cè)。另外還可以在這個(gè)文件中給應(yīng)用程序添加權(quán)限聲明哈垢。
7.test
此處是用來(lái)編寫(xiě)Unit Test測(cè)試用例的妻柒,是對(duì)項(xiàng)目進(jìn)行自動(dòng)化測(cè)試的另一種方式。
8. .gitignore
這個(gè)文件用于將app模塊內(nèi)的指定的目錄或文件排除在版本控制之外温赔,作用和外層的.gitignore文件類似蛤奢。
9.app.iml
IntelliJ IDEA項(xiàng)目自動(dòng)生成的文件,我們不需要關(guān)心和修改這個(gè)文件里面的內(nèi)容陶贼。
10.build.gradle
這是app模塊的gradle構(gòu)建腳本啤贩,這個(gè)文件中會(huì)指定很多項(xiàng)目構(gòu)建相關(guān)的配置。
11.proguard-rules.pro
這個(gè)文件用于指定項(xiàng)目代碼的混淆規(guī)則拜秧。

一些零碎的知識(shí)點(diǎn):

1.

public class MainActivity extends AppCompatActivity
{
    ''''
}

MainActivity是繼承自AppConpatActivity的痹屹,這是一種向下兼容的Activity,可以將Activity在各個(gè)系統(tǒng)版本中增加的特性和功能最低兼容到Android2.1系統(tǒng)。ActivityAndroid系統(tǒng)提供的一個(gè)活動(dòng)基類枉氮,我們項(xiàng)目中所有的活動(dòng)都必須繼承它或者它的子類才能擁有活動(dòng)的特性(AppCompatActivityActivity的子類)志衍。
2.
所有以drawable開(kāi)頭的文件夾都是用來(lái)放圖片的,所有以mipmap開(kāi)頭的文件夾都是用來(lái)放應(yīng)用圖標(biāo)的聊替,所有以values開(kāi)頭的文件夾都是用來(lái)放字符串楼肪,樣式,顏色等配置的惹悄,layout文件夾是用來(lái)放布局文件的春叫。
3.
引用屬性的兩種方式。
1.在代碼中通過(guò)R.string.hello_world可以獲得該字符串的引用泣港。
2.在XML中通過(guò)@string/hello_world可以獲得該字符串的引用暂殖。
4.

android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"

項(xiàng)目的應(yīng)用圖標(biāo)就是通過(guò)android:icon屬性來(lái)指定的。
應(yīng)用的名稱則是通過(guò)android:label屬性指定的当纱。

5.詳解build.gradle文件

1.外部的build.gradle文件

buildscript 
{
    repositories 
    {
        jcenter()
    }
    dependencies 
    {
        classpath 'com.android.tools.build:gradle:2.1.2'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects 
{
    repositories 
    {
        jcenter()
    }
}

兩處repositories的閉包中都聲明了jcenter()這行配置呛每,其實(shí)他是一個(gè)代碼托管倉(cāng)庫(kù),很多Android開(kāi)源項(xiàng)目都會(huì)選擇將代碼托管到jcenter上坡氯,聲明了這行配置之后晨横,我們就可以在項(xiàng)目中輕松引用任何jcenter上的開(kāi)源項(xiàng)目了。 dependencies閉包中使用classpath聲明了一個(gè)Gradle插件箫柳,我們用它來(lái)構(gòu)建Android項(xiàng)目颓遏,后面是版本號(hào)。通常情況下你并不需要修改這個(gè)文件中的內(nèi)容滞时,除非你想添加一些全局的項(xiàng)目構(gòu)建配置。
2.app目錄下的build.gradle文件

apply plugin: 'com.android.application'

android 
{
    compileSdkVersion 23
    buildToolsVersion "25.0.2"

    defaultConfig 
    {
        applicationId "com.example.myapplication"
        minSdkVersion 15
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    buildTypes 
    {
        release 
        {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies 
{
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.4.0'
}

apply plugin: 'com.android.application
應(yīng)用了一個(gè)插件滤灯,一般有兩種值可選:com.android.application表示這是一個(gè)應(yīng)用程序模塊坪稽,com.android.library表示這是一個(gè)庫(kù)模塊曼玩。應(yīng)用程序模塊和庫(kù)模塊的最大區(qū)別在于,一個(gè)是可以直接運(yùn)行的窒百,一個(gè)只能作為代碼庫(kù)依附于別的應(yīng)用程序模塊來(lái)運(yùn)行黍判。
接下來(lái)是一個(gè)大的Android閉包,在這個(gè)閉包中我們可以配置項(xiàng)目構(gòu)建的各種屬性篙梢,其中compileSdkVersion用于指定項(xiàng)目的編譯版本顷帖,24表示使用Android7.0系統(tǒng)的SDK編譯buildToolsVersion用于指定項(xiàng)目構(gòu)建工具的版本渤滞,目前的版本是25.0.2贬墩。
里面嵌套的的defaultConfig閉包applicationId用于指定項(xiàng)目的包名妄呕,我們?cè)趧?chuàng)建項(xiàng)目的時(shí)候已經(jīng)指定過(guò)包名陶舞,如果你想在后面對(duì)其進(jìn)行修改,那么就是在這里修改的绪励, minSdkVersion用于指定項(xiàng)目最低兼容的Android系統(tǒng)版本肿孵,15代表兼容到Android4.0系統(tǒng),targetSdkVersion指定的值表示你在該目標(biāo)版本上已經(jīng)做過(guò)了充分的測(cè)試疏魏,系統(tǒng)將會(huì)為你的應(yīng)用程序啟用一些最新的功能和特性停做,如果你將targetSdkVersion指定成23或者更高的話,系統(tǒng)就會(huì)為你的程序啟用運(yùn)行時(shí)權(quán)限功能,如果設(shè)置成22大莫,22代表Android5.1系統(tǒng)蛉腌,運(yùn)行時(shí)權(quán)限就不會(huì)自然就不會(huì)啟用。versionCode用于指定項(xiàng)目的版本號(hào)葵硕,versionName用于指定項(xiàng)目的版本名眉抬。這兩個(gè)屬性在生成安裝文件的時(shí)候非常重要。
buildTypes閉包用于指定生成安裝文件的相關(guān)配置懈凹,通常只會(huì)有兩個(gè)子閉包蜀变,一個(gè)是debug,一個(gè)是release。debug閉包用于指定生成測(cè)試版安裝文件的配置介评,release閉包用于指定生成正式版安裝文件的配置库北,debug閉包是可以忽略不寫(xiě)的。

release閉包

minifyEnabled用于指定是否對(duì)項(xiàng)目的代碼進(jìn)行混淆们陆,true表示混淆寒瓦,false表示不混淆。proguardFiles用于指定混淆時(shí)使用的規(guī)則文件坪仇,這里指定了兩個(gè)文件杂腰,第一個(gè)proguard-android.txt是在AndroidSDK目錄下的,里面是所有項(xiàng)目通用的混淆規(guī)則椅文,第二個(gè)proguard-rules.pro是在當(dāng)前項(xiàng)目的根目錄下的喂很,里面可以編寫(xiě)當(dāng)前項(xiàng)目特有的混淆規(guī)則.需要注意的是惜颇,通過(guò)Android Studio直接運(yùn)行項(xiàng)目,生成的都是測(cè)試版安裝文件。

dependencies閉包

這個(gè)閉包的功能非常強(qiáng)大,它可以指定當(dāng)前項(xiàng)目所有的依賴關(guān)系需频,通常Android Studio項(xiàng)目一共有三種依賴方式:本地依賴庫(kù)依賴和遠(yuǎn)程依賴锨亏。本地依賴可以對(duì)本地的jar包或目錄添加依賴關(guān)系,庫(kù)依賴可以對(duì)項(xiàng)目中的庫(kù)模塊添加依賴關(guān)系忙干,遠(yuǎn)程依賴則可以對(duì)jcenter庫(kù)上的開(kāi)源項(xiàng)目添加依賴關(guān)系器予,觀察一下dependencies閉包中的配置:
compile fileTree就是一個(gè)本地依賴聲明,他表示將libs目錄下所有.jar后綴的文件都添加到項(xiàng)目的構(gòu)建路徑當(dāng)中豪直。
implementation 'com.android.support:appcompat-v7:23.4.0'是遠(yuǎn)程依賴聲明劣摇,其中com.android.support是域名部分,用于和其他公司的庫(kù)作區(qū)分弓乙,appcompat-v7是組名稱末融,用于和同一個(gè)公司中不同的庫(kù)作區(qū)分,24.2.1是版本號(hào)暇韧,用于和同一個(gè)庫(kù)不同的版本做區(qū)分勾习。加上這句聲明后,Gradle在構(gòu)建項(xiàng)目時(shí)會(huì)首先檢查一下本地是否已經(jīng)有這個(gè)庫(kù)的緩存懈玻,如果沒(méi)有的話則會(huì)去自動(dòng)聯(lián)網(wǎng)下載巧婶,然后再添加到項(xiàng)目的構(gòu)建路徑當(dāng)中。

6.Android的日志工具

log.d("MainActivity","onCreate: ");

Log.d()方法中傳入了兩個(gè)參數(shù):第一個(gè)參數(shù)是tag,一般傳入當(dāng)前的類名就好涂乌,主要用于對(duì)打印的信息進(jìn)行過(guò)濾艺栈。第二個(gè)參數(shù)是msg,即想要打印的具體的內(nèi)容。
Shift+F10: 運(yùn)行程序湾盒。
打印一條debug級(jí)別的日志湿右,只需要輸入logd,然后按下Tab鍵罚勾,就會(huì)幫你自動(dòng)補(bǔ)全一條完整的打印語(yǔ)句毅人。
我們?cè)?code>onCreate()方法的外面輸入logt,然后按下Tab鍵尖殃,這時(shí)就會(huì)以當(dāng)前的類名作為值自動(dòng)生成一個(gè)TAG常量丈莺。

7.過(guò)濾器的使用

過(guò)濾器

目前只有3個(gè)過(guò)濾器:
Show only selected application: 表示只顯示當(dāng)前選中程序的日志。
No Filters: 沒(méi)有過(guò)濾器送丰,會(huì)把所有的信息顯示出來(lái)缔俄。
Edit Filter Configuration: 自定義過(guò)濾器,給過(guò)濾器起名叫data,并且讓他對(duì)名為datatag進(jìn)行過(guò)濾。

image

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末牵现,一起剝皮案震驚了整個(gè)濱河市铐懊,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌瞎疼,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,590評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件壁畸,死亡現(xiàn)場(chǎng)離奇詭異贼急,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)捏萍,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門太抓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人令杈,你說(shuō)我怎么就攤上這事走敌。” “怎么了逗噩?”我有些...
    開(kāi)封第一講書(shū)人閱讀 169,301評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵掉丽,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我异雁,道長(zhǎng)捶障,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 60,078評(píng)論 1 300
  • 正文 為了忘掉前任纲刀,我火速辦了婚禮项炼,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘示绊。我一直安慰自己锭部,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,082評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布面褐。 她就那樣靜靜地躺著拌禾,像睡著了一般。 火紅的嫁衣襯著肌膚如雪盆耽。 梳的紋絲不亂的頭發(fā)上蹋砚,一...
    開(kāi)封第一講書(shū)人閱讀 52,682評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音摄杂,去河邊找鬼坝咐。 笑死,一個(gè)胖子當(dāng)著我的面吹牛析恢,可吹牛的內(nèi)容都是我干的墨坚。 我是一名探鬼主播,決...
    沈念sama閱讀 41,155評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼泽篮!你這毒婦竟也來(lái)了盗尸?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 40,098評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤帽撑,失蹤者是張志新(化名)和其女友劉穎泼各,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體亏拉,經(jīng)...
    沈念sama閱讀 46,638評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡扣蜻,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,701評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了及塘。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片莽使。...
    茶點(diǎn)故事閱讀 40,852評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖笙僚,靈堂內(nèi)的尸體忽然破棺而出芳肌,到底是詐尸還是另有隱情,我是刑警寧澤肋层,帶...
    沈念sama閱讀 36,520評(píng)論 5 351
  • 正文 年R本政府宣布亿笤,位于F島的核電站,受9級(jí)特大地震影響槽驶,放射性物質(zhì)發(fā)生泄漏责嚷。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,181評(píng)論 3 335
  • 文/蒙蒙 一掂铐、第九天 我趴在偏房一處隱蔽的房頂上張望罕拂。 院中可真熱鬧,春花似錦全陨、人聲如沸爆班。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,674評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)柿菩。三九已至,卻和暖如春雨涛,著一層夾襖步出監(jiān)牢的瞬間枢舶,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,788評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工替久, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留凉泄,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,279評(píng)論 3 379
  • 正文 我出身青樓蚯根,卻偏偏與公主長(zhǎng)得像后众,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,851評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,322評(píng)論 25 707
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理蒂誉,服務(wù)發(fā)現(xiàn)教藻,斷路器,智...
    卡卡羅2017閱讀 134,715評(píng)論 18 139
  • 1.介紹 如果你正在查閱build.gradle文件的所有可選項(xiàng)右锨,請(qǐng)點(diǎn)擊這里進(jìn)行查閱:DSL參考 1.1新構(gòu)建系統(tǒng)...
    Chuckiefan閱讀 12,146評(píng)論 8 72
  • 這一章主要針對(duì)項(xiàng)目中可以用到的一些實(shí)用功能來(lái)介紹Android Gradle括堤,比如如何隱藏我們的證書(shū)文件,降低風(fēng)險(xiǎn)...
    acc8226閱讀 7,644評(píng)論 3 25
  • 1. 怎么得到這些文件绍移? 過(guò)去痊臭,我可以提示用戶在越獄之后用 iTools 自行把微信 App 所在文件夾復(fù)制出來(lái)。...
    肥豬的車生閱讀 19,861評(píng)論 27 14