android 有两个build.gradle一个在外层,一个在内层(app目录内),在Android项目构件中起到关键作用。
外层的build.gradle:

buildscript {repositories {google()jcenter()}dependencies {classpath 'com.android.tools.build:gradle:3.4.1'     }
}allprojects {repositories {google()jcenter()}
}task clean(type: Delete) {delete rootProject.buildDir
}

解析:

  1. 1、在repositories {}中声明了两个库 google()和 jcenter()。

  2. 2、在 dependencies{}中声明了Gradle插件以及版本号(Gradle并不是仅仅用 于Android项目的开发。所以在此处需要声明)

内层的build.gradle:

     apply plugin: 'com.android.application'android {compileSdkVersion 29defaultConfig {applicationId "com.example.myapplication"minSdkVersion 19targetSdkVersion 29versionCode 1versionName "1.0"testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"}buildTypes {release {minifyEnabled falseproguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'}}
}dependencies {implementation fileTree(dir: 'libs', include: ['*.jar'])implementation 'androidx.appcompat:appcompat:1.1.0'implementation 'androidx.constraintlayout:constraintlayout:1.1.3'testImplementation 'junit:junit:4.12'androidTestImplementation 'androidx.test:runner:1.2.0'androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
}

解析:

  1. 1、 apply plugin:
    'com.android.application’表示应用了一个插件,此处的插件还可以是com.android.library两个插件区别为:com.android.application这是一个应用程序模块,能直接运行不需要依附于其他模块。而com.android.library这是一个库模块,需要依附于其他应用程序模块运行。
  2. 2、 android {}这个包包含了配置项目的各种属性: compileSdkVersion
    29:用指定的编译版本来编译此文件。(这里29 为采用Android9.+系统的SDK 来编译。集体可参考
    Android studio/file/setting/Appearance&Behavior/Systemsetting/Android ADK)
    applicationId “com.example.myapplication”:用来指定项目的包名。 minSdkVersion
    19:指定最低兼容的安卓版本。 targetSdkVersion
    29:targetSdkVersion是指你在目标版本上已经进行了充分的测试。因为Android版本是向前兼容的,就是新发布的SDK版本是兼容老的SDK版本的,所以这个版本号的设置就是提供向前兼容的主要方式。比如在程序启用时启用程序对的新功能和特性。
    versionCode 1:用于指定的项目号。 versionName “1.0”: 用于指定项目的版本名。
  3. 3、 buildTypes {}包用于指定生成安装文件的相关配置。
    Debug和release。Debug时用于生成测试版安装文件的相关配置。Release是用于生成正式版安装文件的相关配置。其中Debug可以忽略不屑。
    minifyEnabled false:用于对项目代码的混淆(用于防止反编译)。
    proguardFiles:用于指定混淆时使用的规则。(这里指定了两个proguard-android-optimize.txt’是在Android
    SDK 的根目录下。'proguard-rules.pro’是在当前项目文件的根目录下。)
  4. 4、dependencies {}里面包含了项目所有的依赖关系。(通常Android的依赖关系有三种。—本地依赖,远程依赖和库依赖。)

android studio 项目两个build.gradle的解析相关推荐

  1. Android studio中2种build.gradle文件介绍

    根目录下的build.gradle通常不需要修改这个文件中的内容,除非需要添加一些全局的项目构建配置 buildscript {repositories {google() //声明代码托管仓库Goo ...

  2. android 不同项目代码合并在一块,android - 是否可以将两个(正在积极开发中的)Android应用程序模块合并到同一个Android Studio项目中? - 堆栈内存溢出...

    我有两个工作正常的Android应用程序模块A和B,与同一个Android Studio项目相同. 它们每个都可以单独构建和运行. 但是如果我通过指定将模块A添加为"模块依赖项" ...

  3. 浅谈Android项目中的build.gradle文件

    一.gradle简介 gradle是基于groovy语言的. Android Studio是采用Gradle来构建项目的.Gradle是一个非常先进的项目构建工具,使用了一种基于Groovy的领域特定 ...

  4. 如何导入别人的android studio项目,解决gradle版本不兼容问题

    如何导入别人的android studio项目,解决gradle版本不兼容问题 参考文章: (1)如何导入别人的android studio项目,解决gradle版本不兼容问题 (2)https:// ...

  5. Android Studio项目结构

    我们创建了一个Android Project,打开就如下图所示:  我们选择Project视图,就会有以下的项目文档结构:  上面笔者标注的数字是接下来要讲解的内容.  我们先来看1:  我们创建Ap ...

  6. Android Studio项目整合PullToRefresh的问题记录

    PullToRefresh下拉刷新在App中应用非常频繁,然而PullToRefresh是在ADT下开发完成的.如果要将其整合到Android Studio目录下的话颇费周折.前面的文章"A ...

  7. java adt怎么打开项目,如何在Eclipse中打开Android Studio项目?

    慕的地6264312 将Android Studio项目导入Eclipse的分步过程 ...使用向导在eclipse中启动新的Android项目,并从app / build.gradle中填写以下详细 ...

  8. 【错误记录】Android Studio 编译报错 ( Invalid Gradle JDK configuration found )

    文章目录 一.报错信息 二.解决方案 一.报错信息 Android Studio 编译时提示 Invalid Gradle JDK configuration found 错误 ; 一般是打开一个新的 ...

  9. Android Studio项目转Eclipse项目

    Android Studio项目的目录结构和Eclipse项目不同.如何转换? 以FloatingAction 项目为例:实现向上滑动隐藏悬浮按钮,向上滑动显示悬浮按钮. GitHub 地址:http ...

最新文章

  1. webpack打包发布
  2. jvm 参数-server_JVM选项:-client vs -server
  3. 牙齿间隙变大怎么办_牙齿之间的间隙越来越大怎么办?
  4. 信息学奥赛一本通 1173:阶乘和 | OpenJudge NOI 1.6 15 | 洛谷 P1009 [NOIP1998 普及组] 阶乘之和
  5. NeurIPS | 谷歌使用机器学习如何做好分布外异常检测
  6. 如何查看redhat社区的solution(或者订阅);redhat内容不全
  7. EonerCMS——做一个仿桌面系统的CMS(十四)
  8. 测试中国地理常识(中文版)
  9. 数组、字符串、集合的相互转换
  10. DB9接口公头母头引脚区别
  11. msys2+mingw32环境搭建
  12. [Matlab-1]符号函数和数值函数
  13. java ajax教程_JAVA AJAX教程第一章—初识AJAX
  14. Android 中使用AlarmManager设置闹钟详解
  15. ios用xib实现三等分以及多等分思路
  16. html渐变生成,css gradient 在线渐变生成工具
  17. ASP.NET网站部署详细步骤
  18. 基于FFmpeg4.1的视频播放器的极简实现(音视频学习笔记四)
  19. PXE配置中ks.cfg文件介绍
  20. 详细解解读贴片电容:NP0、C0G、X7R、X5R、Y5V、Z5U的区别

热门文章

  1. 知行合一,持续输出,以不变应万变
  2. 数据解读 | FPX轻松夺冠,但英雄联盟还能有下一个10年吗?
  3. 分享112个HTML电子商务模板,总有一款适合您
  4. POI导出大数据工具类
  5. Duplicated jQuery selector
  6. 名詞解釋 : LTI / CTI / LNR / CNR
  7. 微星GP63 (006CN) 拆机加固态
  8. 真的假不了,假的跑不掉
  9. 3分钟掌握超有趣的2.5D AI插画方法,让你的设计更有逼格
  10. 国内外人工智能AI工具网站大全(一键收藏,应有尽有)