61163288f3253fa04467ae1e02e746f13a98946f
[oweals/minetest.git] / build / android / build.gradle
1 buildscript {
2         repositories {
3                 google()
4                 jcenter()
5         }
6         dependencies {
7                 classpath 'com.android.tools.build:gradle:3.5.1'
8         }
9 }
10
11 allprojects {
12         repositories {
13                 google()
14                 jcenter()
15         }
16 }
17
18 def curl_version = "7.60.0"
19 def irrlicht_revision = "5150"
20 def openal_version = "1.18.2"
21 def openssl_version = "1.0.2n"
22 def sqlite3_version = "3240000"
23
24 apply plugin: "com.android.application"
25
26 android {
27         compileSdkVersion 29
28         buildToolsVersion '29.0.2'
29
30         defaultConfig {
31                 versionCode 25
32                 versionName "${System.env.VERSION_STR}.${versionCode}"
33                 minSdkVersion 14
34                 targetSdkVersion 29
35                 applicationId "net.minetest.minetest"
36                 manifestPlaceholders = [package: "net.minetest.minetest", project: project.name]
37                 ndk {
38                         // Specifies the ABI configurations of your native
39                         // libraries Gradle should build and package with your APK.
40                         // abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'
41                         abiFilters 'armeabi-v7a', 'x86'
42                 }
43         }
44
45         compileOptions {
46                 sourceCompatibility JavaVersion.VERSION_1_8
47                 targetCompatibility JavaVersion.VERSION_1_8
48         }
49
50         lintOptions {
51                 disable "OldTargetApi", "GoogleAppIndexingWarning"
52         }
53
54         Properties props = new Properties()
55         props.load(new FileInputStream(file("local.properties")))
56
57         if (props.getProperty("keystore") != null) {
58                 signingConfigs {
59                         release {
60                                 storeFile file(props["keystore"])
61                                 storePassword props["keystore.password"]
62                                 keyAlias props["key"]
63                                 keyPassword props["key.password"]
64                         }
65                 }
66
67                 buildTypes {
68                         release {
69                                 signingConfig signingConfigs.release
70                         }
71                 }
72         }
73 }
74
75 task cleanAssets(type: Delete) {
76         delete 'src/main/assets'
77 }
78
79 task copyAssets {
80         dependsOn 'cleanAssets'
81         mkdir "src/main/assets"
82
83         def mtAssetsFolder = "src/main/assets/Minetest"
84         def projRoot = "../.."
85         def gameToCopy = "minetest_game"
86
87         doLast {
88                 mkdir "${mtAssetsFolder}"
89                 mkdir "${mtAssetsFolder}/client"
90                 mkdir "${mtAssetsFolder}/fonts"
91                 mkdir "${mtAssetsFolder}/games"
92                 mkdir "${mtAssetsFolder}/media"
93
94                 copy {
95                         from "${projRoot}/minetest.conf.example", "${projRoot}/README.md" into mtAssetsFolder
96                 }
97                 copy {
98                         from "${projRoot}/doc/lgpl-2.1.txt" into "${mtAssetsFolder}/LICENSE.txt"
99                 }
100                 copy {
101                         from "${projRoot}/builtin" into "${mtAssetsFolder}/builtin"
102                 }
103                 copy {
104                         from "${projRoot}/client/shaders" into "${mtAssetsFolder}/client/shaders"
105                 }
106                 copy {
107                         from "${projRoot}/fonts" include "*.ttf" into "${mtAssetsFolder}/fonts"
108                 }
109                 copy {
110                         from "${projRoot}/games/${gameToCopy}" into "${mtAssetsFolder}/games/${gameToCopy}"
111                 }
112                 copy {
113                         from "${projRoot}/po" into "${mtAssetsFolder}/po"
114                 }
115                 copy {
116                         from "${projRoot}/textures" into "${mtAssetsFolder}/textures"
117                 }
118         }
119 }
120
121 task cleanIconv(type: Delete) {
122         delete 'deps/libiconv'
123 }
124
125 task cleanIrrlicht(type: Delete) {
126         delete 'deps/irrlicht'
127 }
128
129 task cleanLevelDB(type: Delete) {
130         delete 'deps/leveldb'
131 }
132
133 task cleanCURL(type: Delete) {
134         delete 'deps/curl'
135         delete 'deps/curl-' + curl_version
136 }
137
138 task cleanOpenSSL(type: Delete) {
139         delete 'deps/openssl'
140         delete 'deps/openssl-' + openssl_version
141         delete 'deps/openssl-' + openssl_version + '.tar.gz'
142 }
143
144 task cleanOpenAL(type: Delete) {
145         delete 'deps/openal-soft'
146 }
147
148 task cleanFreetype(type: Delete) {
149         delete 'deps/freetype2-android'
150 }
151
152 task cleanOgg(type: Delete) {
153         delete 'deps/libvorbis-libogg-android'
154 }
155
156 task cleanSQLite3(type: Delete) {
157         delete 'deps/sqlite-amalgamation-' + sqlite3_version
158         delete 'deps/sqlite-amalgamation-' + sqlite3_version + '.zip'
159 }
160
161 task cleanAll(type: Delete, dependsOn: [clean, cleanAssets, cleanIconv,
162                 cleanFreetype, cleanIrrlicht, cleanLevelDB, cleanSQLite3, cleanCURL,
163                 cleanOpenSSL, cleanOpenAL, cleanOgg]) {
164         delete 'deps'
165         delete 'gen'
166         delete 'libs'
167         delete 'obj'
168         delete 'bin'
169         delete 'Debug'
170         delete 'and_env'
171 }
172
173 dependencies {
174         implementation 'androidx.core:core:1.1.0'
175 }