1. 程式人生 > >Android Studio基礎之專案目錄結構(四)-學習篇

Android Studio基礎之專案目錄結構(四)-學習篇

開始前先說下什麼是Gradle

這是我在網上找到的對Gradle的描述:

At the heart of Gradle lies a rich extensible Domain Specific Language (DSL) based on Groovy. Gradle pushes declarative builds to the next level by providing declarative language elements that you can assemble as you like. Those elements also provide build-by-convention support for Java, Groovy, OSGi, Web and Scala projects. Even more, this declarative language is extensible. Add your own new language elements or enhance the existing ones, thus providing concise, maintainable and comprehensible builds.
<翻譯>Gradle的核心是一個豐富的可擴充套件的基於Groovy的領域特定語言(DSL)。Gradle通過提供說明性語言元素將說明性構建推到下一層,您可以組裝。這些元素也提供build-by-convention支援Java、Groovy、OSGi、Web和Scala專案。更多,這個說明性語言是可擴充套件的。新增自己的新語言元素或提高現有的,從而提供簡潔、易於維護和理解構建。

並且它是一個開源的工具,你可以在它的官網去下載Gradle官網。總的來說Gradle是一種構建工具Android Studio使用它來構建你的Android專案。Andrd Studio在建立專案的時候會自動去下載,你也可以去官網手動下載後在Android Studio中配置。現在在Android StudioV2.0中使用的Gradle版本是V2.8, 官網中最新的版本本是V2.9。

那麼我們在Android Studio中自動下載的Gradle在哪裡呢?
- Mac上會預設下載到 /Users/<使用者名稱>/.gradle/wrapper/dists 目錄
- Win平臺會預設下載到 C:\Documents and Settings\<使用者名稱>.gradle\wrapper\dists 目錄

Project目錄結構

先來看下之前新建的專案
專案

目錄檔案 作用
.gradle gradle專案產生資料夾(自動編譯工具產生的檔案)
.idea IDEA專案資料夾(開發工具產生的檔案)
app module模組
build 構建時生成檔案的地方
captures 捕獲系統資訊的日誌目錄
gradle gradle環境支援資料夾
.gitignore git原始碼管理檔案
build.gradle gradle專案自動編譯的配置檔案
gradle.properties gradle執行環境配置檔案
gradlew 自動完成 gradle 環境的linux mac 指令碼,配合gradle 資料夾使用
gradlew.bat 自動完成 gradle 環境的windows 指令碼,配合gradle 資料夾使用
local.properties Android SDK NDK 環境路徑配置
setting.gradle gradle 專案的子專案包含檔案
Test.iml IDEA 專案檔案

.gradle目錄

.gradle
gradle 執行時自動生成的目錄,一般情況不做修改,不需要納入專案原始碼管理中。

.idea目錄

.idea
Intellij IDEA 執行時候生成的檔案目錄,一般情況不做修改,不需要納入專案原始碼管理中。
Intellij IDEA是JetBrains公司推出的Java整合開發環境,Android Studio是基於IDEA Commutity Edition開發的,Community 版本不僅是免費的而且是開源的。

module(app)

app
每一個module可看成在Eclipse中的一個Project,裡面的檔案結構與父類差不多。裡面也能包含build.gradle、gradle.properties、setting.gradle 等相關gradle檔案,若沒有定義,則在專案中使用父類的設定。更多的內容,後面再詳細介紹了。

build目錄

build
編譯時產生檔案,不需要修改,也不需要納入專案原始碼管理中。

captures目錄

captures
如右圖中,使用改功能會抓取相應的資訊並儲存在captures目錄中,不需要納入專案原始碼管理中。

gradle目錄

gradle
可以看到裡面wrapper目錄下有兩個檔案,裡面有一些專案對gradle的配置資訊,我們來看下gradle-wrapper.properties裡的內容

#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的目錄與下載路徑以及當前專案使用的gradle版本。預設的路徑我們一般不會更改,還記得之前介紹匯入Eclipse專案時,對專案使用的gradle版本做的修改嗎?

.gitignore檔案

git對專案檔案管理,可以在裡面新增你不希望納入git管理的檔案。來看一下里面的內容。

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

Android Studio已經自動幫我們添加了一些不需要的檔案,我們可以按照同樣的格式來加入自己的檔案。

build.gradle檔案

專案的編譯環境配置,可以說是Gradle最主要的配置檔案。先來看下里面的內容。

// 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
}

這裡是對Project的配置,是最頂層的配置,在module中同樣有一個build.gradle檔案,是對module的配置,如果module裡沒有進行配置,將使用這裡的配置資訊。一個是宣告倉庫的源,這裡可以看到是指明的jcenter(), jcenter可以理解成是一個新的中央遠端倉庫,相容maven中心倉庫,而且效能更優。另一個是聲明瞭android gradle plugin的版本。再說一下這裡,各位是否還有映像。

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

gradle.properties檔案

gradlew & gradlew.bat 檔案

分別是linux下的shell指令碼和windows下的批處理檔案,它們的作用是根據gradle-wrapper.properties檔案中的distributionUrl下載對應的gradle版本。這樣就可以保證在不同的環境下構建時都是使用的統一版本的gradle,即使該環境沒有安裝gradle也可以,因為gradle wrapper會自動下載對應的gradle版本。更多內容可以看下下面的連結,這裡沒有做更多的研究了:
http://blog.csdn.net/maserkinger/article/details/36011235

local.properties檔案

配置android NDK,SDK的地方,非android專案可能沒有這個檔案,這個路徑根據不同想電腦不同,一般也不會納入原始碼管理之中。

## 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檔案

聲明當前專案中含有什麼module。如果有多個module會以‘,’分開,如:include ‘:app’, ‘:app2’

include ':app'

Test.iml檔案

編譯專案時生成的檔案,其名為‘專案名.iml’,iml檔案是Android Studio識別專案的配置檔案,跟Eclipse裡面的.project檔案作用類似。

<?xml version="1.0" encoding="UTF-8"?>
<module external.linked.project.id="Test" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$" external.system.id="GRADLE" external.system.module.group="" external.system.module.version="unspecified" type="JAVA_MODULE" version="4">
  <component name="FacetManager">
    <facet type="java-gradle" name="Java-Gradle">
      <configuration>
        <option name="BUILD_FOLDER_PATH" value="$MODULE_DIR$/build" />
        <option name="BUILDABLE" value="false" />
      </configuration>
    </facet>
  </component>
  <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7" inherit-compiler-output="true">
    <exclude-output />
    <content url="file://$MODULE_DIR$">
      <excludeFolder url="file://$MODULE_DIR$/.gradle" />
    </content>
    <orderEntry type="inheritedJdk" />
    <orderEntry type="sourceFolder" forTests="false" />
  </component>
</module>

Module目錄結構

再看下Module裡面的結構
Module

目錄檔案 作用
build module編譯時所生成檔案的目錄
lib 第三方依賴庫所在目錄
src module原始碼所在目錄
src\andrroidTest android Studio生成的測試模組,可刪除
src\main module程式碼目錄,結構和Eclipse中的差不多了
src\test 單元測試模組,可刪除
.gitignore module中的git管理檔案
app.iml module中的IDEA 專案檔案
build.gradle module自動編譯的配置檔案
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目錄

第三方庫存放目錄,我們可以把需要的第三方庫jar檔案放到這裡,*.so也同樣放在這裡。可以在Project Structure中管理它的依賴關係,也可以在build.gradle中直接修改。

src目錄

module原始碼目錄,我們工作的主要地方,沒什麼好多說的了。

.gitignore檔案

module模組的git管理檔案,可對module單獨管理。

app.iml檔案

同Project中的*.iml一樣。管理module的配置。

build.gradle檔案

這個檔案是Module的gradle配置檔案,也可以算是整個專案最主要的gradle配置檔案。它的內容比較複雜,我們先來看一下

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版本的寫法,宣告是這是一個Android程式。
apply plugin: 'com.android.application'

Android專案中的配置:

// 編譯android的sdk版本
compileSdkVersion 23
// build tools的版本
buildToolsVersion "23.0.2"
defaultConfig {
        //  應用的包名
        applicationId "eric.test"
        // 允許的最少版本
        minSdkVersion 17
        // 目標版本
        targetSdkVersion 23
        // apk的版本
        versionCode 1
        // apk的顯示版本
        versionName "1.0"
    }
buildTypes {
        // 表明是在release版本中使用的配置
        release {
            // 是否執行混淆
            minifyEnabled false
            // 混淆的配置檔案路徑,預設給了我們兩個配置檔案。
            // proguard-android.txt在<sdk目錄>/tools/proguard下面,裡面已經包含了基本的混淆宣告,有興趣的可以去看下。
            // proguard-rules.pro是在module根目錄下面,我們可以根據專案去新增。
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

依賴的配置:

// 表明是依賴庫配置
dependencies {
    // 表明依賴libs目錄下的所有jar包
    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'
}

關於依賴,在後面章節中還會做更多的介紹。

proguard-rules.pro檔案

module中的程式碼混淆配置檔案,使用方式和Eclipse中一樣。我們在build.gradle中可以看到如下片斷用來啟用混淆。

buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

專案目錄結構大概就分析完了,這裡只是針對專案中的檔案做了一些簡單的說明,更說的使用在後面繼續介紹了。

相關推薦

Android Studio基礎專案目錄結構()-學習

開始前先說下什麼是Gradle 這是我在網上找到的對Gradle的描述: At the heart of Gradle lies a rich extensible Domain Specific Language (DSL) based on Gro

Android Studio基礎依賴管理(五)-學習

在我們的專案中,或我或少都會用到一起第三方的庫,那麼對它的管理也就成為了專案中的一部分。這裡就介紹下在Android Studio中如何去管理專案中的庫和它們的依賴。 如何新增一個庫 Android Studio中新增一個庫有三種方法 第一種,直接

Vue 入門專案目錄結構介紹

Vue 是一套用於構建使用者介面的漸進式框架,與其它大型的頁面框架不同的是,Vue 被設計為可以自底向上逐層應用。Vue 的核心庫只關注檢視層,不僅易於上手,還便於與第三方庫或既有專案整合。另一方面,當與現代化的工具鏈以及各種支援類庫結合使用時,Vue 也完全能

Android Studio專案目錄結構介紹

在Android Studio中,提供了以下幾種專案結構型別 Android Studio專案目錄結構介紹 我們一般常用的有以下兩種結構: Project 結構型別 Android Studio專案目錄結構介紹 app/build/ app模組build編譯輸出的目錄

Android Studio修改專案目錄結構

首先我們來看一下gradle專案的結構是什麼樣子的: 這裡寫圖片描述 MyApplication:整個專案的根目錄 settings.gradle:配置哪些資料夾是module,在這個示例專案中app資料夾就是一個module build.grade:專案整體配置,包括maven庫以及And

Android學習】第一章 · 安卓專案目錄結構

src: java原始碼所在目錄 gen:自動生成的資源id(不能修改) Android.jar:匯入安卓jar包才能使用安卓的api Android dependencies:映象,類似於快捷方式,原始檔在libs下 libs:支援包,使低版本支援高版本新特

markdown 專案目錄檔案結構展示

一般來說,我們為專案寫readme文件時,都會對整個目錄的專案結構做個說明。 例如這樣的: 我們可以用mddir來生成專案目錄結構:mddir 使用命令 node mddir "../relative

Unity與Android的互動專案結構

概述 為什麼會寫這樣的文章,原因是我們在使用Unity做開發的時候少不了跟其它平臺做互動,特別是當前流行的Android和iOS。但是由於Unity官方文件缺少這方便詳細的資料,以及每個人的開發水平也參差不齊,再加上涉及到多平臺的互動(不同平臺的開發者不甚瞭解

經驗總結-完整介紹Android Studio中Git的使用Android Studio上傳專案至GitHub(三)

現在我們開始吧,說明一下,下面的內容中,都是Git部落格系列的,雖然專案名和和之前不同,但它們都是銜接關係,如果你沒有銜接好,請建立一個專案自行完成銜接。 一、首先再次確定你自己的專案建立了Git

Android學習.0(Android專案目錄結構)

1.      重要目錄檔案: a)        Src/:原始碼目錄 b)        Gen/:系統自動生成程式碼的目錄 c)        Res/:存放圖片、佈局、字串等資源 d)        AndroidManifest.xml:應用程式配置檔案 2

TP5學習基礎二:目錄結構、URL路由、數據操作

更改 數據 valid nbsp 命名 別名 ret tag ati 一.安裝1.使用git或者composer(composer update)進行實時更新,區別在於git不會清空核心框架目錄而composer會清空。2.使用官網打包好的TP壓縮包(解壓即可用)->

Android Studio 基礎知識

頁面設置 backup bar 數據庫 layout 外部 ports blog ring 1, App 的 名稱 AndroidManifest 下的 <application android:allowBackup="tr

【Linux相識相知】計算機的組成、linux發行版和哲學思想、基礎命令和目錄結構

知識 sun pro 復制 val 算術 uil cdr type 從今天開始,Frank將開始在博客上記錄自己學習linux的點點滴滴,F初來乍到,還望各位大佬多多指教。本次博客的主要內容如下: 計算機基礎:簡要的描述了計算機的組成及其功能; linux初

android studio入門環境配置

版本 log 127.0.0.1 jar 連接 .exe 目錄 jre 文件 JDK環境搭建 添加環境變量:JAVA_HOME:->JDK安裝路徑 CLASSPATH:->.;%JAVA_HOM

一圖解明Android Studio項目文件結構各部分作用

info 感激 初學 分享圖片 post 作用 圖片 andro 整理 初學Android在閱讀<第一行代碼>的時候整理出來的,如果差錯懇請指出,不勝感激。 制圖不易,轉載請標註出處,謝謝。一圖解明Android Studio項目文件結構各部分作用

微擎二次開發教程系統目錄結構

上傳 定制 配置文件 附加組 htm 需要 數據 二次 ins 今天春哥技術博客和大家分享下關於微擎二次開發教程之系統目錄結構,希望可以幫到大家。 入口腳本入口腳本是應用啟動流程中的第一環,入口文件根據“系統配置文件”初始化了系統的常量、全局變量及全局對象,並將終端用戶的請

scrapy基礎 xpath網頁結構

5.0 sel books category 層級 enc descend ray 基礎 1 ,什麽是xpath XPath 是一門在 XML 文檔中查找信息的語言。XML是一種類似於HTML的傳輸協議 2,節點 XPath 中,有七種類型的節點:元素、屬性

VUE專案目錄結構介紹

build目錄是一些webpack的檔案,配置引數什麼的,一般不用動 config是vue專案的基本配置檔案 node_modules是專案中安裝的依賴模組 src原始碼資料夾,基本上檔案都應該放在這裡。 —assets 資原始檔夾,裡面放一些靜態資源 —components這裡放的都是各個

Android Studio無法執行專案:app:transformClassesWithDependencyCheckerForDebug

專案之前執行正常,後莫名出現的一個如下一個錯誤,專案執行不起來 Information:Gradle tasks [:app:clean, :app:generateDebugSources, :app:mockableAndroidJar, :app:prepareDebugUnitTestD

flask基礎app初始化()

templates 定靜 縮小 path 通訊協議 handle before rom fir 前言 flask的核心對象是Flask,它定義了flask框架對於http請求的整個處理邏輯。隨著服務器被啟動,app被創建並初始化,那麽具體的過程是這樣的呢? 系列文章 fl