欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 运维知识 > Android >内容正文

Android

Android Studio的Gradle常用命令配置和依赖管理

发布时间:2025/3/20 Android 53 豆豆
生活随笔 收集整理的这篇文章主要介绍了 Android Studio的Gradle常用命令配置和依赖管理 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

一,gradlew常用命令

./gradlew -v 版本号 ./gradlew clean 清除工程目录下的build文件夹 ./gradlew build 检查依赖并编译打包 这里注意的是 ./gradlew build 命令把debug、release环境的包都打出来,如果正式发布只需要打Release的包,该怎么办呢,下面介绍一个很有用的命令 assemble, 如

./gradlew assembleDebug 编译并打Debug包 ./gradlew assembleRelease 编译并打Release的包除此之外,assemble还可以和productFlavors结合使用,比如定义了 installRelease ,uninstallRelease 两个productFlavors,则可以如下命令:

./gradlew installRelease Release模式打包并安装 ./gradlew uninstallRelease 卸载Release模式包 二,Gradle配置

Gradle构建脚本 build.gradle:
Gradle属性文件 gradle.properties
Gradle设置文件 settings.gradle

build.gradle

先看整个项目的gradle配置文件:

buildscript {repositories {jcenter()}dependencies {classpath 'com.android.tools.build:gradle:1.3.0'// NOTE: Do not place your application dependencies here; they belong// in the individual module build.gradle files} }allprojects {repositories {jcenter()} } 内容主要包含了两个方面:

一个是声明仓库的源,这里可以看到是指明的jcenter(), 之前版本则是mavenCentral(), jcenter可以理解成是一个新的中央远程仓库,兼容maven中心仓库,而且性能更优。
另一个是声明了Android gradle plugin的版本,android studio 1.0正式版必须要求支持gradle plugin 1.0的版本
某个Moudle的gradle配置文件:

buildscript

buildscript {repositories {maven { url 'http://*********' }}dependencies {classpath 'com.android.tools.build:gradle:1.3.1'} } 1,buildscript{}设置脚本的运行环境。
2,repositories{}支持java依赖库管理,用于项目依赖。
3,dependencies{}依赖包的定义。支持maven/ivy,远程,本地库,也支持单文件。如果前面定义了repositories{}maven 库,则使用maven的依赖库,使用时只需要按照用类似于com.android.tools.build:gradle:0.4,gradle 就会自动的往远程库下载相应的依赖。

apply

//声明是Android程序 apply plugin: 'com.android.application'apply plugin:声明构建的项目类型。如果是库的话就加
apply plugin: 'com.android.library' android
android {// 编译SDK的版本compileSdkVersion 22// build tools的版本buildToolsVersion "23.0.1"//aapt配置aaptOptions {//不用压缩的文件noCompress 'pak', 'dat', 'bin', 'notice'//打包时候要忽略的文件ignoreAssetsPattern "!.svn:!.git"//分包multiDexEnabled true//--extra-packages是为资源文件设置别名:意思是通过该应用包名+R,com.android.test1.R和com.android.test2.R都可以访问到资源additionalParameters '--extra-packages', 'com.android.test1','--extra-packages','com.android.test2'}//默认配置defaultConfig {//应用的包名applicationId "com.example.heqiang.androiddemo"minSdkVersion 21targetSdkVersion 22versionCode 1versionName "1.0"}//编译配置compileOptions {// java版本sourceCompatibility JavaVersion.VERSION_1_7targetCompatibility JavaVersion.VERSION_1_7}//源文件目录设置sourceSets {main {//jni lib的位置jniLibs.srcDirs = jniLibs.srcDirs << 'src/jniLibs'//定义多个资源文件夹,这种情况下,两个资源文件夹具有相同优先级,即如果一个资源在两个文件夹都声明了,合并会报错。res.srcDirs = ['src/main/res', 'src/main/res2']//指定多个源文件目录java.srcDirs = ['src/main/java', 'src/main/aidl']}}//签名配置signingConfigs {debug {keyAlias 'androiddebugkey'keyPassword 'android'storeFile file('keystore/debug.keystore')storePassword 'android'}}buildTypes {//release版本配置release {debuggable false// 是否进行混淆minifyEnabled true//去除没有用到的资源文件,要求minifyEnabled为true才生效shrinkResources true// 混淆文件的位置proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'signingConfig signingConfigs.debug//ndk的一些相关配置,也可以放到defaultConfig里面。//指定要ndk需要兼容的架构(这样其他依赖包里mips,x86,arm-v8之类的so会被过滤掉)ndk {abiFilter "armeabi"}}//debug版本配置debug {debuggable true// 是否进行混淆minifyEnabled false//去除没有用到的资源文件,要求minifyEnabled为true才生效shrinkResources true// 混淆文件的位置proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'signingConfig signingConfigs.debug//ndk的一些相关配置,也可以放到defaultConfig里面。//指定要ndk需要兼容的架构(这样其他依赖包里mips,x86,arm-v8之类的so会被过滤掉)ndk {abiFilter "armeabi"}}}// lint配置 lintOptions {//移除lint检查的errorabortOnError false//禁止掉某些lint检查disable 'NewApi'} } android{}设置编译android项目的参数,构建android项目的所有配置都写在这里。
除了上面写的,在android{}块中可以包含以下直接配置项:

      productFlavors{ } 产品风格配置,ProductFlavor类型
      testOptions{ } 测试配置,TestOptions类型
      dexOptions{ } dex配置,DexOptions类型
      packagingOptions{ } PackagingOptions类型
      jacoco{ } JacocoExtension类型。 用于设定 jacoco版本
      splits{ } Splits类型。
repositories

repositories {flatDir {//本地jar依赖包路径dirs '../../../../main/libs'} } dependencies
dependencies {compile files('libs/android-support-v4.jar')//在flatDir.dirs下面找依赖的aarcompile (name:'ui', ext:'aar')// 编译extras目录下的ShimmerAndroid模块// 使用transitive属性设置为false来排除所有的传递依赖,默认为truecompile project(':extras:ShimmerAndroid'){transitive = false}// 编译CommonSDK模块,但是去掉此模块中对com.android.support的依赖,防止重复依赖报错compile (project(':CommonSDK')) { exclude group: "com.android.support" }provided fileTree(dir: 'src/android5/libs', include: ['*.jar'])provided 'com.android.support:support-v4:21.0.3'provided project(':main-host')//通用使用exclude排除support-compat模块的依赖compile ('com.jakewharton:butterknife:8.5.1'){exclude module: 'support-compat'} } compile和provided:
compile表示编译时提供并打包进apk。
provided表示只在编译时提供,不打包进apk。
exclude 防止重复依赖,后面会重点介绍
transitive 排除所有的传递依赖,后面会重点介绍include


三,依赖库管理

本地依赖

dependencies {//单文件依赖compile files('libs/android-support-v4.jar')//某个文件夹下面全部依赖compile fileTree(dir: 'src/android6/libs', include: ['*.jar'])compile (name:'ui', ext:'aar')compile (project(':CommonSDK')) { exclude group: "com.android.support" }provided fileTree(dir: 'src/android5/libs', include: ['*.jar'])provided 'com.android.support:support-v4:21.0.3'provided project(':main-host') } 远程依赖

gradle同时支持maven,ivy,以maven作为例子

repositories { //从中央库里面获取依赖mavenCentral() //或者使用指定的本地maven 库maven{ url "file://F:/githubrepo/releases" }//或者使用指定的远程maven库maven{ url "https://github.com/youxiachai/youxiachai-mvn-repo/raw/master/releases" } } dependencies { //应用格式: packageName:artifactId:version compile 'com.google.android:support-v4:r13' }

总结

以上是生活随笔为你收集整理的Android Studio的Gradle常用命令配置和依赖管理的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。