apply plugin: 'com.android.library' apply plugin: 'de.undercouch.download' android { compileSdkVersion 32 buildToolsVersion '33.0.0' ndkVersion '23.2.8568313' defaultConfig { minSdkVersion 21 targetSdkVersion 32 externalNativeBuild { ndkBuild { arguments '-j' + Runtime.getRuntime().availableProcessors(), "--output-sync=none", "versionMajor=${versionMajor}", "versionMinor=${versionMinor}", "versionPatch=${versionPatch}", "versionExtra=${versionExtra}" } } } externalNativeBuild { ndkBuild { path file('jni/Android.mk') } } // supported architectures splits { abi { enable true reset() include 'armeabi-v7a', 'arm64-v8a'//, 'x86' } } buildTypes { release { externalNativeBuild { ndkBuild { arguments 'NDEBUG=1' } } } } } // get precompiled deps task downloadDeps(type: Download) { src 'https://github.com/MultiCraft/deps/archive/master.zip' dest new File(buildDir, 'deps.zip') overwrite false } task getDeps(dependsOn: downloadDeps, type: Copy) { def deps = file('deps') def f = file("$buildDir/deps-master") if (!f.exists()) { from zipTree(downloadDeps.dest) into buildDir } doLast { file(f).renameTo(file(deps)) } } // get libiconv task downloadIconv(dependsOn: getDeps, type: Download) { src 'https://github.com/MoNTE48/ndk_iconv/archive/mc.zip' dest new File(buildDir, 'iconv.zip') overwrite false } task getIconv(dependsOn: downloadIconv, type: Copy) { def iconv = file('deps/Android/ndk_iconv') def f = file("$buildDir/ndk_iconv-mc") if (!iconv.exists() && !f.exists()) { from zipTree(downloadIconv.dest) into buildDir } doLast { if (!iconv.exists()) { file(f).renameTo(file(iconv)) } } } preBuild.dependsOn getDeps preBuild.dependsOn getIconv android.defaultConfig.externalNativeBuild.ndkBuild { arguments 'prebuilt=$(if $(strip $(wildcard $(prebuilt_path))),$(prebuilt_path),.)' }