Android Studio 之 Gradle與Project Structure詳解

來源:互聯網
上載者:User

標籤:android studio   android   gradle   structure   android structure   

啟動Project Structure的時候可以Structure看到分兩個地區一個是項目的總體設定地區.還有一個是對Module的分別設定.
一.項目總體設定SDK Location中可以設定SDK和JDK路徑.

Project中可以設定Gradle與Android工具的資訊
發覺有個字母打錯了,不理了....Gradle本身必須有一個倉庫源,否則無法運行什麼是倉庫源:倉庫源就是Gralde對Android支援的一個倉庫,對Android進行相應的配置,處理等資訊.具體可以參考下面連結http://www.gradle.org/docs/2.2/userguide/dependency_management.html#sec:repositories
預設的倉庫源是jcenter.以前是mavenCentral.也可以填寫自訂的地址.本地地址等.具體可以參考以下連結http://www.gradle.org/docs/2.2/userguide/artifact_dependencies_tutorial.html#N1062

相關的配置資訊可以在項目空間的build.gradle檔案查看.開啟項目空間的build.gradle檔案.可以看到這麼一個程式碼片段:(如何找到這個檔案請查看我的上一遍部落格:http://blog.csdn.net/siyehuazhilian/article/details/42123563)
這裡就顯示該項目空間的倉庫源是jcenter.修改上面的倉庫源,這個代碼也會跟著變化.

二.Modlue地區Module一共包含五個選項卡分別是:屬性,簽名,多渠道,構建類型,依賴包.
Properties屬性?Compile Sdk Version:Android的編譯版本?Build Tools Version: 構建工具版本?Library Reposiory當前的Module的倉庫源.這裡可以定義一個地址,一個本地路徑,或者是jcenter()和mavenCentral().填寫任何一個倉庫,AS會自動下載對應的倉庫,如果你隨便填寫一個,會提示你無法串連到該倉庫.我這這裡填寫了mavenCentral()

在開啟對應的.Gradle設定檔
可以看到有被修改的標誌了.點進去以後
發覺這個檔案自動添加了一個倉庫源.名字就是mavenCentral(),然後最下面的狀態列顯示正在下載mavenCentral()倉庫.注意:由於項目空間已經定義了倉庫源,所以Module的build.gradle檔案預設是沒有倉庫源的,通常情況下也不需要填寫Ignore Assets Pattern:打包時候要忽略的檔案這將影響所有使用aapt的task.這裡我填寫一個siyehua.
在對應的檔案中可以看到多了以下代碼:
Incremental Dex:增長DEXAndroid打包工具(aapt)將DEX檔案,資源檔以及AndroidManifest.xml檔案(二進位格式)組合成一個應用程式套件組合(APK)。應用程式套件組合可以被發布到手機上運行
如果將它設定為ture,可以看到對應的檔案中增加了如下代碼

  1. dexOptions {
  2. incremental true
  3. }
Source Compatibility:資源版本 Target Compatibility:目標版本兩個都選了1.7,可以看到增加了如下代碼:Signing簽名它們之間的關係是:一個keystroe就是一個簽名檔案.開啟它需要一個密碼,就是keystore密碼.Keystrore中可以存放多個key Alias,每一個key alias有一個單獨的密碼.Flavors(多樣性,多渠道)我們的應用經常需要多渠道打包.這個可以翻譯為多渠道打包.Name:Flaveor的名字Min Sdk Version:向下相容的SDK版本Application Id:包名Proguard File:混淆檔案混淆檔案,去除無用檔案,並最佳化代碼Signig Config:簽名檔案名稱.簽名的檔案資訊在前一個選項卡Signing中設定.在這裡選擇Target Sdk Version:目標SDK版本Test Instrumentation Runner:Test RunnerTest Application Id:測試時的ID關於Test的介紹請點擊:http://www.apihome.cn/api/android/Instrumentation.htmlVersion Code:Module版本Version Name:Module版本名稱設定了以後可以看到這個渠道對應的資訊Build Types構建類型Name:Build Type名稱Debugable:是否可以調試Jin Debuggable:是否可以調試JNISigning Config:簽名資訊Renderscript Debuggale:是否使用RenderScriptRenderscript Optim Level:Rendescript版本.RenderScript相關介紹http://www.cnblogs.com/TerryBlog/archive/2012/03/02/2377251.htmlMinify Enabled:是否去除無用的資源Pseudo Locales Enaled:是否支援本地化整理關於本地化整理介紹http://blog.csdn.net/kieven2008/article/details/6873610Proguard File:混淆,去重檔案路徑Application Id Suffix:App id尾碼Version Name Suffix:版本名稱尾碼Zip Align Enabled:是否支援Zip Align關於ZipAlign介紹:http://www.cnblogs.com/xirihanlin/archive/2010/04/12/1710164.htmltesst_001設定好以後的對應屬性:Dependencies(依賴)在這裡添加添加jar包,library等.其中1.表示添加用系統的library,例如v7,v4包.2.添加jar包(注意這個jar包必須在當前的Module)3.添加一個Module(這個工程是AS A Libray)添加以後,點擊這個,會出現一下的選項.分表是編譯,提供,匯出APK時,測試編譯時間,調試,發布時.這裡選擇release complie.在對應的build.gradle中顯示總結:看完了上面的所有資訊,我們再來看看項目空間的build.gradle和其中的一個module的build.gradle檔案的資訊項目空間build.gradle檔案:

  1. // Top-level build file where you can add configuration options common to all sub-projects/modules./** * 項目空間的編譯環境 */buildscript {    /**     * 當前倉庫源     */    repositories {        /**         * 對應Android Plugin Repository         */        jcenter()    }    dependencies {        /**         * 對應Android Plugin Version         */        classpath 'com.android.tools.build:gradle:1.0.0'        // NOTE: Do not place your application dependencies here; they belong        // in the individual module build.gradle files    }}/** * 所有的倉庫源 */allprojects {    /**     * 預設倉庫源     */    repositories {        /**         * 對應Default Plugin Repository         */        jcenter()    }}


  2. Module的build.gradle檔案:
  3. /** * 聲明這是一個android應用 */apply plugin: 'com.android.application'/** * Android設定 */android {    /**     * 簽名:對應Signing選項     */    signingConfigs {        /**         * 簽名名稱:對應Singing→Name         */        test1 {            /**             * Key名字:對應Singing→Key Alias             */            keyAlias 'siyehua'            /**             * Key密碼:對應Singing→Key Password             */            keyPassword 'siyehua'            /**             * KeyStroe路徑:對應Singing→Stroe File             */            storeFile file('C:/Users/Administrator/Desktop/work/其他/tour.keystore')            /**             * KeyStore密碼:對應Singing→Store Password             */            storePassword 'siyehua'        }    }    /**     * 編譯版本:對應Properties→Compile Sdk Version     */    compileSdkVersion 21    /**     * 構建版本:對應Properties→Build Tools Version     */    buildToolsVersion "21.1.2"    /**     * 預設配置:對應Flavors→Name(這個是預設渠道)     */    defaultConfig {        /**         * 包名:對應Flavors→Application Id         */        applicationId "com.siyehua.android_siyehua"        /**         * 向下相容版本:對應Flavors→Min Sdk Version         */        minSdkVersion 15        /**         * 目標版本:對應Flavors→Target Sdk Version         */        targetSdkVersion 21        /**         * app版本號碼:對應Flavors→Version Code         */        versionCode 1        /**         * app版本名稱:對應Flavors→Version Name         */        versionName "1.0"        /**         * 簽名資訊:對應Flavors→Signig Config         */        signingConfig signingConfigs.test1        /**         * 測試APP 的id:對應Flavors→Test Application Id         */        testApplicationId 'siyehua'        /**         * 測試Runner:對應Flavors→Test Instrumentation Runner         */        testInstrumentationRunner 'siyehua'    }    /**     * 構建類型:對應Build Types     */    buildTypes {        /**         * 發布版本:對應Build Types→左側邊欄名字為release的構建版本         */        release {            minifyEnabled false            /**             * release的Proguard預設為Module下的proguard-rules.pro檔案.             */            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'        }        /**         * test版本:對應Build Types→左側邊欄名字為testbuild_001的構建版本         */        testbuild_001 {            /**             * 是否支援調試:對應testbuild_001→Debugable             */            debuggable true            /**             * 是否支援jin調試:對應testbuild_001→Jin Debuggable             */            jniDebuggable true            /**             * 簽名:對應testbuild_001→Signing Config             */            signingConfig signingConfigs.test1            /**             * 是否使用RenderScript:對應testbuild_001→Renderscript Debuggale             */            renderscriptDebuggable true            /**             * App id尾碼:對應testbuild_001→Application Id Suffix             */            applicationIdSuffix '_10087'            /**             * 版本名稱尾碼:對應testbuild_001→Version Name Suffix             */            versionNameSuffix '_10088'            /**             * 是否去除無用的資源:對應testbuild_001→Minify Enabled             */            minifyEnabled true            /**             * 是否支援本地化整理:對應testbuild_001→Pseudo Locales Enaled             */            pseudoLocalesEnabled true            /**             * 是否支援Zip Align:Zip Align Enabled             */            zipAlignEnabled true        }        /**         * 對應調試版本         */        debug {        }    }    /**     * 編譯選項     */    compileOptions {        /**         * 資源版本:對應Properties→Source Compatibility         */        sourceCompatibility JavaVersion.VERSION_1_7        /**         * 目標版本:對應Properties→Target Compatibility         */        targetCompatibility JavaVersion.VERSION_1_7    }    /**     *多渠道打包:多渠道打包使用這個設定不同的配置     */    productFlavors {        /**         * 對應Flavors→中名字為flavor12的配置         */        flavor12 {        }    }    /**     * 打包時候要忽略的檔案:對應Properties→Ignore Assets Pattern     */    aaptOptions {    }    /**     * DEX選項     */    dexOptions {        /**         * 增長DEX:對應Properties→Incremental Dex         */        incremental false    }}/** * 依賴包 */dependencies {    /**     * 對應Dependencies下的依賴包     */    compile fileTree(dir: 'libs', include: ['*.jar'])    compile 'com.android.support:appcompat-v7:21.0.2'    releaseCompile files('libs/xmn_lpush_1.3.jar')}/** * 當前Module的倉庫源:對應Properties→Library Reposiory(由於這個項目已經使用了一個倉庫源 * 除非有特殊要求,這裡不建議寫倉庫源) */repositories {    123}





看完上面的的相信大家對Gradle,相應的配置,以及要怎麼配置,在哪裡配置.都有了一個大概的瞭解. 注意:直接修改gradle會直接修改對應的設定.更多Gralde資訊.比如說Flavors與Build Types之間有什麼關係,對項目的構建會產生什麼影響.如何使用命令列配置等等問題可以參考以下連結(這些連結也是我寫這博文的參考基礎.):
①Gradle翻譯:在這裡可以看到每個選項的作用是什麼,翻譯的非常好http://blog.csdn.net/qinxiandiqi/article/category/2394347
②Gradle基礎,學習之路大神最新教程http://stormzhang.com/devtools/2014/12/18/android-studio-tutorial4/
③Gralde官網http://www.gradle.org/
對應的部分使用翻譯http://somefuture.iteye.com/category/300603
④Gralde翻譯以及使用http://blog.csdn.net/maosidiaoxian?viewmode=contents


如有任何錯誤與不足,歡迎留言討論.謝謝

Android Studio 之 Gradle與Project Structure詳解

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.