plugins { id 'com.android.application' id 'org.jetbrains.kotlin.plugin.compose' } android { namespace 'org.kenjinx.android' compileSdk 36 defaultConfig { applicationId "org.kenjinx.android" minSdk 29 //noinspection EditedTargetSdkVersion targetSdk 36 versionCode 20005 versionName '2.0.5' testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" vectorDrawables { useSupportLibrary true } ndk { //noinspection ChromeOsAbiSupport abiFilters 'arm64-v8a' } externalNativeBuild { cmake { cppFlags "-std=c++17 -O3 -ffast-math -march=armv8-a -funroll-loops" arguments "-DANDROID_STL=c++_shared", "-DCMAKE_BUILD_TYPE=Release", "-DANDROID_ARM_NEON=TRUE" } } } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' signingConfig signingConfigs.debug debuggable false jniDebuggable false } } androidComponents { onVariants(selector().withBuildType("release")) { packaging.dex.useLegacyPackaging.set(true) } } compileOptions { sourceCompatibility JavaVersion.VERSION_21 targetCompatibility JavaVersion.VERSION_21 } buildFeatures { compose true prefab true buildConfig true } packagingOptions { jniLibs { keepDebugSymbols += '**/libkenjinx.so' useLegacyPackaging true } resources { excludes += '/META-INF/{AL2.0,LGPL2.1}' } } externalNativeBuild { cmake { path file('src/main/cpp/CMakeLists.txt') } } sourceSets { main { jniLibs.srcDirs = ['src/main/extLibs', 'src/main/jniLibs'] } } } tasks.named("preBuild") { dependsOn ':libkenjinx:assemble' } dependencies { runtimeOnly project(":libkenjinx") implementation 'androidx.activity:activity-compose:1.12.3' implementation 'androidx.appcompat:appcompat:1.7.1' implementation 'androidx.compose.material3:material3' implementation 'androidx.compose.material:material-icons-extended:1.7.8' implementation 'androidx.compose.ui:ui' implementation 'androidx.compose.ui:ui-graphics' implementation 'androidx.compose.ui:ui-tooling-preview' implementation 'androidx.constraintlayout:constraintlayout:2.2.1' implementation 'androidx.core:core-ktx:1.17.0' implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.10.0' implementation 'androidx.navigation:navigation-compose:2.9.7' implementation 'androidx.preference:preference-ktx:1.2.1' implementation 'br.com.devsrsouza.compose.icons:css-gg:1.1.1' implementation 'com.anggrayudi:storage:2.2.0' implementation 'com.github.swordfish90:radialgamepad:2.0.0' implementation 'com.google.android.material:material:1.13.0' implementation 'com.google.code.gson:gson:2.13.2' implementation 'com.halilibo.compose-richtext:richtext-commonmark:0.20.0' implementation 'com.halilibo.compose-richtext:richtext-ui-material3:0.20.0' implementation 'com.halilibo.compose-richtext:richtext-ui:0.20.0' implementation 'io.coil-kt:coil-compose:2.7.0' implementation 'net.java.dev.jna:jna:5.18.1@aar' implementation 'net.lingala.zip4j:zip4j:2.11.5' implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.10.2' implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2' implementation platform('androidx.compose:compose-bom:2026.01.01') implementation platform('org.jetbrains.kotlin:kotlin-bom:1.9.25') androidTestImplementation 'androidx.compose.ui:ui-test-junit4' androidTestImplementation 'androidx.test.espresso:espresso-core:3.7.0' androidTestImplementation 'androidx.test.ext:junit:1.3.0' androidTestImplementation platform('androidx.compose:compose-bom:2026.01.01') testImplementation 'junit:junit:4.13.2' debugImplementation 'androidx.compose.ui:ui-test-manifest' debugImplementation 'androidx.compose.ui:ui-tooling' }