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目錄類(lèi)似,主要也是包含了一些在編譯時(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文件類(lèi)似。
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)基類(lèi),我們項(xiàng)目中所有的活動(dòng)都必須繼承它或者它的子類(lèi)才能擁有活動(dòng)的特性(AppCompatActivityActivity的子類(lèi))。
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)用的名稱(chē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或者更高的話(huà),系統(tǒng)就會(huì)為你的程序啟用運(yùn)行時(shí)權(quán)限功能,如果設(shè)置成2222代表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)目所有的依賴(lài)關(guān)系,通常Android Studio項(xiàng)目一共有三種依賴(lài)方式:本地依賴(lài)庫(kù)依賴(lài)和遠(yuǎn)程依賴(lài)。本地依賴(lài)可以對(duì)本地的jar包或目錄添加依賴(lài)關(guān)系,庫(kù)依賴(lài)可以對(duì)項(xiàng)目中的庫(kù)模塊添加依賴(lài)關(guān)系,遠(yuǎn)程依賴(lài)則可以對(duì)jcenter庫(kù)上的開(kāi)源項(xiàng)目添加依賴(lài)關(guān)系,觀察一下dependencies閉包中的配置:
compile fileTree就是一個(gè)本地依賴(lài)聲明,他表示將libs目錄下所有.jar后綴的文件都添加到項(xiàng)目的構(gòu)建路徑當(dāng)中。
implementation 'com.android.support:appcompat-v7:23.4.0'是遠(yuǎn)程依賴(lài)聲明,其中com.android.support是域名部分,用于和其他公司的庫(kù)作區(qū)分,appcompat-v7是組名稱(chēng),用于和同一個(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à)則會(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)前的類(lèi)名就好,主要用于對(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)前的類(lèi)名作為值自動(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)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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

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