1. 程式人生 > >Android Studio中Module下的gradle檔案的基本配置

Android Studio中Module下的gradle檔案的基本配置

本文將介紹平常android開發當中專案module的gradle檔案中的基本配置(不包含建立的library進行上傳到jcenter的指令碼配置),以及針對一些常見的問題進行說明。
歡迎加入交流群:微信群(AndroidRunner )、QQ群(314896948)
歡迎關注微信公眾號:AndroidRunner


在專案的module目錄下的gradle檔案主要包含三個節點,分別是apply、android和dependencies,下面就將這三個節點分別做一個介紹。

1.apply節點

apply所標識的用以區分了application以及library。這個節點的作用就是用來區分當前module是可以作為應用程式還是作為一個應用程式的支援庫module。

application module使用如下:

applyplugin:'com.android.application'

library使用如下:

apply plugin: 'com.android.library'

2.android節點

  • packagingOptions

    packagingOptions {
          pom.properties'
          exclude 'project.properties'
          exclude 'META-INF/LICENSE.txt'
          exclude 'META-INF/LICENSE'
          exclude 'META-INF/NOTICE.txt'
          exclude 'META-INF/NOTICE'
          exclude 'META-INF/DEPENDENCIES.txt'
          exclude 'META-INF/DEPENDENCIES'
      }

    我們在開發過程當中可能會遇到這樣的問題,匯入了很多的三方庫或者框架,在專案編譯的時候會報重複檔案錯誤,如下圖



    解決這個錯誤的方法就可以在packagingOptions中加入以下兩句:

    exclude 'META-INF/maven/com.squareup.okio/okio/pom.xml'
    exclude 'META-INF/maven/com.squareup.okio/okio/pom.properties'
  • lintOptions

    lintOptions {
             disable 'MissingTranslation'
          abortOnError false
          ignoreWarnings true
      }

    其中disable 'MissingTranslation'是在lint檢查的時候禁用翻譯缺少檢查,如果你的專案不考慮國際化可以加上,如果需要國際化就去掉該行即可。abortOnError false設定在lint檢查時如果出現error是否需要中斷,如果對lint檢查要求不高可以設定為false,關心lint檢查的話設定true即可。ignoreWarnings true設定是否忽略警告,在lint檢查時會對一些程式碼進行警告比如有用了過時API的註解地方,一般可以設定為true,忽略掉警告。lintOptions還有其他一些控制開關,具體可以點進lintOptions原始碼檢視。

  • signingConfigs

    signingConfigs {
          debug {
              keyAlias 'android'
              keyPassword 'android'
              storeFile file('E:/debug.jks')
              storePassword 'android'
          }
          release {
              keyAlias 'psw'
              keyPassword 'psw'
              storeFile file('keystore addresss')
              storePassword 'psw'
          }    
    }

    signingConfigs是專案module的簽名配置資訊,主要包括除錯版和釋出版,考慮隱私資訊可以僅使用debug即可,release在匯出包使用手動新增。幾個欄位含義應該開發者都比較清楚了,這裡不做介紹。

  • compileSdkVersion

    compileSdkVersion 23

    編譯SDk的版本號,改版本號決定使用的SDK對應的android原始碼,android原始碼隨著版本的不斷更新,各個版本間也有著一定的區別,這裡所填寫的版本號關係到具體程式碼的一些API的使用,可以根據當前APP的版本相容要求做相應的相容。

  • buildToolsVersion

    buildToolsVersion "23.0.2"

    使用的編譯工具版本號指定,對於應編譯版本號即可。

  • defaultConfig

    defaultConfig {
          applicationId "com.xxx"//app的唯一識別符號,一般使用包名
          minSdkVersion 14 //app要求最低的SDK版本號 對於應android可使用的最低系統版本
          targetSdkVersion 23 //目標版本SDK版本號
          versionCode 1 // app版本號
          versionName "1.0.0" // app版本名稱
    
          // 多渠道打包預設渠道(以umeng為例)
          manifestPlaceholders = [UMENG_CHANNEL_VALUE: "GF"]
      }

    defaultConfig裡面可以設定app的一些相關預設配置資訊,包括應用的id,可使用最低版本,版本號,版本名稱等。

  • buildTypes

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

    buildTypes設定編譯對應的版本時所需的一些配置設定,可以針對除錯版和釋出版進行不同的設定是否需要混淆、是否需要壓縮、是否需要刪減無用資源等。

  • sourceSets

    sourceSets.main {
          jniLibs.srcDir 'libs'
    }

    sourceSets用來設定專案對應檔案資源的路徑位置,比如習慣平常的把jni檔案so包存放在libs目錄下即可設定jniLibs.srcDir 'libs',也可以設定其他檔案目錄,包括原始碼,資源,jar包等等。

  • productFlavors

      productFlavors {
         GF {}
          wandoujia {}
          //... add more
      }
    
      productFlavors.all { flavor ->
          flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
      }

    productFlavors提供了多渠道打包的渠道設定,成列了可生產的取到列表,productFlavors.all通過遍歷productFlavors中的所有條目對應替換AndroidManifest.xml下面meta節點key為UMENG_CHANNEL_VALUE的value,從而生成對應渠道的apk包

3.dependencies

dependencies下面是專案的依賴第三方支援庫存放,包括libs目錄及目錄樹下子目錄所有的jar包,以及按照jcenter倉庫庫命名的的三方支援庫。樣例如下:

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.android.support:appcompat-v7:23.3.0'
    compile 'com.android.support:design:23.3.0'

    compile 'com.squareup.picasso:picasso:2.5.2' //picasso
    compile 'com.squareup.okio:okio:1.6.0' //okio
    compile 'com.squareup:otto:1.3.8' //otto
    compile 'com.alibaba:fastjson:1.2.7' //fastjson
}

下面給出一個完整的gradle基本配置

apply plugin: 'com.android.application'

android {

    packagingOptions {
        exclude 'project.properties'
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/NOTICE.txt'
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/DEPENDENCIES.txt'
        exclude 'META-INF/DEPENDENCIES'
    }

    lintOptions {
        disable 'MissingTranslation'
        abortOnError false
        ignoreWarnings true
    }

    signingConfigs {
        debug {
            keyAlias 'android'
            keyPassword 'android'
            storeFile file('E:/debug.jks')
            storePassword 'android'
        }
        release {
            keyAlias 'psw'
            keyPassword 'psw'
            storeFile file('keystore addresss')
            storePassword 'psw'
        }
    }

    compileSdkVersion 23
    buildToolsVersion "23.0.2"

    defaultConfig {
        applicationId "com.xxx"//app的唯一識別符號,一般使用包名
        minSdkVersion 14 //app要求最低的SDK版本號 對於應android可使用的最低系統版本
        targetSdkVersion 23 //目標版本SDK版本號
        versionCode 1 // app版本號
        versionName "1.0.0" // app版本名稱

        // 多渠道打包預設渠道(以umeng為例)
        manifestPlaceholders = [UMENG_CHANNEL_VALUE: "GF"]
    }

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

    sourceSets.main {
        jniLibs.srcDir 'libs'
    }

    productFlavors {
        GF {}
        wandoujia {}
        //... add more
    }

    productFlavors.all { flavor ->
        flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.android.support:appcompat-v7:23.3.0'
    compile 'com.android.support:design:23.3.0'

    compile 'com.squareup.picasso:picasso:2.5.2' //picasso
    compile 'com.squareup.okio:okio:1.6.0' //okio
    compile 'com.squareup:otto:1.3.8' //otto
    compile 'com.alibaba:fastjson:1.2.7' //fastjson
}

相關推薦

Android StudioModulegradle檔案基本配置

本文將介紹平常android開發當中專案module的gradle檔案中的基本配置(不包含建立的library進行上傳到jcenter的指令碼配置),以及針對一些常見的問題進行說明。歡迎加入交流群:微信群(AndroidRunner )、QQ群(314896948) 歡迎關

Android Studio的build.gradle檔案解析

工程中根路徑下的build.gradle檔案 apply plugin: 'com.android.application' //表示是一個應用程式的模組,可獨立執行 //apply plugin: 'com.android.library' //表示是一個依

Android StudioModule的build.gradle詳解

Gradle版本 我們在進行採用AS進行安卓專案的開發時,就必須接觸gradle,它是目前最新潮的一個構建專案的一個系統,而google也與時俱進,用著最新的東西,順便說下,eclipse之前是用Ant來構建專案的,還有一個用的比較多的就是maven。而AS的

android studio 的build.gradle

studio rain const list for config cep ets brush apply plugin: ‘com.android.application‘ android { compileSdkVersion 26 defaultCo

關於Android Studio的org.gradle.jvmargs=-Xmx1024m問題

1.開啟主工程的 gradle.properties 2. 找到 # org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8

Android Studio so、jar檔案的打包及使用

一 載入so檔案 平臺:windows  IDE :Android Studio  下載好ndk:下載地址  https://developer.android.com/ndk/downloads/index.html   第1步:新

Android Studio 遇到的Gradle build外掛版本太低的問題:Plugin is too old

先說自己的解決辦法: (Gradle分兩個,一個是本地構建用的構建工具,另一個是Android Studio中的外掛,用來呼叫本地的工具,這裡說的是外掛) 一、先看看自己的gradle外掛版本,專案的build.gradle中gradle:後面為版本號,例: classpa

Android Studio buildclean 和rebuild選項消失

使用AS2.2版本過程中關閉重新開啟後 ,所有的module 都被打上紅叉, build下clean 和rebuild選項也消失了,沒法重新編譯,並且在setting-->system 下也找不

Android Studio快速將佈局檔案通用的屬性抽取成Style

如題,有時候看見一個佈局寫上幾百行看上去會非常吃力麻煩,這時候抽取控制元件樣式很有必要了, Android Studio提供了抽取Style樣式的方式, 可能是藏的太深了, 很少人用 游標放在控制元件內: 右鍵 –>Refactor –> Extract –

關於Android Studio安裝和gradle的一些坑

本人從開始用Android Studio到現在已經快一年了吧,在我剛開始用的時候Android Studio還是1.2的版本。當時安裝會因為國內牆的緣故,導致下載SDK步驟卡死無法安裝。 最近的版本似乎都沒出現這個問題,但是還是要吐槽一下最近的2.2.3的更新。這個版本安

Android studio正確引入so檔案的方法

相信很多朋友在使用Android studio開發中,遇到過如何引入第三方so檔案的問題,然而第三方官方僅僅給出了ADT環境下的整合方式。 Android studio中預設使用的是gradle編譯方式,與ADT編輯方式不一樣,那麼so檔案應當如何引入呢? 其實很簡單。這

Android Studio使用新的Gradle構建工具配置NDK環境

在進行配置前請先將Android Studio更新至最新版本,目前最新版本是1.4 Bata4 並且使用Android Studio內建的SDK管理器下載NDK。 或者在專案上右鍵開啟Project Structure,切到的SDK Locati

Android Studio裡面的Build.gradle的詳細配置說明

apply plugin: 'com.android.application'//說明module的型別,com.android.application為程式,com.android.library為庫 android { compileSdkVersion 22/

android studio存放json檔案,獲取assets檔案檔案,獲取本地json檔案並解析

轉自http://blog.csdn.net/yanxiaosa/article/details/70859927 以前看過這些知識,今天用到的時候,發現自己忘記了,都不知道assets資料夾在哪個目錄下。百度了一下,assets目錄和java目錄是同一個級別的。  我

Android Studio讀取Assets目錄檔案

參考網址 首先,android studio 下的assets目錄檔案跟在eclipse下不一樣,所以有時候讀取assets目錄下的的檔案會無法讀取。 Android Studio中,這個assets目錄必須放在跟res同級目錄,也就是在main資料夾裡面,如下面2

Android StudioRun按鈕app的module顯示紅叉

依賴 run rom roi ctr kotlin androi 有效 如果 app出現紅叉提示找不到Android SDK 一、直接有效 1. ?File -> Invalidate Caches -> Invalida

Android Studio由於gradle插件版本和gradle版本對應關系導致的編譯失敗的問題

解決 壓縮 tools log 報錯 spa tool sts 報錯信息 今天在Android Studio中導入新項目,import之後編譯報錯,報錯信息基本都是和版本相關,查詢gradle版本相關知識,了解到gradle插件版本和gradle版本有相應的匹配關系,對應如

Android studiogradle配置打jar包和生成Javadoc文件

Android studio 中生成Javadoc 使用Android studio提供的生成Javadoc的方法(之前沒有想要使用這種方式的原因是因為當時以為使用這種方式的話每次生成都需要選擇想要生成的java檔案, 過於麻煩), 最後發現, 使用這種方式只有配置過一次規則之後, 這個規則

Android Studio 處理 Gradle 依賴的幾種方法的介紹

exclude exclude : 剔除依賴中的某個模組 例: // 根據組織名 + 構建名剔除 //recyclerview 不想要依賴 com.android.support:support-annotations:26.1.0,就可以這麼做 implementation

AndroidJNI使用詳解(3)---Android StudioSO檔案生成

Android中JNI使用詳解(2)---Android Studio中SO檔案生成 上一篇寫到過在Android Studio中配置NDK環境地址:Android Studio中NDK環境配置 這篇文章講解在Android Studio中