buildscript { repositories { mavenCentral() google() } dependencies { // 4.1.2 is the minimum version to support native debug symbols file // https://developer.android.com/studio/build/shrink-code#android_gradle_plugin_version_41_or_later // 7.0.0 to fix https://stackoverflow.com/questions/68387270/android-studio-error-installed-build-tools-revision-31-0-0-is-corrupted classpath 'com.android.tools.build:gradle:7.3.0' } } allprojects { repositories { mavenCentral() google() } } apply plugin: 'com.android.application' android { // Setting the namespace via a source AndroidManifest.xml's package attribute is deprecated. namespace project.getProperty('package_name') // buildToolsVersion is no longer needed https://developer.android.com/studio/releases/gradle-plugin.html#behavior_changes_1 // Quote: // Build Tools 27.0.3 or higher. Keep in mind, you no longer need to specify a version for the build tools using the android.buildToolsVersion property—the plugin uses the minimum required version by default. compileSdkVersion compile_sdk_version.toInteger() ndkVersion ndk_version externalNativeBuild { ndkBuild { path 'Android.mk' } } defaultConfig { versionCode project.getProperty('version_code').toInteger() versionName project.getProperty('version_name') minSdkVersion min_sdk_version.toInteger() targetSdkVersion target_sdk_version.toInteger() externalNativeBuild { ndkBuild { def app_platform = "APP_PLATFORM=android-${min_sdk_version}" arguments app_platform, 'APP_STL=c++_static', cpu_core if (project.getProperty('compile_arch') == 'all') { abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64' } else { abiFilters project.getProperty('compile_arch') } } } def runTasks = gradle.startParameter.taskNames if ('bundleRelease' in runTasks) { // use SYMBOL_TABLE if too large later (max limit on google play is 300MB) ndk.debugSymbolLevel 'FULL' } } signingConfigs { release { storeFile file(keystore) storePassword storepass keyAlias alias keyPassword storepass } } buildTypes { debug { debuggable true jniDebuggable true minifyEnabled false shrinkResources false multiDexEnabled true externalNativeBuild { ndkBuild { arguments 'NDK_DEBUG=1' cFlags '-O0' cppFlags '-O0' } } ndk { if (project.getProperty('compile_arch') == 'all') { abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64' } else { abiFilters project.getProperty('compile_arch') } } } release { externalNativeBuild { ndkBuild { cFlags '-O3' cppFlags '-O3' } } signingConfig signingConfigs.release ndk { if (project.getProperty('compile_arch') == 'all') { abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64' } else { abiFilters project.getProperty('compile_arch') } } } } sourceSets { main { manifest.srcFile 'AndroidManifest.xml' res.srcDirs = ['res'] assets.srcDirs = ['assets'] } } } dependencies { implementation 'org.minidns:minidns-hla:0.3.3' }