yayacal/core/build.gradle.kts
xfy cec8debff0 feat(date-recorder): 详情页图片灯箱,支持缩放/旋转手势
点击详情页大图弹出全屏深色遮罩,集成 panpf/zoomimage 的
SketchZoomAsyncImage,支持双指缩放、平移、捻合旋转(松手吸附
0/90/180/270°)与双击复位,点空白或返回键关闭。

新增 zoomimage-compose-sketch4 1.6.0 依赖(与项目 sketch 同作者,
SketchZoomAsyncImage 是 AsyncImage 超集,额外提供缩放/旋转/大图分片)。
2026-07-22 14:26:27 +08:00

115 lines
3.7 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import org.jetbrains.kotlin.gradle.dsl.JvmTarget
plugins {
alias(libs.plugins.androidLibrary)
alias(libs.plugins.composeCompiler)
alias(libs.plugins.ksp)
alias(libs.plugins.room)
}
room {
schemaDirectory("$projectDir/schemas")
}
android {
namespace = "plus.rua.project.shared"
compileSdk = libs.versions.android.compileSdk.get().toInt()
defaultConfig {
minSdk = libs.versions.android.minSdk.get().toInt()
consumerProguardFiles("proguard-rules.pro")
// 构建期扫描 assets/animations/ 生成 WebP 文件列表,避免运行期硬编码 (1..152)
// 与 assets/ 目录耦合却不校验,导致增删文件后隐性 bug
val webpFiles = layout.projectDirectory
.dir("src/main/assets/animations")
.asFile
.listFiles { f -> f.extension.equals("webp", ignoreCase = true) }
?.map { it.name }
?.sorted()
?: emptyList()
require(webpFiles.isNotEmpty()) { "assets/animations/ 不应为空,请检查目录" }
// 拼成 Java 数组字面量: new String[]{"001.webp","002.webp",...}
val quoted = webpFiles.joinToString(",") { name -> "\"$name\"" }
val arrayLiteral = "new String[]{$quoted}"
buildConfigField("String[]", "WEBP_FILES", arrayLiteral)
}
buildTypes {
debug {
buildConfigField("boolean", "ENABLE_TRACE", "true")
}
release {
isMinifyEnabled = false
buildConfigField("boolean", "ENABLE_TRACE", "false")
}
create("trace") {
initWith(buildTypes.getByName("release"))
buildConfigField("boolean", "ENABLE_TRACE", "true")
}
}
buildFeatures {
compose = true
buildConfig = true
}
compileOptions {
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
}
packaging {
resources {
excludes += listOf(
"/META-INF/{AL2.0,LGPL2.1}",
"/META-INF/LICENSE*",
"/META-INF/NOTICE*",
"META-INF/DEPENDENCIES",
"**/*.kotlin_metadata",
"**/*.kotlin_module",
)
}
}
}
dependencies {
implementation(platform(libs.compose.bom))
implementation(libs.androidx.activity.compose)
implementation(libs.androidx.lifecycle.viewmodelCompose)
implementation(libs.androidx.lifecycle.runtimeCompose)
implementation(libs.compose.runtime)
implementation(libs.compose.foundation)
implementation(libs.compose.animation)
implementation(libs.compose.material.icons)
implementation(libs.compose.material3)
implementation(libs.compose.ui)
implementation(libs.kotlinx.datetime)
implementation(libs.tyme4kt)
implementation(libs.sketch.compose)
implementation(libs.sketch.animated.webp)
implementation(libs.androidx.profileinstaller)
implementation(libs.androidx.media3.exoplayer)
implementation(libs.androidx.media3.ui)
// 日期记录器Room 持久化 + CameraX 相机
implementation(libs.room.runtime)
implementation(libs.room.ktx)
ksp(libs.room.compiler)
implementation(libs.camera.core)
implementation(libs.camera.camera2)
implementation(libs.camera.lifecycle)
implementation(libs.camera.view)
implementation(libs.androidx.exifinterface)
// 日期记录器:详情页灯箱图片缩放/旋转(与 sketch 同作者 panpfSketchZoomAsyncImage 是 AsyncImage 超集)
implementation(libs.zoomimage.compose.sketch4)
testImplementation("org.jetbrains.kotlin:kotlin-test-junit:${libs.versions.kotlin.get()}")
testImplementation(libs.kotlinx.coroutines.test)
testImplementation(libs.room.testing)
}