def buildAsLibrary = project.hasProperty('BUILD_AS_LIBRARY'); def buildAsApplication = !buildAsLibrary if (buildAsApplication) { apply plugin: 'com.android.application' } else { apply plugin: 'com.android.library' } android { buildFeatures { prefab true } ndkVersion "${project.ndk_version}" if (buildAsApplication) { namespace "com.complecwaft.looper" } compileSdkVersion 34 defaultConfig { minSdkVersion 30 targetSdkVersion 34 def revListStdout = new ByteArrayOutputStream(); exec { executable "git" commandLine "git", "rev-list", "--count", "HEAD" standardOutput revListStdout } def revParseStdout = new ByteArrayOutputStream(); exec { commandLine "./app/jni/version.sh" standardOutput revParseStdout } versionCode revListStdout.toString() as Integer versionName revParseStdout.toString() externalNativeBuild { cmake { arguments "-DUSE_GLES=ON", "-DUSE_PORTALS=OFF", "-DDOWNLOAD_AUDIO_CODECS_DEPENDENCY=ON", "-DENABLE_DBUS=OFF", "-DBUILD_SDL=ON", "-DBUILD_SDL_IMAGE=ON", "-DDISABLE_GTK_UI=ON", "-DDISABLE_IMGUI_UI=OFF" } } } externalNativeBuild { cmake { path 'jni/CMakeLists.txt'; } } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } applicationVariants.all { variant -> tasks["merge${variant.name.capitalize()}Assets"] .dependsOn("externalNativeBuild${variant.name.capitalize()}") } if (!project.hasProperty('EXCLUDE_NATIVE_LIBS')) { sourceSets.main { jniLibs.srcDir 'libs' } } lint { abortOnError false } if (buildAsLibrary) { libraryVariants.all { variant -> variant.outputs.each { output -> def outputFile = output.outputFile if (outputFile != null && outputFile.name.endsWith(".aar")) { def fileName = "com.complecwaft.looper.app.aar"; output.outputFile = new File(outputFile.parent, fileName); } } } } } dependencies { implementation "androidx.core:core:1.13.1" implementation fileTree(include: ['*.jar'], dir: 'libs') implementation group: 'com.getkeepsafe.relinker', name: 'relinker', version: '1.4.5' }