gradle从零单排

作者: 重新起步 | 来源:发表于2021-07-23 08:24 被阅读0次

背景:写了好久的Android代码,对于gradle一直不太理解,今天开始从头学习gradle;

官网地址:https://docs.gradle.org/current/userguide/java_library_plugin.html#sec:java_library_recognizing_dependencies

build.gradle基本结构如下图:

buildscript {
    repositories {
        // 仓库
        google()
        jcenter()
        mavenCentral()    
    }
    dependencies {
        // 依赖
        classpath 'com.android.tools.build:gradle:3.3.1
    }
}

apply plugin:'com.android.application' 应用模块
apply plugin: 'com.android.library' 依赖模块

基本任务:
assemble: 创建一个debug版本的APK
check: 运行所有的检查
Build:触发assemble和check
clean: 清楚项目的输出

顶层构建文件:

buildscript {
    repositories {
        // 仓库
        jcenter()   
    }
    dependencies {
        // 依赖
        classpath 'com.android.tools.build:gradle:3.3.1
    }
}
allprojects {
      // 被用于所有模块的属性
      repositories {
        // 仓库
        jcenter()   
    }
}

模块的构建文件:

plugins {
    id 'com.android.application'
}

android {
    compileSdkVersion 30  // 用来编译应用的Android APi版本
    buildToolVersion "22.0.1"  // 构建工具和编译器使用的版本号

    defaultConfig {
        applicationId "com.ford.sync.gradleapp" //作为应用的唯一标志 
        minSdkVersion 16 // 被用来配置运行应用的最小API级别
        targetSdkVersion 30 //用于通知系统,该应用已经在特定的Android 版本通过测试
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
            buildConfigField "boolean" ,"LOG_HTTP_CALLS","true" 
        }

        debug {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
             buildConfigField "boolean" ,"LOG_HTTP_CALLS","false" 
             // java代码中可使用BuildConfig.LOG_HTTP_CALLS来使用
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

dependencies {
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support.constraint:constraint-layout:2.0.4'
    testImplementation 'junit:junit:4.+'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}

原来package name有两个用途
1.作为应用的唯一标志 ----application id
2.R资源和类中作为包名 -----保留,继续用package name

minSdkVersion 被用来配置运行应用的最小API级别
targetSdkVersion 用于通知系统,该应用已经在特定的Android 版本通过测试

versionCode和versionName 覆盖AndroidManifest

defaultTasks 'clean','build' 指定默认的任务

Android应用依赖标志配置:

  • compile
  • apk
  • provider
  • testCompile
  • androidTestCompile

相关文章

  • gradle从零单排

    背景:写了好久的Android代码,对于gradle一直不太理解,今天开始从头学习gradle; 官网地址:htt...

  • Redis基础

    参考 从零单排学Redis【青铜】 从零单排学Redis【白银】 从零单排学Redis【黄金】 从零单排学Redi...

  • 优秀文章(解决方案)收集

    【参考】Android Dagger2 从零单排(一) 基础注解Android Dagger2 从零单排(二) @...

  • 从零单排

    毕业到现在两年,也有过一份不错的工作。但是作啊,不然怎么变成现在的模样(已经没工作一年)呢!犟亦或是执着,反正就是...

  • 从零单排的this

    说起this,我突然想到一个外国佬学中文的段子:解释文中每个意思的意思: 阿呆送领导红包。领导:你什么意思?阿呆:...

  • RxAndroid从零单排

    最近在学习Android,把每天的学习笔记作为内容发布在简书上 疑问一:什么是RxJava和RxAndroid?答...

  • Android从零单排——前言

    记得上一次写文,写自由思想的文,还是在高考语文考试的时候叻。所以,难免欠缺文采,口水居多,望见谅。 ...

  • 算法导论从零单排

    2016.11.30开始,每周两章。 2.1-1 以图2-2为模型,说明INSERTION-SORT在数组A = ...

  • 从零单排的nodejs

    nodejs使用简要 给个理由 从安装开始 更新及版本选择 模块 NPM 资料 自定义模块 使用模块 http协议...

  • 从零单排学Redis【白银】

    前言 只有光头才能变强 今天继续来学习Redis,上一篇从零单排学Redis【青铜】已经将Redis常用的数据结构...

网友评论

    本文标题:gradle从零单排

    本文链接:https://www.haomeiwen.com/subject/gcsumltx.html