Warning, /graphics/krita/packaging/android/apk/build.gradle is written in an unsupported language. File is not indexed.
0001 buildscript {
0002 repositories {
0003 google()
0004 mavenCentral()
0005 }
0006
0007 dependencies {
0008 classpath 'com.android.tools.build:gradle:7.2.1'
0009 }
0010 }
0011
0012 repositories {
0013 google()
0014 mavenCentral()
0015 }
0016
0017 apply plugin: 'com.android.application'
0018
0019 dependencies {
0020 implementation fileTree(dir: 'libs', include: ['*.jar', '*.aar'])
0021 }
0022
0023 ext {
0024 abi = System.getenv('ANDROID_ABI') ?: project.ext.properties['abi']
0025 ndkpath = System.getenv('ANDROID_NDK_HOME') ?: project.ext.properties['ndk.dir'] // TODO: Newer versions of Qt do support this dir
0026 installPrefix = '../krita-android-build'
0027 qtResPath = System.getenv('KRITA_BUILD_APPBUNDLE') ? '../i/src/android/java' : ""
0028 }
0029
0030 task configure() {
0031 doLast {
0032 if (abi == null && !project.hasProperty("abi")) {
0033 logger.error('ANDROID_ABI not specified using the default one instead: arm64-v8a')
0034 abi = 'arm64-v8a'
0035 }
0036
0037 def libs = new File(installPrefix, 'lib')
0038 if (!libs.exists()) {
0039 throw new FileNotFoundException('Krita libraries not found, please check if -p=krita-bin finished without errors')
0040 }
0041 }
0042 }
0043
0044 task writeConfig(type: WriteProperties) {
0045 outputFile = file("gradle.properties")
0046 def gradleProperties = new Properties()
0047 outputFile.withInputStream { gradleProperties.load(it) }
0048
0049 properties gradleProperties
0050 property 'abi', abi
0051 property 'ndk.dir', ndkpath
0052 }
0053
0054 // copy libs(plugins) which start with krita*.so and rename
0055 // them to start with `lib_`
0056 task copyLibs(type: Copy) {
0057 from "$installPrefix/lib"
0058 into "libs/$abi"
0059 rename ('^krita(.*).so$', 'lib_krita$1.so')
0060 }
0061
0062 task copyFonts(type: Copy) {
0063 def etcDir = "../i/"
0064 from "$etcDir/etc"
0065 into 'assets/etc/'
0066 include '**'
0067 }
0068
0069 /*
0070 * androiddeployqt doesn't fully copy the directories. Hidden directories
0071 * to be specific. That's why we copy manually and then delete the partial
0072 * one it creates
0073 */
0074 task copyAssets(type: Copy) {
0075 from "$installPrefix/share/"
0076 into 'assets/'
0077 include '**'
0078 }
0079
0080 task copyLocaleFiles(type: Copy) {
0081 def libsDir = "../i/"
0082 from "$libsDir/share/locale"
0083 from "$libsDir/translations"
0084 into 'assets/locale/'
0085 include '**'
0086 }
0087
0088 task copyExtraMltFiles(type: Copy) {
0089 def libsDir = "../i/"
0090 from "$libsDir/share/mlt-7"
0091 into 'assets/mlt'
0092 include '**'
0093 }
0094
0095 /*
0096 * Remove "share" folder in assets. It is copied both manually and by
0097 * androiddeployqt(reason in copyAssets task).
0098 */
0099 task removeDuplicateAssets(type: Delete) {
0100 delete "assets/share"
0101 }
0102
0103 def isPackagingAPK() {
0104 return gradle.taskGraph.hasTask(assembleRelease) || gradle.taskGraph.hasTask(assembleDebug)
0105 }
0106
0107 android {
0108 compileSdkVersion androidCompileSdkVersion.toInteger()
0109
0110 ndkPath ndkpath
0111
0112 packagingOptions {
0113 jniLibs {
0114 useLegacyPackaging = true
0115 }
0116 }
0117
0118 sourceSets {
0119 main {
0120 manifest.srcFile 'AndroidManifest.xml'
0121 java.srcDirs = [qt5AndroidDir + '/src', qtResPath + '/src', 'src', 'java']
0122 aidl.srcDirs = [qt5AndroidDir + '/src', qtResPath + '/src', 'src', 'aidl']
0123 res.srcDirs = [qt5AndroidDir + '/res', qtResPath + '/res', 'res']
0124 resources.srcDirs = ['src']
0125 renderscript.srcDirs = ['src']
0126 assets.srcDirs = ['assets']
0127 jniLibs.srcDirs = ['libs', 'lib']
0128 }
0129 nightly {
0130 manifest.srcFile 'flavors/next/AndroidManifest.xml'
0131 }
0132 debug {
0133 manifest.srcFile 'flavors/debug/AndroidManifest.xml'
0134 }
0135 }
0136
0137 buildTypes {
0138 release {
0139 minifyEnabled true
0140 proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'),
0141 'proguard-rules.pro'
0142 }
0143 nightly {
0144 initWith release
0145 applicationIdSuffix ".next"
0146 }
0147 debug {
0148 applicationIdSuffix ".debug"
0149 }
0150 }
0151
0152 // This is needed because, gradle by default ignores hidden assets.
0153 aaptOptions {
0154 ignoreAssetsPattern "!.foajasoie"
0155 }
0156
0157 lintOptions {
0158 abortOnError false
0159 }
0160
0161 project.ext.constant = 5
0162
0163 def versionMajor = 5
0164 def versionMinor = 0
0165
0166 /**
0167 * This version does **not** correspond to the patch version
0168 * of Krita. Instead, it is just incremented for every public
0169 * (including alpha and beta) release of versionMajor.versionMinor
0170 * branch
0171 */
0172 def versionRelease = 0
0173
0174 defaultConfig {
0175 targetSdkVersion 33
0176 minSdkVersion 23
0177 versionCode project.ext.constant * 1000000 + versionMajor * 10000 + versionMinor * 100 + versionRelease
0178 versionName "5.2.0-prealpha"
0179 archivesBaseName = System.getenv('KRITA_BUILD_APPBUNDLE') ? "krita-$versionName" : "krita-$abi-$versionName"
0180 }
0181
0182 preBuild.dependsOn(configure)
0183 configure.onlyIf { isPackagingAPK() }
0184 configure.finalizedBy(writeConfig)
0185 configure.finalizedBy(copyLibs)
0186 configure.finalizedBy(copyFonts)
0187 configure.finalizedBy(copyAssets)
0188 configure.finalizedBy(copyLocaleFiles)
0189 configure.finalizedBy(copyExtraMltFiles)
0190 configure.finalizedBy(removeDuplicateAssets)
0191 }
0192
0193 dependencies {
0194 implementation 'com.android.billingclient:billing:5.0.0'
0195 implementation 'androidx.annotation:annotation:1.4.0'
0196 implementation files('../i/jar/SDL2Android.jar')
0197 }