title: Android 开发学习第二天
search: 2024-03-10
tags:
- “#Android开发”
使用 Kotlin 和 Groovy 构建配置的一些细微差别
Kotlin引入依赖格式
文章目录
dependencies {
implementation("androidx.core:core-ktx:1.10.1")
implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.6.1")
implementation("androidx.activity:activity-compose:1.7.0")
implementation(platform("androidx.compose:compose-bom:2023.08.00"))
implementation("androidx.compose.ui:ui")
implementation("androidx.compose.ui:ui-graphics")
implementation("androidx.compose.ui:ui-tooling-preview")
implementation("androidx.compose.material3:material3")
testImplementation("junit:junit:4.13.2")
androidTestImplementation("androidx.test.ext:junit:1.1.5")
androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1")
androidTestImplementation(platform("androidx.compose:compose-bom:2023.08.00"))
androidTestImplementation("androidx.compose.ui:ui-test-junit4")
debugImplementation("androidx.compose.ui:ui-tooling")
debugImplementation("androidx.compose.ui:ui-test-manifest")
}
可以看到,这里面有几种引用配置
implementation
testImplementation
androidTestImplementation
debugImplementation
几个分别用来指定依赖库在不同构建配置下的引用范围,能够实现更加精细化的依赖粒度操控
-
implementation: 这是主要的依赖配置,表示该依赖在应用的主要代码中可用。这包括应用的正式发布版本和所有构建类型(release 和 debug)。
-
testImplementation: 这是用于测试代码的依赖配置,表示该依赖仅在执行测试时可用。这些依赖通常包含测试框架和工具。
-
androidTestImplementation: 这是用于Android测试的依赖配置,表示该依赖仅在执行Android设备上的仪器化测试时可用。
-
debugImplementation: 这是特定于调试构建类型的依赖配置,表示该依赖仅在调试版本的应用中可用。这通常用于引入调试工具和辅助库。
用得好其实就是避免不用的依赖在编译的时候被引用,从而提高效率。
Kotlin 的引入格式
还要注意,Kotlin
的引用依赖标准格式如下
implementation("XXXXXXXXXXXXXXXXXXXXXXX")
以及有时候你可以看到有 platform
的前缀,很简单,这个就是引用了一个 BOM
(Bill of Materials
)或者说是引入了一个平台,不是单独引入一个依赖,而是一系列依赖,这样更加方便进行一个整体依赖的引入,从而减少潜在的兼容性和版本冲突问题。
implementation(platform("androidx.compose:compose-bom:2023.08.00"))
Android批量导入Jar
implementation fileTree(dir: 'libs', include: ['*.jar'])
fileTree(dir: 'libs', include: ['*.jar'])
: 这一行代码使用 fileTree
函数,该函数创建一个代表文件树的对象。在这里,它指定了一个目录 'libs'
,并包含了该目录下所有后缀为 '.jar'
的 JAR 文件。这表示将该目录下所有的 JAR 文件作为依赖项添加到项目中。
这种方式对于添加目录中的多个 JAR 文件很方便,因为它避免了手动列举每个 JAR 文件的繁琐工作。通常情况下,你可以将第三方库的 JAR 文件放置在项目的 libs
目录下,然后使用这种方式添加它们作为项目的依赖项。
implementation 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
一般来说是单引号的,同时没有括号
但是和括号是可选的,如果方法没有参数,可以省略括号
一般来讲,上下两种方法等价
Android图片加速工具
implementation ('androidx.core:core-ktx:1.9.0')
在我阅读到的项目发现了一个很神奇的配置,我以为是什么新奇的东西,后面自己去研究了一下,这个是专门为了来解决 Android
远程拿去图片,让任何形式的图片列表的滚动尽可能变得更加平滑,更快。
中文官方文档位于 https://muyangmin.github.io/glide-docs-cn/
annotationProcessor 'com.github.bumptech.glide:compiler:4.13.2'
一些神奇的 Android
配置
签名配置
signingConfigs {
release {
storeFile rootProject.file("signingkey.jks")
storePassword System.getenv("KEY_STORE_PASSWORD")
keyAlias System.getenv("ALIAS")
keyPassword System.getenv("KEY_PASSWORD")
}
}
配置应用程序的签名信息,应用与 release 版本的应用程序需要配置签名
storeFile rootProject.file("signingkey.jks")
这个是指定签名密钥存储文件的路径,这个指的是根目录下的 signingkey.jks
文件,这个文件通常包含应用程序签名所需的密钥和证书。
storePassword System.getenv("KEY_STORE_PASSWORD")
: 这里使用了环境变量中存储的密钥库密码。密钥库密码用于访问存储在密钥库中的密钥和证书。
keyAlias System.getenv("ALIAS")
: 这一行使用环境变量中存储的密钥别名。密钥别名是密钥库中标识特定密钥的名称。
keyPassword System.getenv("KEY_PASSWORD")
: 这里使用了环境变量中存储的密钥密码。密钥密码用于访问特定密钥。
Lint 静态代码分析
android {
lint {
baseline = file("lint-baseline.xml")
}
}
lintOptions {
checkReleaseBuilds false
abortOnError false
}
这个代码块指定了 Lint 工具的配置,具体来说:
-
baseline = file("lint-baseline.xml")
: 这一行设置了 Lint 的基准文件,用于记录已知的问题,以免在每次运行 Lint 时都报告这些已知问题。这通常是一个 XML 文件,其中包含以前的 Lint 分析结果。 -
checkReleaseBuilds false
: 这一行禁用了在 release 构建中运行 Lint 检查。通常,在 release 构建时可能会关闭某些 Lint 检查,以便在发布应用程序之前不受到这些检查的干扰。 -
abortOnError false
: 这一行禁用了在发现 Lint 错误时终止构建过程。如果设置为 true,Lint 错误将导致构建过中止,而设置为 false 将允许构建过程继续进行,即使有 Lint 错误存在。
Android资源路径重定义
sourceSets {
main {
res.srcDirs =
[
'src/main/res/layout/page',
'src/main/res/layout/item',
'src/main/res/layout',
'src/main/res'
]
}
}
这个定义的好处
-
sourceSets
: 这是 Gradle 配置块,用于定义项目的源集。 -
main
: 这是默认的主要源集,其中包含主要的源代码和资源文件。 -
res.srcDirs
: 这一行指定了res
目录的路径。在 Android 项目中,res
目录通常包含了资源文件,如布局文件、图像和其他与用户界面相关的资源。在这里,指定了一组目录的路径,这些目录将被视为res
目录,其中包括了页面布局 (src/main/res/layout/page
)、条目布局 (src/main/res/layout/item
)、一般布局 (src/main/res/layout
) 和通常的res
目录 (src/main/res
)。
通过这样的配置,可以将不同类型的资源文件组织到不同的子目录中,以便更好地管理项目的结构。这在大型项目中很有用,因为它允许你将相关的资源文件放在一起,提高了项目的可维护性。
##Kotlin返回非空字符串
fun releaseTime(): String? { // 函数体 }
fun
: 这个关键字表示你正在定义一个函数。releaseTime()
: 这是函数的名称,即 “releaseTime”。(): String?
: 这部分表示函数没有参数(空括号),并且返回一个可空的 String 类型。String?
表示这个函数可以返回一个字符串,也可以返回 null。- 如果变成这个模样就是
fun releaseTime(): String { // 函数体 }
就表明返回的是一个 非空的字符串。
fun doSomething() {
// 函数体
}
这个是没有返回值的函数,类似于 void
在 Kotlin
中可以省略 : Unit
部分,在默认情况下函数没有明确返回类型的时候,它被认为是返回 Unit
.