1 apply plugin: 'com.android.application'
5 buildToolsVersion '33.0.2'
6 ndkVersion "$ndk_version"
8 applicationId 'net.minetest.minetest'
11 versionName "${versionMajor}.${versionMinor}.${versionPatch}"
12 versionCode project.versionCode
16 Properties props = new Properties()
17 def propfile = file('../local.properties')
18 if (propfile.exists())
19 props.load(new FileInputStream(propfile))
21 if (props.getProperty('keystore') != null) {
24 storeFile file(props['keystore'])
25 storePassword props['keystore.password']
27 keyPassword props['key.password']
34 signingConfig signingConfigs.release
44 include 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'
49 sourceCompatibility JavaVersion.VERSION_1_8
50 targetCompatibility JavaVersion.VERSION_1_8
54 task prepareAssets() {
55 def assetsFolder = "build/assets"
56 def projRoot = rootDir.parent
57 def gameToCopy = "minetest_game"
60 logger.lifecycle('Preparing assets at {}', assetsFolder)
64 from "${projRoot}/minetest.conf.example", "${projRoot}/README.md" into assetsFolder
67 from "${projRoot}/doc/lgpl-2.1.txt" into assetsFolder
70 from "${projRoot}/builtin" into "${assetsFolder}/builtin"
73 from "${projRoot}/client/shaders" into "${assetsFolder}/client/shaders"
76 from "../native/deps/armeabi-v7a/Irrlicht/Shaders" into "${assetsFolder}/client/shaders/Irrlicht"
79 from "${projRoot}/fonts" include "*.ttf" into "${assetsFolder}/fonts"
82 from "${projRoot}/games/${gameToCopy}" into "${assetsFolder}/games/${gameToCopy}"
85 from "${projRoot}/textures" into "${assetsFolder}/textures"
88 // compile translations
89 fileTree("${projRoot}/po").include("**/*.po").forEach { poFile ->
90 def moPath = "${assetsFolder}/locale/${poFile.parentFile.name}/LC_MESSAGES/"
93 commandLine 'msgfmt', '-o', "${moPath}/minetest.mo", poFile
97 file("${assetsFolder}/.nomedia").text = ""
100 task zipAssets(dependsOn: prepareAssets, type: Zip) {
101 archiveFileName = "Minetest.zip"
103 destinationDirectory = file("src/main/assets")
107 preBuild.dependsOn zipAssets
108 prepareAssets.dependsOn ':native:getDeps'
110 // Map for the version code that gives each ABI a value.
111 import com.android.build.OutputFile
113 def abiCodes = ['armeabi-v7a': 0, 'arm64-v8a': 1]
114 android.applicationVariants.all { variant ->
115 variant.outputs.each {
117 def abiName = output.getFilter(OutputFile.ABI)
118 output.versionCodeOverride = abiCodes.get(abiName, 0) + variant.versionCode
123 implementation project(':native')
124 implementation 'androidx.appcompat:appcompat:1.6.1'