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