258 lines
9.7 KiB
Plaintext
258 lines
9.7 KiB
Plaintext
import java.text.SimpleDateFormat
|
|
import java.util.Date
|
|
|
|
plugins {
|
|
id ("com.android.application")
|
|
id ("kotlin-android")
|
|
id ("io.realm.kotlin")
|
|
id ("kotlin-kapt")
|
|
}
|
|
|
|
android {
|
|
namespace = "bums.lunatic.launcher"
|
|
compileSdk = 35
|
|
|
|
defaultConfig {
|
|
applicationId = "bums.lunatic.launcher"
|
|
minSdk = 26
|
|
versionCode = 38
|
|
versionName = "2.8.2"
|
|
multiDexEnabled = true
|
|
ndk {
|
|
abiFilters += listOf("arm64-v8a") // 필요한 ABI만 빌드하도록 필터링
|
|
}
|
|
externalNativeBuild {
|
|
cmake {
|
|
cppFlags += "-std=c++17"
|
|
arguments += "-DANDROID_STL=c++_shared"
|
|
}
|
|
}
|
|
// 이 부분을 추가하여 prefab 기능을 활성화합니다.
|
|
buildFeatures {
|
|
prefab = true
|
|
}
|
|
}
|
|
|
|
|
|
buildTypes {
|
|
getByName("debug") {
|
|
isMinifyEnabled = false
|
|
isShrinkResources = false
|
|
isDebuggable = true
|
|
// applicationIdSuffix = ".debug"
|
|
// versionNameSuffix = "-debug"
|
|
buildConfigField("Long","BuildDateTime", "${getDateTime()}L")
|
|
resValue ("string", "app_name", "Bums Launcher Debug")
|
|
}
|
|
|
|
getByName("release") {
|
|
isMinifyEnabled = true
|
|
isShrinkResources = true
|
|
buildConfigField("Long","BuildDateTime", "${getDateTime()}L")
|
|
proguardFiles (getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")
|
|
resValue ("string", "app_name", "Bums Launcher")
|
|
}
|
|
}
|
|
externalNativeBuild {
|
|
cmake {
|
|
path = file("src/main/cpp/CMakeLists.txt")
|
|
version = "3.22.1"
|
|
}
|
|
}
|
|
signingConfigs {
|
|
|
|
getByName("debug") {
|
|
storeFile = file("./bs_debug.keystore")
|
|
storePassword = "android"
|
|
keyAlias = "androiddebugkey"
|
|
keyPassword = "android"
|
|
}
|
|
}
|
|
|
|
android {
|
|
sourceSets["main"].jniLibs.srcDirs("src/main/jniLibs")
|
|
|
|
}
|
|
|
|
applicationVariants.all {
|
|
if (buildType.name == "release") {
|
|
outputs.all {
|
|
val output = this as? com.android.build.gradle.internal.api.BaseVariantOutputImpl
|
|
if (output?.outputFileName?.endsWith(".apk") == true) {
|
|
output.outputFileName = "${defaultConfig.applicationId}_v${defaultConfig.versionName}.apk"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
buildFeatures {
|
|
viewBinding = true
|
|
dataBinding = true
|
|
buildConfig = true
|
|
resValues = true
|
|
}
|
|
|
|
compileOptions {
|
|
sourceCompatibility = JavaVersion.VERSION_1_8
|
|
targetCompatibility = JavaVersion.VERSION_1_8
|
|
}
|
|
|
|
packagingOptions.resources.excludes.add("META-INF/*")
|
|
packagingOptions.resources.excludes.add("mozilla/*")
|
|
packagingOptions.resources.excludes.add("META-INF/*/*")
|
|
packagingOptions {
|
|
jniLibs {
|
|
useLegacyPackaging = true
|
|
}
|
|
}
|
|
|
|
kotlinOptions {
|
|
jvmTarget = "1.8"
|
|
}
|
|
ndkVersion = "29.0.13846066 rc3"
|
|
// buildToolsVersion = "35.0.1"
|
|
packaging {
|
|
doNotStrip("**/libaria2c.zip.so")
|
|
doNotStrip("**/libffmpeg.zip.so")
|
|
doNotStrip("**/libpython.zip.so")
|
|
jniLibs {
|
|
pickFirsts.add("lib/**/libc++_shared.so")
|
|
pickFirsts.add("lib/**/libavcodec.so")
|
|
pickFirsts.add("lib/**/libavfilter.so")
|
|
pickFirsts.add("lib/**/libavformat.so")
|
|
pickFirsts.add("lib/**/libavutil.so")
|
|
pickFirsts.add("lib/**/libswresample.so")
|
|
pickFirsts.add("lib/**/libswscale.so")
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
|
|
dependencies {
|
|
|
|
implementation(fileTree(mapOf(
|
|
"dir" to "libs",
|
|
"include" to listOf("*.aar", "*.jar"),
|
|
)))
|
|
implementation(project(":gdrive"))
|
|
implementation("com.google.android.gms:play-services-wearable:19.0.0")
|
|
val kotlinVersion: String? by extra
|
|
val realmVersion = "2.0.0"
|
|
implementation ("androidx.appcompat:appcompat:1.7.1")
|
|
implementation ("androidx.biometric:biometric-ktx:1.2.0-alpha05")
|
|
implementation ("androidx.browser:browser:1.8.0")
|
|
implementation ("androidx.core:core-ktx:1.15.0")
|
|
implementation ("androidx.core:core-splashscreen:1.0.1")
|
|
implementation ("androidx.lifecycle:lifecycle-runtime-ktx:2.8.7")
|
|
implementation ("com.google.android.material:material:1.12.0")
|
|
implementation ("com.ibm.icu:icu4j:77.1")
|
|
implementation (kotlin("stdlib", version = "2.0.10"))
|
|
implementation ("com.github.cachapa:ExpandableLayout:2.9.2")
|
|
|
|
implementation ("androidx.work:work-runtime:2.10.0")
|
|
implementation ("com.google.code.gson:gson:2.13.1")
|
|
implementation ("io.realm.kotlin:library-base:${realmVersion}")
|
|
implementation ("org.jsoup:jsoup:1.21.2")
|
|
implementation ("org.apache.commons:commons-text:1.14.0")
|
|
implementation("com.squareup.okhttp:okhttp:2.7.5")
|
|
implementation("com.google.android.gms:play-services-location:21.3.0")
|
|
implementation("com.google.android.gms:play-services-tasks:18.3.2")
|
|
implementation("com.squareup.retrofit2:retrofit:3.0.0")
|
|
implementation("com.squareup.retrofit2:converter-gson:3.0.0")
|
|
implementation("com.squareup.retrofit2:converter-scalars:3.0.0")
|
|
implementation("androidx.viewpager2:viewpager2:1.1.0")
|
|
implementation("com.squareup.picasso:picasso:2.71828")
|
|
implementation("com.github.delight-im:Android-AdvancedWebView:v3.2.1")
|
|
// implementation(project(":library"))
|
|
// implementation(project(":utils"))
|
|
implementation( "com.github.bumptech.glide:glide:4.11.0")
|
|
implementation ("com.github.bumptech.glide:okhttp3-integration:4.11.0")
|
|
implementation ("com.github.chrisbanes:PhotoView:2.3.0")
|
|
implementation ("androidx.exifinterface:exifinterface:1.3.6")
|
|
|
|
// https://mvnrepository.com/artifact/org.mozilla.geckoview/geckoview
|
|
implementation("org.mozilla.geckoview:geckoview:139.0.20250523173407")
|
|
implementation("com.vladsch.flexmark:flexmark-all:0.64.8")
|
|
// implementation 'com.vladsch.flexmark:flexmark-all:0.64.8'
|
|
// implementation("org.opencv:opencv-android:4.11.0")
|
|
// build.gradle에 추가
|
|
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3")
|
|
// implementation ("com.github.aeonSolutions:FloatingActionButtonMenuDrag:1.1")
|
|
implementation("io.github.junkfood02.youtubedl-android:library:0.17.4")
|
|
implementation("io.github.junkfood02.youtubedl-android:ffmpeg:0.17.4")
|
|
implementation("io.github.junkfood02.youtubedl-android:aria2c:0.17.4")
|
|
implementation("io.coil-kt:coil:2.5.0")
|
|
implementation("io.coil-kt:coil-gif:2.5.0")
|
|
implementation ("com.squareup.okhttp3:logging-interceptor:4.11.0")
|
|
|
|
implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.8.3")
|
|
|
|
// Fragment KTX: Fragment에서 by viewModels() 델리게이트를 사용하기 위해 필수
|
|
implementation("androidx.fragment:fragment-ktx:1.8.1")
|
|
|
|
// Lifecycle KTX: viewLifecycleOwner.lifecycleScope 등을 사용하기 위해 필요
|
|
implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.8.3")
|
|
|
|
|
|
|
|
// implementation ("com.arthenica:ffmpeg-kit-full:4.5.LTS")
|
|
// implementation ("com.arthenica:ffmpeg-kit-full:6.0-2")
|
|
|
|
// implementation(files("libs/ffmpeg-kit-full-6.0-2.LTS.aar"))
|
|
// implementation("com.arthenica:ffmpeg-kit-full-gpl:5.1")
|
|
|
|
|
|
implementation ("androidx.media:media:1.7.0")
|
|
// implementation(project(":sdk"))
|
|
// implementation ("me.everything:providers-android:1.0.1")
|
|
// implementation ("me.everything:providers-core:1.0.1")
|
|
// implementation ("androidx.window:window:1.0.0")
|
|
// implementation("io.github.vaneproject:hanguleditor:1.0.0")
|
|
|
|
|
|
// implementation ("androidx.concurrent:concurrent-listenablefuture-ktx:1.1.0")
|
|
implementation ("com.google.guava:guava:33.2.1-jre")
|
|
val camerax_version = "1.3.0" // 안정적인 최신 버전 사용
|
|
|
|
// CameraX 코어 라이브러리
|
|
implementation("androidx.camera:camera-core:$camerax_version")
|
|
implementation("androidx.camera:camera-camera2:$camerax_version")
|
|
|
|
// CameraX Lifecycle 라이브러리 (Fragment/Activity 생명주기 연결)
|
|
implementation("androidx.camera:camera-lifecycle:$camerax_version")
|
|
|
|
// CameraX View 라이브러리 (PreviewView 등 UI 구성 요소)
|
|
implementation("androidx.camera:camera-view:$camerax_version")
|
|
|
|
// (선택) CameraX 비디오 라이브러리
|
|
implementation("androidx.camera:camera-video:$camerax_version")
|
|
|
|
// (선택) CameraX 확장 라이브러리 (보케, HDR 등)
|
|
implementation("androidx.camera:camera-extensions:$camerax_version")
|
|
|
|
implementation("com.google.mlkit:translate:17.0.3") // 버전 살짝 업그레이드 권장
|
|
implementation("com.google.mlkit:language-id:17.0.5")
|
|
implementation("com.google.android.gms:play-services-base:18.5.0")
|
|
implementation("com.google.mlkit:common:18.11.0")
|
|
|
|
constraints {
|
|
// ⚠️ 이 버전을 프로젝트 루트의 build.gradle.kts에 정의된 kotlinVersion 값과 정확히 일치시키세요.
|
|
val targetKotlinVersion = "2.0.20"
|
|
|
|
implementation("org.jetbrains.kotlin:kotlin-stdlib") {
|
|
version { strictly(targetKotlinVersion) }
|
|
// reason = "Align all Kotlin stdlib versions with the compiler plugin version"
|
|
}
|
|
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8") {
|
|
version { strictly(targetKotlinVersion) }
|
|
// reason = "Align all Kotlin stdlib versions with the compiler plugin version"
|
|
}
|
|
implementation("org.jetbrains.kotlin:kotlin-stdlib-common") {
|
|
version { strictly(targetKotlinVersion) }
|
|
// reason = "Align all Kotlin stdlib versions with the compiler plugin version"
|
|
}
|
|
}
|
|
}
|
|
fun getDateTime() = SimpleDateFormat("yyyyMMddHHmm").format(Date()).toLong()
|