apply plugin: 'com.android.application' android { /******************************************************* * The following variables: * - androidBuildToolsVersion, * - androidCompileSdkVersion * - qt5AndroidDir - holds the path to qt android files * needed to build any Qt application * on Android. * * are defined in gradle.properties file. This file is * updated by QtCreator and androiddeployqt tools. * Changing them manually might break the compilation! *******************************************************/ ndkVersion '25.2.9519653' // Extract native libraries from the APK packagingOptions.jniLibs.useLegacyPackaging true defaultConfig { applicationId "is.xyz.vcmi" compileSdk = androidCompileSdkVersion.takeAfter("-") as Integer // has "android-" prepended minSdk = qtMinSdkVersion as Integer targetSdk = qtTargetSdkVersion as Integer // ANDROID_TARGET_SDK_VERSION in the CMake project versionCode 1600 versionName "1.6.0" setProperty("archivesBaseName", "vcmi") } sourceSets { main { // Qt requires these to be in the android project root manifest.srcFile '../AndroidManifest.xml' jniLibs.srcDirs = ['../libs'] java.srcDirs = [qt5AndroidDir + '/src', 'src', 'java'] aidl.srcDirs = [qt5AndroidDir + '/src', 'src', 'aidl'] res.srcDirs = [qt5AndroidDir + '/res', 'src/main/res', '../res'] } } signingConfigs { releaseSigning dailySigning LoadSigningConfig("releaseSigning") LoadSigningConfig("dailySigning") } buildTypes { debug { debuggable true applicationIdSuffix '.debug' manifestPlaceholders = [ applicationLabel: 'VCMI debug', ] ndk { debugSymbolLevel 'full' } } release { minifyEnabled false zipAlignEnabled true applicationIdSuffix = project.findProperty('applicationIdSuffix') signingConfig = signingConfigs[project.findProperty('signingConfig') ?: 'releaseSigning'] proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' manifestPlaceholders = [ applicationLabel: project.findProperty('applicationLabel') ?: 'VCMI', ] ndk { debugSymbolLevel 'full' } } } tasks.withType(JavaCompile) { options.compilerArgs += ["-Xlint:deprecation"] } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } // Do not compress Qt binary resources file aaptOptions { noCompress 'rcc' } } def CommandOutput(final cmd, final arguments, final cwd) { try { new ByteArrayOutputStream().withStream { final os -> exec { executable cmd args arguments workingDir cwd standardOutput os } return os.toString().trim() } } catch (final Exception ex) { print("Broken: " + cmd + " " + arguments + " in " + cwd + " :: " + ex.toString()) return "" } } def SigningPropertiesPath(final basePath, final signingConfigKey) { return file("${basePath}/${signingConfigKey}.properties") } def SigningKeystorePath(final basePath, final keystoreFileName) { return file("${basePath}/${keystoreFileName}") } def LoadSigningConfig(final signingConfigKey) { final def props = new Properties() final def propFile = SigningPropertiesPath(signingRoot, signingConfigKey) def signingConfig = android.signingConfigs.getAt(signingConfigKey) if (propFile.canRead()) { props.load(new FileInputStream(propFile)) if (props != null && props.containsKey('STORE_FILE') && props.containsKey('KEY_ALIAS')) { signingConfig.storeFile = SigningKeystorePath(signingRoot, props['STORE_FILE']) signingConfig.storePassword = props['STORE_PASSWORD'] signingConfig.keyAlias = props['KEY_ALIAS'] if(props.containsKey('STORE_PASSWORD')) signingConfig.storePassword = props['STORE_PASSWORD'] else signingConfig.storePassword = System.getenv("ANDROID_STORE_PASSWORD") if(props.containsKey('KEY_PASSWORD')) signingConfig.keyPassword = props['KEY_PASSWORD'] else signingConfig.keyPassword = System.getenv("ANDROID_KEY_PASSWORD") } else { println("Some props from signing file are missing") android.signingConfigs.putAt(signingConfigKey, null) } } else { println("file with signing properties is missing") android.signingConfigs.putAt(signingConfigKey, null) } } dependencies { implementation fileTree(dir: '../libs', include: ['*.jar', '*.aar']) implementation 'androidx.annotation:annotation:1.7.1' implementation 'androidx.documentfile:documentfile:1.0.1' }