Gradle 學習 一

Gradle 學習 一

  1. android的目錄結構裏面

    項目下的 (1)gradle文件夾 其實是gradle這個工具的架包和它的版本號信息

    項目下的(2)build.gradle 文件主要是用運用gradle語言來引入針對android的gradle的插件和一些android需要的依賴倉庫,gradle和android gradle 有區別

    項目下app文件夾下的(3)build.gradle 是運用android的gradle的插件對工程的編譯配置和一些架包的依賴引用

  2. app build.gradle

    1) apply plugin 領域

    apply plugin: 'com.android.application'   
    //表示這是一個應用,同時應用的是這個編譯application的插件
    apply plugin: 'com.android.library'
    //表示這是一個library,同時應用的是這個編譯library的插件

    2) android 閉包領域

    compileSdkVersion 編譯的sdk版本
    buildToolsVersion 編譯工具版本 其實這兩個不衝突
    還有其它 附表

    3) dependencies 閉包領域

    compile fileTree (dir: ‘libs’, include: *.jar)

    把libs文件夾裏面的後綴.jar都依賴編譯了

    當然如果你任性刪了,也可以的,你可以單獨的引用

    compile files(‘libs/xxx.jar’)

    當然這是比較任性的人

    compile ‘com.android.support:appcompat-v7:25.2.0’

    這是當年,忽悠我用as人說的,引用網絡jar方便,確實方便,就是這麼簡單的一句代碼\ androidTestCompile

    測試的東西,我也不懂,沒用過,用過再裝逼.

    testCompile

    同上

  3. local.properties

    本地化適應的屬性 寫入ndk和sdk 的安裝路徑

    ndk.dir=/usr/android-ndk-r10c
    sdk.dir=/home/caoyang/Android/Sdk
  4. gradlew aR=assembleRelease

    相見恨晚啊

    直接使用gradle +一些任務名 沒有安裝gradle 使用gradlew+任務名

    以前聽大神說的gradle編程多牛逼吶原來原理就這兩句啊

    gradlew clean clean的功能

    gradlew build build的功能

    gradlew task 查看所有的任務

    很多不再列舉 在android studio 右側邊欄(gradle projects)中 列舉也有

  5. 全局變量的引用

    //根目錄下的gradle.build中第一層加如變量
    ext {
       cs = 26
    }
    //在app目錄下的gradle.build或者library目錄下的gradle.build中可以引用
    compileSdkVersion rootProject.ext.cs
  6. 方法引用

    可以動態配置一些參數

    //方法定義
    def getVc() {
       return 1;
    }
    //方法引用
    versionCode getVc()
  7. android gradle 官方網址 各個閉包領域解讀 不翻牆打不開

  8. buildTypes 閉包領域 生成不同類型的apk的配置

    release {//正常情況下就這一個
       minifyEnabled false
       proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
    
    ttt {//自定義
       applicationIdSuffix ".ttt" //正常的包名後加後綴 可區分app
       minifyEnabled false
       proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
    //或者
    ttt.initWith(buildTypes.release) //繼承release的屬性
    ttt {
        applicationIdSuffix ".ttt"
    }
    //通過gradlew build 命令行或者在as中選擇  頂部導航欄 Build->Build apk 
    //可在app/build/output/apk/文件夾中查看生成的apk文件 不過都是未簽名的請注

    一些其他感覺有用的屬性

applicationIdSuffix 正常的包名後加後綴
packageNameSuffix 已經過時了和 applicationIdSuffix效果一致
signingConfig 簽名配置,React Native 打包使用這種方式,配置打包信息
debuggable 是否可以debug ???

Error:(24, 0) Could not find method packageNameSuffix() for arguments [aaa] on BuildType_Decorated{name=ttt, debuggable=false, testCoverageEnabled=false, jniDebuggable=false, pseudoLocalesEnabled=false, renderscriptDebuggable=false, renderscriptOptimLevel=3, minifyEnabled=false, zipAlignEnabled=true, signingConfig=null, embedMicroApp=true, mBuildConfigFields={}, mResValues={}, mProguardFiles=[/home/caoyang/AndroidStudioProjects/CTest/build/intermediates/proguard-files/proguard-android.txt-2.3.3, /home/caoyang/AndroidStudioProjects/CTest/app/proguard-rules.pro], mConsumerProguardFiles=[], mManifestPlaceholders={}} of type com.android.build.gradle.internal.dsl.BuildType.
報的錯,裏面的屬性集合可以一看

  1. signingConfig 閉包領域配置

    以RN爲例

    //定義一個signingConfigs集合
    signingConfigs {
           release {
               storeFile file("key.jks")
               storePassword "123456" 
               keyAlias "xys"
               keyPassword "123456"
           }
         //可在gradle.properties文件中定義
         //MYAPP_RELEASE_STORE_FILE=key.jks
         //MYAPP_RELEASE_KEY_ALIAS=123456
         //MYAPP_RELEASE_STORE_PASSWORD=xys
         //MYAPP_RELEASE_KEY_PASSWORD=123456   
          release2 {
               storeFile file(MYAPP_RELEASE_STORE_FILE)
               storePassword MYAPP_RELEASE_STORE_PASSWORD
               keyAlias MYAPP_RELEASE_KEY_ALIAS
               keyPassword MYAPP_RELEASE_KEY_PASSWORD
           }
       }
    //在buildTypes中引用
    buildTypes {
           release {
               minifyEnabled enableProguardInReleaseBuilds
               proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
               signingConfig signingConfigs.release
           }
       }
  2. compileOptions

    compileOptions{
       sourceCompatibility JavaVersion.VERSION_1_8
       targetCompatibility JavaVersion.VERSION_1_8
    }
    //有坑 感覺不用這樣就可以使用,雞肋
  3. lintOptions

    lintOptions{ //語法拼寫檢查配置
        abortOnError false //在發生語法錯誤不拋出,編譯文件時
    }
發佈了70 篇原創文章 · 獲贊 3 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章