我正在尝试学习gradle构建系统,因为它似乎是高度可配置的,并且在Android Studio中使用。我想要始终确保我理解我正在阅读的内容,但这似乎并不匹配。
user guide for the new build system表示最简单的Android项目具有以下build.gradle。
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.11.1'
}
}
apply plugin: 'android'
android {
compileSdkVersion 19
buildToolsVersion "19.0.0"
}
当我在Android Studio中创建一个新项目时,我得到了更多的内容:
apply plugin: 'com.android.application'
android {
compileSdkVersion 20
buildToolsVersion "20.0.0"
defaultConfig {
applicationId "com.example.eghdk.project"
minSdkVersion 15
targetSdkVersion 20
versionCode 1
versionName "1.0"
}
buildTypes {
release {
runProguard false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
}
现在我意识到事情正在以极快的速度移动gradle,android的gradle插件,构建工具和Android Studio,文档在某些方面会过时。我只是想确保apply plugin: 'android'
现在已经过时了,为什么dependencies{...}
根本没有提到构建工具。只是试图将我的头围绕在gradle周围,并希望找到一些帮助找到"最简单的Android项目有以下build.gradle"。
答案 0 :(得分:1)
我只想确保
apply plugin: 'android'
现已过时
是。该插件现在称为com.android.application
用于应用程序,com.android.library
用于库。
实际上它确实如此。您发布的第二个build.gradle是Android Studio将为应用程序(或" app")模块生成的内容。如果您转到项目的根目录,则会在您的所有项目模块中使用另一个build.gradle。您可以在此处找到[...]以及为什么依赖关系并没有提到构建工具
repositories {}
块和依赖项块classpath 'com.android.tools.build:gradle:X.Y.Z'
。
至于为什么生成的文件要长得多 - 您正在使用"最简单的" build.gradle真正显示出最低限度。您不需要 来执行生成的build.gradle中提供的许多内容,例如配置构建类型。但是,Android Studio模板旨在提供基本的Gradle构建脚本,该脚本为大多数Android开发人员希望在其构建脚本中更新的许多内容提供理智的默认值。
您不需要全部使用它(并且您可以删除您不想要的部分),但它的存在是为开发人员提供了解决问题的基础。
我建议忽略"最简单的build.gradle"文档(并且不要去寻找另一个)。相反,开始查看一些示例Gradle构建脚本,并开始尝试了解它们的工作方式以及它们的工作方式。专注于你不理解的单个剧本的小部分;如果你发现整个剧本压倒一切,不要试图立刻接受整个事情。
答案 1 :(得分:0)
Android Studio为多模块gradle项目生成一个结构(只有一个模块)。上层目录中有主 build.gradle
和settings.gradle
。
可以在 main build.gradle
文件中找到buildscript定义。
apply plugin: 'android'
已被删除,由apply plugin: 'com.android.application'
buildTypes默认配置为proguard(混淆器)非默认配置。 (这是可选的)
dependencies部分表示你可以将任何jar文件放在libs目录中(就像你用eclipse做的那样)。如果libs目录中没有任何jar:你也可以安全地删除这个部分。
如果您未指定:minSdkVersion为1