熟悉 Android 打包编译的流程,超硬核
jcenter()}
dependencies 块配置 Gradle 需要使用的依赖项来构建项目。下面的代码行添加了 Gradle 的 Android 插件版本 3.3.2 作为类路径依赖项。
dependencies {classpath 'com.android.tools.build:gradle:3.3.2'}}
allprojects 块是配置项目中所有模块(如第三方插件或库)使用的存储库和依赖项的地方。但是,你应该在每个模块级别的构建中配置特定于模块的依赖项。gradle 文件。对于新项目,Android Studio 默认包含 JCenter 和谷歌的 Maven 存储库,但它不配置任何依赖项(除非您选择了一个需要的模板)
allprojects {repositories {google()jcenter()}}
对于包含多个模块的 Android 项目,在项目级别定义某些属性,并在所有模块间共享这些属性可能会非常有用。 为此,您可以将 额外属性添加到顶级 build.gradle 文件的 ext 代码块中。
buildscript {...}
allprojects {...}
// 这个块封装了自定义属性,使它们对项目中的所有模块都可用。ext {//下面只是可以定义的属性类型的几个示例。compileSdkVersion = 28// You can also create properties to specify versions for dependencies.// Having consistent versions between modules can avoid conflicts with behavior.supportLibVersion = "28.0.0"...}...
要从相同项目中的模块访问这些属性,请在模块的 build.gradle 文件(您可以在以下部分了解有关此文件的详细信息)中使用以下语法。
android {// 使用以下语法访问在项目级别定义的属性:// rootProject.ext.property_namecompileSdkVersion rootProject.ext.compileSdkVersion...}...dependencies {implementation "com.android.support:appcompat-v7:${rootProject.ext.supportLibVersion}"...}
module build.gradle 是模块级构建文件模块级 build.gradle 文件位于各 project/module/ 目录中,用于配置适用于其所在模块的构建设置。 你可以通过配置这些构建设置来提供自定义打包选项(例如附加构建类型和产品风格),以及替换 main/ 应用清单或顶级 build.gradle 文件中的设置。
此 Android 应用模块 build.gradle 文件示例概括您应了解的某些基本 DSL 元素和设置。
//构建配置中的第一行将 Gradle 的 Android 插件应用于此构建,并使 Android 块可用来指定特定于 Android 的构建选项。
apply plugin: 'com.android.application'
android 块是配置所有 android 特定构建选项的地方。android {
compileSdkVersion 指定了 Gradle 应该使用的 Android API 级别来编译你的应用程序。这意味着你的应用程序可以使用这个 API 级别或更低的 API 特性。
compileSdkVersion 28
buildToolsVersion 指定了用于构建应用程序的 SDK 构建工具、
命令行实用程序和编译器的版本。需要使用 SDK 管理器下载构建工具。此属性是可选的,因为插件默认使用构建工具的推荐版本。
buildToolsVersion "28.0.3"
defaultConfig 块封装了所有构建变体的默认设置和条目,并且可以从构建系统动态地覆盖 main/AndroidManifest.xml 中的一些属性。你可以配置产品口味来覆盖应用程序不同版本的这些值。
defaultConfig {
applicationId 惟一地标识要发布的包。但是,我们的源代码仍然应该引用主/AndroidManifest.xml 文件中的 package 属性定义的包名。applicationId 'com.example.myapp'
定义运行应用程序所需的最低 API 级别。minSdkVersion 15
指定用于测试应用程序的 API 级别。targetSdkVersion 28
定义应用程序的版本号。versionCode 1
为您的应用程序定义一个用户友好的版本名称。versionName "1.0"}
您可以在 buildTypes 块中配置多个构建类型。根据 efault,构建系统定义了两种构建类型:debug 和 release。调试构建类型在默认的构建配置中没有显式显示,但是它包含调试工具,并使用 debug 键进行签名。release 构建类型应用 Proguard 设置,默认情况下不签名。
buildTypes {
默认情况下,Android Studio 使用 minifyEnabled 配置 release build 类型来启用代码收缩,并指定 Proguard 设置文件。
release {minifyEnabled true // Enables code shrinking for the release build type.proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'}}
可以在 productflavor 块中配置多个产品口味。这允许您创建应用程序的不同版本,这些版本可以用自己的设置覆盖 defaultConfig 块。产品风味是可选的,默认情况下构建系统不会创建它们。这个例子创建了一个免费且付费的产品风格。然后,每种产品都指定了自己的应用程序 ID,这样它们就可以同时存在于谷歌 Play Store 或 Android 设备上。如果您声明产品的风味,您还必须声明风味维度,并将每种风味分配给风味维度。
flavorDimensions "tier"productFlavors {free {dimension "tier"applicationId 'com.example.myapp.free'}
paid {dimension "tier"applicationId 'com.example.myapp.paid'}}
在 split 块中,您可以配置不同的 APK 构建,每个构建只包含支持屏幕密度或的代码和资源 versionCode 不同。
splits {根据屏幕密度设置构建多个 apk。density {
启用或禁用构建多个 apkexclude "ldpi", "tvdpi", "xxxhdpi", "400dpi", "560dpi"}}}
模块级构建配置文件中的 dependencies 块指定仅构建模块本身所需的依赖项。要了解更多信息,请添加构建依赖项。
dependencies {implementation project(":lib")
评论