1buildscript { 2 repositories { 3 google() 4 jcenter() 5 } 6 7 dependencies { 8 classpath 'com.android.tools.build:gradle:3.2.0' 9 } 10} 11 12repositories { 13 google() 14 jcenter() 15} 16 17apply plugin: 'com.android.application' 18 19dependencies { 20 implementation fileTree(dir: 'libs', include: ['*.jar', '*.aar']) 21} 22 23ext { 24 abi = System.getenv('ANDROID_ABI') ?: project.ext.properties['abi'] 25 installPrefix = '../krita-android-build' 26} 27 28task configure() { 29 doLast { 30 if (abi == null && !project.hasProperty("abi")) { 31 logger.error('ANDROID_ABI not specified using the default one instead: arm64-v8a') 32 abi = 'arm64-v8a' 33 } 34 35 // if user specified the ABI through environment then overwrite the one in gradle.properties 36 if (System.getenv('ANDROID_ABI') != null) { 37 def f = file('gradle.properties') 38 def lines = f.readLines() 39 f.write("") 40 for (line in lines) { 41 if (line.matches('abi=.+')) 42 continue 43 f.append("$line\n") 44 } 45 f.append("abi=${abi}\n") 46 } 47 48 def libs = new File(installPrefix, 'lib') 49 if (!libs.exists()) { 50 throw new GradleException('Krita libraires not found, please check if -p=krita-bin finished without errors') 51 } 52 } 53} 54 55// copy libs(plugins) which start with krita*.so and rename 56// them to start with `lib_` 57task copyLibs(type: Copy) { 58 from "$installPrefix/lib" 59 into "libs/$abi" 60 rename ('^krita(.*).so$', 'lib_krita$1.so') 61} 62 63/* 64 * androiddeployqt doesn't fully copy the directories. Hidden directories 65 * to be specific. That's why we copy manually and then delete the partial 66 * one it creates 67 */ 68task copyAssets(type: Copy) { 69 from "$installPrefix/share/" 70 into 'assets/' 71 include '**' 72} 73 74/* 75 * Remove "share" folder in assets. It is copied both manually and by 76 * androiddeployqt(reason in copyAssets task). 77 */ 78task removeDuplicateAssets(type: Delete) { 79 delete "assets/share" 80} 81 82copyLibs.dependsOn configure 83 84android { 85 compileSdkVersion androidCompileSdkVersion.toInteger() 86 87 sourceSets { 88 main { 89 manifest.srcFile 'AndroidManifest.xml' 90 java.srcDirs = [qt5AndroidDir + '/src', 'src', 'java'] 91 aidl.srcDirs = [qt5AndroidDir + '/src', 'src', 'aidl'] 92 res.srcDirs = [qt5AndroidDir + '/res', 'res'] 93 resources.srcDirs = ['src'] 94 renderscript.srcDirs = ['src'] 95 assets.srcDirs = ['assets'] 96 jniLibs.srcDirs = ['libs', 'lib'] 97 } 98 } 99 100 // This is needed because, gradle by default ignores hidden assets. 101 aaptOptions { 102 ignoreAssetsPattern "!.foajasoie" 103 } 104 105 lintOptions { 106 abortOnError false 107 } 108 109 project.ext.versionCodes = ['armeabi-v7a': 1, 'arm64-v8a': 2, 'x86': 3, 'x86_64': 4] 110 111 def versionMajor = 4 112 def versionMinor = 5 113 114 /** 115 * This version does **not** correspond to the patch version 116 * of Krita. Instead, it is just incremented for every public 117 * (including alpha and beta) release of versionMajor.versionMinor 118 * branch 119 */ 120 def versionRelease = 9 121 122 defaultConfig { 123 targetSdkVersion 29 124 minSdkVersion 23 125 versionCode project.ext.versionCodes[abi] * 1000000 + versionMajor * 10000 + versionMinor * 100 + versionRelease 126 versionName "4.4.8" 127 archivesBaseName = "krita-$abi-$versionName" 128 } 129 130 preBuild.dependsOn(copyLibs) 131 preBuild.dependsOn(copyAssets) 132 preBuild.dependsOn(removeDuplicateAssets) 133} 134 135dependencies { 136 implementation 'com.android.billingclient:billing:2.2.0' 137} 138 139