Android Studio是采用Gradle来构建项目的,一个Android项目中包含两个build.gradle文件,如下图:
(1)最外层目录下build.gradle文件
最外层目录下的build.gradle文件代码如下:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.2.2'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
jcenter()
}
}
忽略不明白的语法,从字面上我们可以看出,关键有两部分的代码,repositories闭包和dependencies闭包。
1、repositories闭包
该闭包中声明了jcenter()的配置,其中jcenter是一个代码托管仓库,上面托管了很多Android开源项目,在这里配置了jcenter后我们可以在项目中方便引用jcenter上的开源项目。
2、dependencies闭包
该闭包使用classpath声明了一个Gradle插件,由于Gradle并不只是用来构建Android项目,因此此处引入相关插件来构建Android项目,其中'2.2.2'为该插件的版本号,可以根据最新的版本号来调整。
(2)模块目录下build.gradle文件
项目中app模块下的build.gradle文件中的内容如下:
apply plugin: 'com.android.application'
android {
compileSdkVersion 25
buildToolsVersion "25.0.2"
defaultConfig {
applicationId "com.wkui.douban.easysearch"
minSdkVersion 15
targetSdkVersion 25
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:25.2.0'
testCompile 'junit:junit:4.12'
}
从文件内容可以看出,主要分为三大部分:
1、apply plugin
文件中第一行使用apply plugin表示应用了一个插件,该插件一般有两种值可选:
一种为'com.android.application',表示该模块为应用程序模块,可以直接运行;另一种为'com.android.library',表示该模块为库模块,只能作为代码库依附于别的应用程序模块来运行。
2、android闭包
这个闭包主要为了配置项目构建的各种属性,compileSdkVersion用于指定项目的编译版本,25表示使用Android 7.1系统的SDK编译。buildToolsVersion用于指定项目构建工具的版本。android闭包中嵌套了defaultConfig闭包和buildTypes闭包:
1) defaultConfig闭包
对项目的更多细节进行配置,其中applicationId指定了项目的包名,我们可以通过修改这个值来修改项目的包名。
minSdkVersion指定项目最低兼容的版本,这里指定为15,表示最低兼容到Android 4.0系统。
targetSdkVersion指定的值表示在该目标版本上已经做过充分测试,系统会为该应用启动一些对应该目标系统的最新功能特性,Android系统平台的行为变更,只有targetSdkVersion的属性值被设置为大于或等于该系统平台的API版本时,才会生效。例如,若指定targetSdkVersion值为22,则表示该程序最高只在Android5.1版本上做过充分测试,在Android6.0系统上(对应targetSdkVersion为23)拥有的新特性如系统运行时权限等功能就不会被启用。
2) buildTypes闭包
这个闭包主要指定生成安装文件的主要配置,一般包含两个子闭包,一个是debug闭包,用于指定生成测试版安装文件的配置,可以忽略不写;另一个是release闭包,用于指定生成正式版安装文件的配置。
上面的代码中省去了debug闭包的内容,只写了release闭包。其中minifyEnabled表明是否对代码进行混淆,true表示对代码进行混淆。proguardFiles指定混淆的规则文件,这里指定了proguard-android.txt文件和proguard-rules.pro文件两个文件,proguard-android.txt文件为默认的混淆文件,里面定义了一些通用的混淆规则。proguard-rules.pro文件位于当前项目的根目录下,可以在该文件中定义一些项目特有的混淆规则。
3、dependencies闭包
该闭包定义了项目的依赖关系,一般项目都有三种依赖方式:本地依赖、库依赖和远程依赖。本地依赖可以对本地的jar包或目录添加依赖关系,库依赖可以对项目中的库模块添加依赖关系,远程依赖可以对jcener库上的开源项目添加依赖关系。
下面对该闭包中定义的语句进行解释。
第一行的compile fileTree是一个本地依赖声明,表示将libs目录下所有.jar后缀的文件都添加到项目的构建路径当中。
第二行的compile语句为 远程依赖声明,'com.android.support:appcompat-v7:25.2.0'为一个标准的远程依赖库格式,其中com.android.support为域名部分,用于区分不同公司的库;appcompat-v7为组件名称,用于区分同一个公司的不同库;25.2.0为版本号,用于区分同一个库的不同版本。加上这句声明后,Gradle在构建项目时会先检查一下本地是否已经缓存过该库,若没有缓存则自动联网下载,下载后自动添加到项目的构建路径中去。
testCompile语句为声明测试用例库的,暂时没有用到。这里没有用到库依赖声明,若有一个库模块名为helper,那么添加这个库依赖关系需要加入compile project(':helper')这句声明。
作者:sunnygarden
链接:http://www.jianshu.com/p/9c27dd7938b7
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
分享到:
相关推荐
用户名>\.gradle 目录下新建一个gradle.properties文件,并在里面添加一行:org.gradle.daemon=true 2、打开AS,在Settings中设置Gradle的工作模式为offline,如下图: 这样就可以解决一直在running的问题了 方法...
问题描述Gradle sync同步 失败,下面一直下载东西但是无网速,证明下载链接为外网,故应改用... //******************特别说明,重启Android Studio后依然不能同步Gradle成功的把连接注释换第二或第三个 //多试几次
android 6.0(api 23) SDK,不再提供org....2:打开build.gradle文件,在android节点下添加:useLibrary 'org.apache.http.legacy' 重新编辑即可。 Eclipse解决办法: 直接将org.apache.http.legacy.jar加到libs中。
博主第一次安装Android Studio 3.6版本的时候就找不到R.java文件,于是在网上找个各种方法,但是都没能解决问题。 注意:本博文是针对R.java找不到 但是不会出现红色报错标识的情况,如果出现红色报错的请不用看...
在用android studio(v3.6.1)运行项目时,出现以下提示(warning)信息: Deprecated Gradle features were used in this build, making it incompatible with Gradle 6.0 意思就是:在此版本中使用了不推荐使用的Gradle...
今天收到了Android Studio3.0更新推送,在升级过程中遇到几个问题,在这里把问题和解决方法记录下,方便要升级的童鞋。如果还有童鞋遇到不同的问题,也可以评论下我做下记录 1.gradle打包,自定义apk名称代码报错...
公司最近有个特别的需求,同一套代码,稍做修改(如包名不一样,图标不一样,应用名不一样等),编译出几个不同的应用。刚好用AS重构完项目,在网上查阅了一些资料,终于搞定!!在这记录一下。 AS主要是利用gradle...
在你项目的build.gradle文件中添加依赖 > compile 'com.ganxin.library:loaddatalayout:1.0.1' step 2: 在需要用到的布局中引入相关的Layout: 普通样式:LoadDataLayout 仿知乎样式:SwipeLoadDataLayout ...
预习依存关系在顶层build.gradle文件中添加jitpack依赖项maven { url 'https://jitpack.io' } 在应用程序级别build.gradle中添加BanglaTextView依赖项implementation 'com.github.noman404:BanglaTextView:1.0.6'...
前几天开发公司项目,有个地方要做一个分数的仪表盘,根据分数跑分,(设计的人估计是看到招商银行App的账号总览) 网上好像找不到类似的组件,那就只能自己开发啦。趁着空余时间,把组件进行了一些改进,并封装成...
用户单击按钮搜索位置详细信息后,网页应显示几个选项卡,分别包含信息/照片/地图/路线/评论。 2.技能集 :Java,Android Studio:Google Maps API,Google Serch附近API等。 3.代码关系 AndroidMenifest.xml ...
我 们都知道在Git 中想要过滤掉一些不想提交的文件,可以把相应的文件添加到.gitignore 中,而.gitignore 这个Android Studio 插件根据不同的语言来选择模板,就不用自己在费事添加一些文件了,而且还有自动补全功能...
1、什么是多渠道打包 在不同的应用市场可能有不同的统计需求,需要为每个应用市场发布一个安装包,这里就引出了Android的多渠道打包。在安装包中添加不同的标识,以此区分各个... 第二步:在build.gradle中添加,b
快速入门#### AndroidStudio build.gradle中添加: compile ' org.kymjs.kjframe:kjframe:2.6 ' #### eclipse复制jar包到你工程的/ libs目录中。 eclipes版本请查看使用帮助1,很遗憾,没有帮助文档,而是几篇博客
##Setup 除了 build.gradle 处理的内容之外,您还需要在 Android Studio 中安装两个 Kotlin 插件,“Kotlin”和“Kotlin Extensions for Android”。 我使用 Android Studio 1.2 作为单元测试支持。 ##Quick ...
将build.gradle配置为使用TensorFlow Lite的每晚构建。 如果您看到与Tensorflow Lite的Java API兼容性相关的构建错误(例如,Interpreter类型的方法X未定义),则可能是该API向后兼容的更改。 您将需要提取与夜间...
参考链接:https://developer.android.com/studio/build/index.html 本片文章的内容全部参考自上面的链接,其中有些内容是直接翻译的,有些内容是结合自己的经验总结的,可能有理解错误的地方,非常希望大家能指正...
使用 Android 定位服务 一个简单的应用程序,展示了 Google Play Services ... 要构建此项目,请使用gradlew build命令或将项目导入 Android Studio。 除非您在~/.gradle/gradle.properties为LocationSamplesMapsAPIKey
设置环境:为了构建此项目,您需要添加带有几个VK密钥的丢失文件。 使用以下数据在项目的根目录中创建“ build-config-fields.properties”文件 full_vk_app_id=6209567 full_gcm_sender_id="" full_vk_
Android BluetoothLeGatt示例此... 要构建此项目,请使用“ gradlew build”命令或在Android Studio中使用“导入项目”。支持Google+社区: : 堆栈溢出: : 如果您在此示例中发现错误,请提出问题: : 鼓励使用补丁,