/* * Copyright (C) 2024 OpenAni and contributors. * * 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证. * Use of this source code is governed by the GNU AGPLv3 license, which can be found at the following link. * * https://github.com/open-ani/ani/blob/main/LICENSE */ plugins { id("org.jetbrains.compose") id("com.android.application") kotlin("android") kotlin("plugin.compose") id("org.jetbrains.kotlinx.atomicfu") id("kotlin-parcelize") idea } dependencies { implementation(projects.app.shared) implementation(projects.app.shared.application) implementation(libs.androidx.core.ktx) implementation(libs.androidx.appcompat) implementation(libs.androidx.material) implementation(libs.androidx.activity.compose) implementation(libs.androidx.browser) implementation(libs.androidx.compose.ui) implementation(libs.androidx.compose.ui.viewbinding) implementation(libs.androidx.compose.foundation) implementation(libs.androidx.compose.material3) implementation(libs.androidx.compose.ui.tooling.preview) debugImplementation(libs.androidx.compose.ui.tooling) // implementation(libs.log4j.core) // implementation(libs.log4j.slf4j.impl) implementation(libs.ktor.client.core) } val archs = buildList { val abis = getPropertyOrNull("ani.android.abis")?.trim() if (!abis.isNullOrEmpty()) { addAll(abis.split(",").map { it.trim() }) } else { add("arm64-v8a") add("armeabi-v7a") add("x86_64") } } android { namespace = "me.him188.ani.android" compileSdk = getIntProperty("android.compile.sdk") defaultConfig { applicationId = "me.him188.ani" minSdk = getIntProperty("android.min.sdk") targetSdk = getIntProperty("android.compile.sdk") versionCode = getIntProperty("android.version.code") versionName = project.version.toString() ndk { // Specifies the ABI configurations of your native // libraries Gradle should build and package with your app. abiFilters.clear() //noinspection ChromeOsAbiSupport abiFilters += archs } } splits { abi { isEnable = true reset() //noinspection ChromeOsAbiSupport include(*archs.toTypedArray()) isUniversalApk = true // 额外构建一个 } } signingConfigs { kotlin.runCatching { getProperty("signing_release_storeFileFromRoot") }.getOrNull()?.let { create("release") { storeFile = rootProject.file(it) storePassword = getProperty("signing_release_storePassword") keyAlias = getProperty("signing_release_keyAlias") keyPassword = getProperty("signing_release_keyPassword") } } kotlin.runCatching { getProperty("signing_release_storeFile") }.getOrNull()?.let { create("release") { storeFile = file(it) storePassword = getProperty("signing_release_storePassword") keyAlias = getProperty("signing_release_keyAlias") keyPassword = getProperty("signing_release_keyPassword") } } } packaging { resources { merges.add("META-INF/DEPENDENCIES") // log4j } } buildTypes { release { isMinifyEnabled = true signingConfig = signingConfigs.findByName("release") proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), *sharedAndroidProguardRules(), ) } debug { applicationIdSuffix = getLocalProperty("ani.android.debug.applicationIdSuffix") ?: ".debug2" isMinifyEnabled = false signingConfig = signingConfigs.getByName("debug") } } buildFeatures { compose = true buildConfig = true } } idea { module { excludeDirs.add(file(".cxx")) } }