Android應(yīng)用模塊基本配置元素

Android應(yīng)用模塊基本配置元素

/**
* 構(gòu)建配置中的第一行
* 將Gradle的Android插件應(yīng)用到這個(gè)構(gòu)建中
* 并使Android塊可用來(lái)指定Android特定的構(gòu)建選項(xiàng)。
*/
apply plugin: 'com.android.application'

/**
 * 這是你配置所有Android特有塊的地方
 * 構(gòu)建選項(xiàng)
 */

android {

  /**
   * compileSdkVersion指定Gradle應(yīng)該使用的Android API級(jí)別
   * 編譯你的應(yīng)用程序。這意味著你的應(yīng)用程序可以使用包含的API特性
   */

  compileSdkVersion 28

  /**
   * buildToolsVersion指定SDK構(gòu)建工具的命令行版本的工具個(gè)編譯器
   * Gradle使用他們來(lái)構(gòu)建你的應(yīng)用程序
   * 您需要使用SDK管理器來(lái)下載構(gòu)建工具
   * 此屬性是可選的,因?yàn)椴寮J(rèn)使用推薦的構(gòu)建工具版本
   */

  buildToolsVersion "29.0.0"

  /**
   * defaultConfig塊封裝了所有構(gòu)建變體的默認(rèn)設(shè)置和條目
   * 并且可以覆蓋main/AndroidManifest中的一些屬性
   * 從構(gòu)建系統(tǒng)動(dòng)態(tài)地生成xml
   * 您可以配置產(chǎn)品口味來(lái)覆蓋應(yīng)用程序不同版本的這些值。
   */

  defaultConfig {

    /**
     * applicationId惟一地標(biāo)識(shí)要發(fā)布的包
     * 但是,您的源代碼仍然應(yīng)該引用主/AndroidManifest.xml文件中的package屬性定義的包名。
     */

    applicationId 'com.example.myapp'

    // 定義你的app所能運(yùn)行的最低級(jí)別API
    minSdkVersion 15

    // 指定測(cè)試應(yīng)用的API級(jí)別
    targetSdkVersion 28

    // 指定你的應(yīng)用APP的版本號(hào)
    versionCode 1

    // 指定你的應(yīng)用的版本名字
    versionName "1.0"
  }

  /**
   * 你可以在buildTypes塊中配置多個(gè)構(gòu)建類(lèi)型,默認(rèn)情況下,
   * 系統(tǒng)定義了兩個(gè)構(gòu)建類(lèi)型,debug和release
   * 在默認(rèn)的情況下,debug的構(gòu)建類(lèi)型中是沒(méi)有顯示配置的
   * 但是他包含調(diào)試工具,使用默認(rèn)的debug-key進(jìn)行簽名
   * build type應(yīng)用了Proguard設(shè)置,默認(rèn)情況下沒(méi)有簽名
   */

  buildTypes {

    /**
     * 默認(rèn)情況下,Android Studio使用minifyEnabled配置發(fā)布構(gòu)建類(lèi)型來(lái)啟用代碼壓縮,
     * 并指定Proguard設(shè)置文件。
     */

    release {
        minifyEnabled true // 為版本構(gòu)建類(lèi)型啟用代碼資源壓縮,其實(shí)就是是否使用混淆
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
  }

  /**
   * 在productFlavors塊中可以配置多個(gè)產(chǎn)品風(fēng)味
   * 這允許你創(chuàng)建不同版本的應(yīng)用程序
   * 用他們來(lái)覆蓋defalutConfig塊中的屬性設(shè)置
   * 產(chǎn)品風(fēng)味是可選的,系統(tǒng)默認(rèn)不創(chuàng)建他們
   *
   * 這個(gè)示例創(chuàng)建了free和paid兩個(gè)productFlavors
   * 每一個(gè)productFlavors都有他們自己特有的一個(gè)application ID
   * 所以他們可以同時(shí)存在于Google Play Store或者一個(gè)Android設(shè)備中
   * 
   * 如果你聲明一個(gè)productFlavors,那么你就必須要聲明口味維度(flavorDimension)
   * 并為每一個(gè)productFlavors分配一個(gè)flavorDimensions
   */
  flavorDimensions "tier"
  productFlavors {
    free {
      dimension "tier"
      applicationId 'com.example.myapp.free'
    }

    paid {
      dimension "tier"
      applicationId 'com.example.myapp.paid'
    }
  }

  /**
   * 在splits塊中,你可以配置不同的apk構(gòu)建
   * 每個(gè)只包含支持的屏幕密度或代碼和資源ABI
   * 您還需要配置您的構(gòu)建,以保證每一個(gè)APK都有一個(gè)自己不同的versionCode
   */
  splits {
    // 基于屏幕密度來(lái)構(gòu)建多個(gè)apk
    density {

    // 啟用或禁用構(gòu)建多個(gè)apk
    enable false

    // 當(dāng)構(gòu)建多個(gè)apk的時(shí)候排除這些配置
    exclude "ldpi", "tvdpi", "xxxhdpi", "400dpi", "560dpi"
    }
  }
}

/**
 * 指定模塊所需的依賴項(xiàng)
 */
dependencies {
    implementation project(":lib")
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation fileTree(dir: 'libs', include: ['*.jar'])
}
?著作權(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)容