Android Studio項(xiàng)目目錄結(jié)構(gòu)

開(kāi)始前先說(shuō)下什么是Gradle

單來(lái)說(shuō)Gradle就是一個(gè)新興的項(xiàng)目構(gòu)建工具,他有著很高的靈活度,可以滿足我們很多的項(xiàng)目需求。關(guān)于Gradle的介紹可以看這篇博文:Gradle for Android 系列:為什么 Gradle 這么火
https://blog.csdn.net/wqc_CSDN/article/details/53572921

Project目錄結(jié)構(gòu)

project_constructure.png
目錄文件 作用
.gradle gradle項(xiàng)目產(chǎn)生文件夾(自動(dòng)編譯工具產(chǎn)生的文件)
.idea IDEA項(xiàng)目文件夾(開(kāi)發(fā)工具產(chǎn)生的文件)
app module模塊
build 構(gòu)建時(shí)生成文件的地方
captures 捕獲系統(tǒng)信息的日志目錄
gradle gradle環(huán)境支持文件夾
.gitignore git源碼管理文件
build.gradle gradle項(xiàng)目自動(dòng)編譯的配置文件
gradle.properties gradle運(yùn)行環(huán)境配置文件
gradlew 自動(dòng)完成 gradle 環(huán)境的linux mac 腳本,配合gradle 文件夾使用
gradlew.bat 自動(dòng)完成 gradle 環(huán)境的windows 腳本,配合gradle 文件夾使用
local.properties Android SDK NDK 環(huán)境路徑配置
setting.gradle gradle 項(xiàng)目的子項(xiàng)目包含文件
Test.iml IDEA 項(xiàng)目文件

.gradle目錄

.gradle

gradle 運(yùn)行時(shí)自動(dòng)生成的目錄,一般情況不做修改,不需要納入項(xiàng)目源代碼管理中。

.idea目錄

.idea

Intellij IDEA 運(yùn)行時(shí)候生成的文件目錄,一般情況不做修改,不需要納入項(xiàng)目源代碼管理中。
Intellij IDEA是JetBrains公司推出的Java集成開(kāi)發(fā)環(huán)境,Android Studio是基于IDEA Commutity Edition開(kāi)發(fā)的,Community 版本不僅是免費(fèi)的而且是開(kāi)源的。

module(app)

app

每一個(gè)module可看成在Eclipse中的一個(gè)Project,里面的文件結(jié)構(gòu)與父類差不多。里面也能包含build.gradle、gradle.properties、setting.gradle 等相關(guān)gradle文件,若沒(méi)有定義,則在項(xiàng)目中使用父類的設(shè)置。更多的內(nèi)容,后面再詳細(xì)介紹了。

build目錄

build

編譯時(shí)產(chǎn)生文件,不需要修改,也不需要納入項(xiàng)目源代碼管理中。

captures目錄

captures

如右圖中,使用改功能會(huì)抓取相應(yīng)的信息并保存在captures目錄中,不需要納入項(xiàng)目源代碼管理中。

gradle目錄

gradle

可以看到里面wrapper目錄下有兩個(gè)文件,里面有一些項(xiàng)目對(duì)gradle的配置信息,我們來(lái)看下gradle-wrapper.properties里的內(nèi)容

#Wed Oct 21 11:34:03 PDT 2015
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip

可以看到里面聲明了gradle的目錄與下載路徑以及當(dāng)前項(xiàng)目使用的gradle版本。默認(rèn)的路徑我們一般不會(huì)更改

.gitignore文件

git對(duì)項(xiàng)目文件管理,可以在里面添加你不希望納入git管理的文件。來(lái)看一下里面的內(nèi)容。

 *.iml
.gradle
/local.properties
/.idea/workspace.xml
/.idea/libraries
.DS_Store
/build
/captures

Android Studio已經(jīng)自動(dòng)幫我們添加了一些不需要的文件,我們可以按照同樣的格式來(lái)加入自己的文件。

build.gradle文件

項(xiàng)目的編譯環(huán)境配置,可以說(shuō)是Gradle最主要的配置文件。先來(lái)看下里面的內(nèi)容。

// Top-level build file where you can add configuration options common to all sub-projects/modules.

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

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

allprojects {
    repositories {
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

這里是對(duì)Project的配置,是最頂層的配置,在module中同樣有一個(gè)build.gradle文件,是對(duì)module的配置,如果module里沒(méi)有進(jìn)行配置,將使用這里的配置信息。一個(gè)是聲明倉(cāng)庫(kù)的源,這里可以看到是指明的jcenter(), jcenter可以理解成是一個(gè)新的中央遠(yuǎn)程倉(cāng)庫(kù),兼容maven中心倉(cāng)庫(kù),而且性能更優(yōu)。另一個(gè)是聲明了android gradle plugin的版本。再說(shuō)一下這里,各位是否還有映像。

dependencies {
        classpath 'com.android.tools.build:gradle:2.0.0-alpha2'
    }

gradle.properties文件

配置gradle運(yùn)行環(huán)境的文件,比如配置gradle運(yùn)行模式,運(yùn)行時(shí)jvm虛擬機(jī)的大小。在創(chuàng)建的項(xiàng)目中,暫時(shí)是沒(méi)有內(nèi)容的。各位參考下面的鏈接:
https://docs.gradle.org/current/userguide/build_environment.html
https://docs.gradle.org/current/userguide/multi_project_builds.html#sec:decoupled_projects

local.properties文件

配置android NDK,SDK的地方,非android項(xiàng)目可能沒(méi)有這個(gè)文件,這個(gè)路徑根據(jù)不同想電腦不同,一般也不會(huì)納入源代碼管理之中。

## This file is automatically generated by Android Studio.
# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
#
# This file must *NOT* be checked into Version Control Systems,
# as it contains information specific to your local configuration.
#
# Location of the SDK. This is only used by Gradle.
# For customization when using a Version Control System, please read the
# header note.
#Tue Dec 08 19:51:24 CST 2015
ndk.dir=D\:\\Tools\\android-ndk-r10
sdk.dir=D\:\\Tools\\Android-SDK

setting.gradle文件

聲明當(dāng)前項(xiàng)目中含有什么module。如果有多個(gè)module會(huì)以‘,’分開(kāi),如:include ‘:app’, ‘:app2’

include ':app'

Module目錄結(jié)構(gòu)

再看下Module里面的結(jié)構(gòu)


Module
目錄文件 作用
build module編譯時(shí)所生成文件的目錄
lib 第三方依賴庫(kù)所在目錄
src module源碼所在目錄
src\andrroidTest android Studio生成的測(cè)試模塊,可刪除
src\main module代碼目錄,結(jié)構(gòu)和Eclipse中的差不多了
src\test 單元測(cè)試模塊,可刪除
.gitignore module中的git管理文件
app.iml module中的IDEA 項(xiàng)目文件
build.gradle module自動(dòng)編譯的配置文件
proguard-rules.pro module代碼混淆配置文件

build目錄

module的編譯文件目錄,編譯中生成的中間文件就在這里。


build目錄

我們編譯最終生成的apk就在build/outputs/apk目錄下,里面包含了app-debug.apk, app-debug-unaligned.apk,app-release-unaligned.apk三種apk, 另外app-release.apk是生成在module的根目錄下。

lib目錄

第三方庫(kù)存放目錄,我們可以把需要的第三方庫(kù)jar文件放到這里,*.so也同樣放在這里??梢栽赑roject Structure中管理它的依賴關(guān)系,也可以在build.gradle中直接修改。

src目錄

module源碼目錄,我們工作的主要地方,沒(méi)什么好多說(shuō)的了。

.gitignore文件

module模塊的git管理文件,可對(duì)module單獨(dú)管理。

build.gradle文件

這個(gè)文件是Module的gradle配置文件,也可以算是整個(gè)項(xiàng)目最主要的gradle配置文件。它的內(nèi)容比較復(fù)雜,我們先來(lái)看一下

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.2"

    defaultConfig {
        applicationId "eric.test"
        minSdkVersion 17
        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.1.1'
    compile 'com.android.support:design:23.1.1'
}

其中

// 這句是gradle版本的寫(xiě)法,聲明是這是一個(gè)Android程序。
apply plugin: 'com.android.application'
Android項(xiàng)目中的配置:

// 編譯android的sdk版本
compileSdkVersion 23
// build tools的版本
buildToolsVersion "23.0.2"
defaultConfig {
        //  應(yīng)用的包名
        applicationId "eric.test"
        // 允許的最少版本
        minSdkVersion 17
        // 目標(biāo)版本
        targetSdkVersion 23
        // apk的版本
        versionCode 1
        // apk的顯示版本
        versionName "1.0"
    }

buildTypes {
        // 表明是在release版本中使用的配置
        release {
            // 是否運(yùn)行混淆
            minifyEnabled false
            // 混淆的配置文件路徑,默認(rèn)給了我們兩個(gè)配置文件。
            // proguard-android.txt在<sdk目錄>/tools/proguard下面,里面已經(jīng)包含了基本的混淆聲明,有興趣的可以去看下。
            // proguard-rules.pro是在module根目錄下面,我們可以根據(jù)項(xiàng)目去添加。
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
依賴的配置:
// 表明是依賴庫(kù)配置
dependencies {
    // 表明依賴libs目錄下的所有jar包
    compile fileTree(dir: 'libs', include: ['*.jar'])
    // 表明在編譯項(xiàng)目的測(cè)試代碼時(shí)依賴
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.1.1'
    compile 'com.android.support:design:23.1.1'
}

參考文章:https://blog.csdn.net/wx198210/article/details/50248915

?著作權(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)容

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