From e41673820ffe200df78b1ec185ccb9d9ca962ae1 Mon Sep 17 00:00:00 2001
From: ShadowNinja <shadowninja@minetest.net>
Date: Wed, 13 Apr 2016 14:14:04 -0400
Subject: [PATCH] Upgrade Android build to Gradle build system

The old Ant build system has been deprecated for a while and new development is focused on Gradle.
I also removed a hardcoded string that lint caught and moved the patch files to a subdirectory.
I left the JNI files in the root directory.
---
 .gitignore                                    |  15 +-
 build/android/AndroidManifest.xml.template    |  35 --
 build/android/Makefile                        | 372 ++++++++----------
 build/android/build.gradle                    |  49 +++
 build/android/build.xml                       |  16 -
 build/android/jni/Android.mk                  |  32 +-
 build/android/jni/Application.mk              |   3 +-
 .../{ => patches}/irrlicht-back_button.patch  |   0
 .../{ => patches}/irrlicht-texturehack.patch  |   0
 .../{ => patches}/irrlicht-touchcount.patch   |   0
 .../{ => patches}/libiconv_android.patch      |   0
 .../{ => patches}/libiconv_stdio.patch        |   0
 .../{ => patches}/libvorbis-libogg-fpu.patch  |   0
 .../android/{ => patches}/openssl_arch.patch  |   0
 build/android/project.properties              |   1 -
 build/android/settings.gradle                 |   2 +
 build/android/src/debug/AndroidManifest.xml   |   4 +
 build/android/src/main/AndroidManifest.xml    |  34 ++
 .../MinetestAssetCopy.java                    |   0
 .../MinetestTextEntry.java                    |   0
 .../MtNativeActivity.java                     |   0
 .../main}/res/drawable-hdpi/irr_icon.png      | Bin
 .../main}/res/drawable-ldpi/irr_icon.png      | Bin
 .../main}/res/drawable-mdpi/irr_icon.png      | Bin
 .../main}/res/drawable-xhdpi/irr_icon.png     | Bin
 .../{ => src/main}/res/layout/assetcopy.xml   |   2 +-
 build/android/src/main/res/values/strings.xml |   5 +
 .../{ => src/main}/res/values/styles.xml      |   0
 util/bump_version.sh                          |   8 +-
 29 files changed, 291 insertions(+), 287 deletions(-)
 delete mode 100644 build/android/AndroidManifest.xml.template
 create mode 100644 build/android/build.gradle
 delete mode 100644 build/android/build.xml
 rename build/android/{ => patches}/irrlicht-back_button.patch (100%)
 rename build/android/{ => patches}/irrlicht-texturehack.patch (100%)
 rename build/android/{ => patches}/irrlicht-touchcount.patch (100%)
 rename build/android/{ => patches}/libiconv_android.patch (100%)
 rename build/android/{ => patches}/libiconv_stdio.patch (100%)
 rename build/android/{ => patches}/libvorbis-libogg-fpu.patch (100%)
 rename build/android/{ => patches}/openssl_arch.patch (100%)
 delete mode 100644 build/android/project.properties
 create mode 100644 build/android/settings.gradle
 create mode 100644 build/android/src/debug/AndroidManifest.xml
 create mode 100644 build/android/src/main/AndroidManifest.xml
 rename build/android/src/{net/minetest/minetest => main/java/net.minetest.minetest}/MinetestAssetCopy.java (100%)
 rename build/android/src/{net/minetest/minetest => main/java/net.minetest.minetest}/MinetestTextEntry.java (100%)
 rename build/android/src/{net/minetest/minetest => main/java/net.minetest.minetest}/MtNativeActivity.java (100%)
 rename build/android/{ => src/main}/res/drawable-hdpi/irr_icon.png (100%)
 rename build/android/{ => src/main}/res/drawable-ldpi/irr_icon.png (100%)
 rename build/android/{ => src/main}/res/drawable-mdpi/irr_icon.png (100%)
 rename build/android/{ => src/main}/res/drawable-xhdpi/irr_icon.png (100%)
 rename build/android/{ => src/main}/res/layout/assetcopy.xml (94%)
 create mode 100644 build/android/src/main/res/values/strings.xml
 rename build/android/{ => src/main}/res/values/styles.xml (100%)

diff --git a/.gitignore b/.gitignore
index cd6ee3e32..f9c664da6 100644
--- a/.gitignore
+++ b/.gitignore
@@ -73,15 +73,14 @@ locale/
 *.a
 
 ## Android build files
-build/android/assets
-build/android/bin
-build/android/Debug
+build/android/src/main/assets
+build/android/build
 build/android/deps
-build/android/gen
-build/android/jni/src
 build/android/libs
+build/android/jni/src
+build/android/src/main/jniLibs
 build/android/obj
-build/android/path.cfg
-build/android/and_env
-build/android/AndroidManifest.xml
+build/android/local.properties
+build/android/.gradle
 timestamp
+
diff --git a/build/android/AndroidManifest.xml.template b/build/android/AndroidManifest.xml.template
deleted file mode 100644
index 0f75ca648..000000000
--- a/build/android/AndroidManifest.xml.template
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-	package="net.minetest.minetest"
-	android:versionCode="###ANDROID_VERSION###"
-	android:versionName="###BASE_VERSION###.###ANDROID_VERSION###"
-	android:installLocation="auto">
-	<uses-sdk android:minSdkVersion="9"/>
-	<uses-feature android:glEsVersion="0x00010000" android:required="true"/>
-	<uses-permission android:name="android.permission.INTERNET" />
-	<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
-	<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
-	###DEBUG_BUILD###
-	<application android:icon="@drawable/irr_icon" android:label="Minetest" android:theme="@android:style/Theme.NoTitleBar.Fullscreen" ###DEBUG_FLAG###>
-	<activity android:name=".MtNativeActivity"
-		android:label="Minetest"
-		android:launchMode="singleTask"
-		android:configChanges="orientation|keyboard|keyboardHidden|navigation"
-		android:screenOrientation="sensorLandscape"
-		android:clearTaskOnLaunch="true">
-		<intent-filter>
-			<action android:name="android.intent.action.MAIN" />
-			<category android:name="android.intent.category.LAUNCHER" />
-		</intent-filter>
-		<meta-data android:name="android.app.lib_name" android:value="minetest" />
-	</activity>
-	<activity android:name=".MinetestTextEntry"
-		android:theme="@style/Theme.Transparent"
-		android:excludeFromRecents="true">
-	</activity>
-	<activity android:name=".MinetestAssetCopy"
-		android:theme="@style/Theme.Transparent"
-		android:excludeFromRecents="true">
-	</activity>
-	</application>
-</manifest>
diff --git a/build/android/Makefile b/build/android/Makefile
index df5f65c47..f3a18189b 100644
--- a/build/android/Makefile
+++ b/build/android/Makefile
@@ -8,29 +8,21 @@ OS := $(shell uname)
 # build for build platform
 APP_PLATFORM = android-9
 
-# paths used for timestaps, dependencys, tree config and libs
-PATHCFGFILE = path.cfg
-
-ROOT = $(shell pwd)
+ANDR_ROOT = $(shell pwd)
+PROJ_ROOT = $(shell realpath $(ANDR_ROOT)/../..)
+APP_ROOT = $(ANDR_ROOT)/src/main
 
 GAMES_TO_COPY = minetest_game
 MODS_TO_COPY =
 
 
-VERSION_MAJOR := $(shell cat $(ROOT)/../../CMakeLists.txt | \
+VERSION_MAJOR := $(shell cat $(PROJ_ROOT)/CMakeLists.txt | \
 	grep ^set\(VERSION_MAJOR\ | sed 's/)/ /' | cut -f2 -d' ')
-VERSION_MINOR := $(shell cat $(ROOT)/../../CMakeLists.txt | \
+VERSION_MINOR := $(shell cat $(PROJ_ROOT)/CMakeLists.txt | \
 	grep ^set\(VERSION_MINOR\ | sed 's/)/ /' | cut -f2 -d' ')
-VERSION_PATCH := $(shell cat $(ROOT)/../../CMakeLists.txt | \
+VERSION_PATCH := $(shell cat $(PROJ_ROOT)/CMakeLists.txt | \
 	grep ^set\(VERSION_PATCH\ | sed 's/)/ /' | cut -f2 -d' ')
 
-################################################################################
-# Android Version code
-# Increase for each build!
-################################################################################
-# Play Store actual version (16/03/15): 11
-ANDROID_VERSION_CODE = 13
-
 ################################################################################
 # toolchain config for arm new processors
 ################################################################################
@@ -42,7 +34,7 @@ TARGET_CFLAGS_ADDON = -mfloat-abi=softfp -mfpu=vfpv3 -O3
 TARGET_CXXFLAGS_ADDON = $(TARGET_CFLAGS_ADDON)
 TARGET_ARCH = armv7
 CROSS_PREFIX = arm-linux-androideabi-
-COMPILER_VERSION = 4.8
+COMPILER_VERSION = 4.9
 HAVE_LEVELDB = 1
 
 ################################################################################
@@ -54,7 +46,7 @@ HAVE_LEVELDB = 1
 #TARGET_TOOLCHAIN = mipsel-linux-android-
 #TARGET_ARCH = mips32
 #CROSS_PREFIX = mipsel-linux-android-
-#COMPILER_VERSION = 4.8
+#COMPILER_VERSION = 4.9
 #HAVE_LEVELDB = 0
 
 ################################################################################
@@ -66,78 +58,80 @@ HAVE_LEVELDB = 1
 #TARGET_TOOLCHAIN = x86-
 #CROSS_PREFIX = i686-linux-android-
 #TARGET_ARCH = x86
-#COMPILER_VERSION = 4.8
+#COMPILER_VERSION = 4.9
 #HAVE_LEVELDB = 1
 
 ################################################################################
 ASSETS_TIMESTAMP = deps/assets_timestamp
 
-LEVELDB_DIR = $(ROOT)/deps/leveldb/
+LEVELDB_DIR = $(ANDR_ROOT)/deps/leveldb/
 LEVELDB_LIB = $(LEVELDB_DIR)libleveldb.a
 LEVELDB_TIMESTAMP = $(LEVELDB_DIR)/timestamp
-LEVELDB_TIMESTAMP_INT = $(ROOT)/deps/leveldb_timestamp
+LEVELDB_TIMESTAMP_INT = $(ANDR_ROOT)/deps/leveldb_timestamp
 LEVELDB_URL_GIT = https://github.com/google/leveldb
 LEVELDB_COMMIT = 2d0320a458d0e6a20fff46d5f80b18bfdcce7018
 
-OPENAL_DIR = $(ROOT)/deps/openal-soft/
+OPENAL_DIR = $(ANDR_ROOT)/deps/openal-soft/
 OPENAL_LIB = $(OPENAL_DIR)libs/$(TARGET_ABI)/libopenal.so
 OPENAL_TIMESTAMP = $(OPENAL_DIR)/timestamp
-OPENAL_TIMESTAMP_INT = $(ROOT)/deps/openal_timestamp
+OPENAL_TIMESTAMP_INT = $(ANDR_ROOT)/deps/openal_timestamp
 OPENAL_URL_GIT = https://github.com/apportable/openal-soft
 
-OGG_DIR = $(ROOT)/deps/libvorbis-libogg-android/
+OGG_DIR = $(ANDR_ROOT)/deps/libvorbis-libogg-android/
 OGG_LIB = $(OGG_DIR)libs/$(TARGET_ABI)/libogg.so
 VORBIS_LIB = $(OGG_DIR)libs/$(TARGET_ABI)/libogg.so
 OGG_TIMESTAMP = $(OGG_DIR)timestamp
-OGG_TIMESTAMP_INT = $(ROOT)/deps/ogg_timestamp
+OGG_TIMESTAMP_INT = $(ANDR_ROOT)/deps/ogg_timestamp
 OGG_URL_GIT = https://github.com/vincentjames501/libvorbis-libogg-android
 
 IRRLICHT_REVISION = 5122
-IRRLICHT_DIR = $(ROOT)/deps/irrlicht/
+IRRLICHT_DIR = $(ANDR_ROOT)/deps/irrlicht/
 IRRLICHT_LIB = $(IRRLICHT_DIR)lib/Android/libIrrlicht.a
 IRRLICHT_TIMESTAMP = $(IRRLICHT_DIR)timestamp
-IRRLICHT_TIMESTAMP_INT = $(ROOT)/deps/irrlicht_timestamp
+IRRLICHT_TIMESTAMP_INT = $(ANDR_ROOT)/deps/irrlicht_timestamp
 IRRLICHT_URL_SVN = http://svn.code.sf.net/p/irrlicht/code/branches/ogl-es@$(IRRLICHT_REVISION)
 
 OPENSSL_VERSION = 1.0.2g
 OPENSSL_BASEDIR = openssl-$(OPENSSL_VERSION)
-OPENSSL_DIR = $(ROOT)/deps/$(OPENSSL_BASEDIR)/
+OPENSSL_DIR = $(ANDR_ROOT)/deps/$(OPENSSL_BASEDIR)/
 OPENSSL_LIB = $(OPENSSL_DIR)/libssl.so.1.0.0
 OPENSSL_TIMESTAMP = $(OPENSSL_DIR)timestamp
-OPENSSL_TIMESTAMP_INT = $(ROOT)/deps/openssl_timestamp
+OPENSSL_TIMESTAMP_INT = $(ANDR_ROOT)/deps/openssl_timestamp
 OPENSSL_URL = http://www.openssl.org/source/openssl-$(OPENSSL_VERSION).tar.gz
 
 CURL_VERSION = 7.48.0
-CURL_DIR = $(ROOT)/deps/curl-$(CURL_VERSION)
+CURL_DIR = $(ANDR_ROOT)/deps/curl-$(CURL_VERSION)
 CURL_LIB = $(CURL_DIR)/lib/.libs/libcurl.a
 CURL_TIMESTAMP = $(CURL_DIR)/timestamp
-CURL_TIMESTAMP_INT = $(ROOT)/deps/curl_timestamp
+CURL_TIMESTAMP_INT = $(ANDR_ROOT)/deps/curl_timestamp
 CURL_URL_HTTP = http://curl.haxx.se/download/curl-${CURL_VERSION}.tar.bz2
 
 GMP_VERSION = 6.1.0
-GMP_DIR = $(ROOT)/deps/gmp-$(GMP_VERSION)
+GMP_DIR = $(ANDR_ROOT)/deps/gmp-$(GMP_VERSION)
 GMP_LIB = $(GMP_DIR)/usr/lib/libgmp.so
 GMP_TIMESTAMP = $(GMP_DIR)/timestamp
-GMP_TIMESTAMP_INT = $(ROOT)/deps/gmp_timestamp
+GMP_TIMESTAMP_INT = $(ANDR_ROOT)/deps/gmp_timestamp
 GMP_URL_HTTP = https://gmplib.org/download/gmp/gmp-$(GMP_VERSION).tar.bz2
 
-FREETYPE_DIR = $(ROOT)/deps/freetype2-android/
+FREETYPE_DIR = $(ANDR_ROOT)/deps/freetype2-android/
 FREETYPE_LIB = $(FREETYPE_DIR)/Android/obj/local/$(TARGET_ABI)/libfreetype2-static.a
 FREETYPE_TIMESTAMP = $(FREETYPE_DIR)timestamp
-FREETYPE_TIMESTAMP_INT = $(ROOT)/deps/freetype_timestamp
+FREETYPE_TIMESTAMP_INT = $(ANDR_ROOT)/deps/freetype_timestamp
 FREETYPE_URL_GIT = https://github.com/cdave1/freetype2-android
 
 ICONV_VERSION = 1.14
-ICONV_DIR = $(ROOT)/deps/libiconv/
+ICONV_DIR = $(ANDR_ROOT)/deps/libiconv/
 ICONV_LIB = $(ICONV_DIR)/lib/.libs/libiconv.so
 ICONV_TIMESTAMP = $(ICONV_DIR)timestamp
-ICONV_TIMESTAMP_INT = $(ROOT)/deps/iconv_timestamp
+ICONV_TIMESTAMP_INT = $(ANDR_ROOT)/deps/iconv_timestamp
 ICONV_URL_HTTP = http://ftp.gnu.org/pub/gnu/libiconv/libiconv-$(ICONV_VERSION).tar.gz
 
 SQLITE3_FOLDER = sqlite-amalgamation-3120200
 SQLITE3_URL = http://www.sqlite.org/2016/$(SQLITE3_FOLDER).zip
 
--include $(PATHCFGFILE)
+ANDROID_SDK = $(shell grep '^sdk\.dir' local.properties | sed 's/^.*=[[:space:]]*//')
+ANDROID_NDK = $(shell grep '^ndk\.dir' local.properties | sed 's/^.*=[[:space:]]*//')
+NDK_MODULE_PATH = $(ANDROID_NDK)/toolchains
 
 #use interim target variable to switch leveldb on or off
 ifeq ($(HAVE_LEVELDB),1)
@@ -151,54 +145,50 @@ endif
 	freetype_download clean_freetype freetype \
 	apk clean_apk \
 	clean_all clean prep_srcdir \
-	install_debug install envpaths all \
-	manifest clean_manifest\
+	install_debug install_release envpaths all \
 	$(ASSETS_TIMESTAMP) $(LEVELDB_TIMESTAMP) \
 	$(OPENAL_TIMESTAMP) $(OGG_TIMESTAMP) \
 	$(IRRLICHT_TIMESTAMP) $(CURL_TIMESTAMP) \
 	$(OPENSSL_TIMESTAMP) \
-	$(ROOT)/jni/src/android_version.h \
-	$(ROOT)/jni/src/android_version_githash.h
+	$(ANDR_ROOT)/jni/src/android_version.h \
+	$(ANDR_ROOT)/jni/src/android_version_githash.h
 
-debug : $(PATHCFGFILE)
+debug : local.properties
 	export NDEBUG=;                                                            \
 	export BUILD_TYPE=debug;                                                   \
 	$(MAKE) apk
 
 all : debug release
 
-release : $(PATHCFGFILE)
+release : local.properties
 	@export NDEBUG=1;                                                          \
 	export BUILD_TYPE=release;                                                 \
 	$(MAKE) apk
 
 reconfig: delconfig
-	@$(MAKE) $(PATHCFGFILE)
+	@$(MAKE) local.properties
 
-delconfig :
-	$(RM) ${PATHCFGFILE}
+delconfig:
+	$(RM) local.properties
 
-$(PATHCFGFILE) :
+local.properties:
 	@echo "Please specify path of ANDROID NDK";                                \
-	echo "e.g. /home/user/android-ndk-r9c/";                                   \
+	echo "e.g. $$HOME/Android/ndk-r11c/";                                  \
 	read ANDROID_NDK ;                                                         \
 	if [ ! -d $$ANDROID_NDK ] ; then                                           \
 		echo "$$ANDROID_NDK is not a valid folder";                            \
 		exit 1;                                                                \
 	fi;                                                                        \
-	echo "ANDROID_NDK = $$ANDROID_NDK" > ${PATHCFGFILE};                       \
-	echo "NDK_MODULE_PATH = $$ANDROID_NDK/toolchains" >> ${PATHCFGFILE};            \
-	echo "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++";\
-	echo "+ Note: NDK_MODULE_PATH is set to $$ANDROID_NDK/toolchains";              \
-	echo "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++";\
+	echo "ndk.dir = $$ANDROID_NDK" > local.properties;                         \
 	echo "Please specify path of ANDROID SDK";                                 \
-	echo "e.g. /home/user/adt-bundle-linux-x86_64-20131030/sdk/";              \
+	echo "e.g. $$HOME/Android/sdk/";                                       \
 	read SDKFLDR ;                                                             \
 	if [ ! -d $$SDKFLDR ] ; then                                               \
 		echo "$$SDKFLDR is not a valid folder";                                \
 		exit 1;                                                                \
 	fi;                                                                        \
-	echo "SDKFOLDER = $$SDKFLDR" >> ${PATHCFGFILE};
+	echo "sdk.dir = $$SDKFLDR" >> local.properties;
+
 
 $(OPENAL_TIMESTAMP) : openal_download
 	@LAST_MODIF=$$(find ${OPENAL_DIR} -type f -printf '%T@ %p\n' | sort -n | tail -1 | cut -f2- -d" "); \
@@ -209,8 +199,8 @@ $(OPENAL_TIMESTAMP) : openal_download
 openal_download :
 	@if [ ! -d ${OPENAL_DIR} ] ; then                                          \
 		echo "openal sources missing, downloading...";                         \
-		mkdir -p ${ROOT}/deps;                                                 \
-		cd ${ROOT}/deps ;                                                      \
+		mkdir -p ${ANDR_ROOT}/deps;                                            \
+		cd ${ANDR_ROOT}/deps ;                                                 \
 		git clone ${OPENAL_URL_GIT} || exit 1;                                 \
 	fi
 
@@ -225,14 +215,14 @@ $(OPENAL_LIB): $(OPENAL_TIMESTAMP)
 		REFRESH=1;                                                             \
 	fi;                                                                        \
 	if [ $$REFRESH -ne 0 ] ; then                                              \
-	export PATH=$$PATH:${SDKFOLDER}/platform-tools:${ANDROID_NDK};             \
 	echo "changed timestamp for openal detected building...";                  \
 	cd ${OPENAL_DIR};                                                          \
-	ndk-build NDEBUG=${NDEBUG} NDK_MODULE_PATH=${NDK_MODULE_PATH}              \
-	APP_ABI=${TARGET_ABI} TARGET_ARCH_ABI=${TARGET_ABI}                        \
-	APP_PLATFORM=${APP_PLATFORM} TARGET_CFLAGS+="${TARGET_CFLAGS_ADDON}"       \
-	TARGET_LDFLAGS+="${TARGET_LDFLAGS_ADDON}"                                  \
-	TARGET_CXXFLAGS+="${TARGET_CXXFLAGS_ADDON}" || exit 1;                     \
+	${ANDROID_NDK}/ndk-build NDEBUG=${NDEBUG}                                  \
+		NDK_MODULE_PATH=${NDK_MODULE_PATH} APP_ABI=${TARGET_ABI}               \
+		TARGET_ARCH_ABI=${TARGET_ABI} APP_PLATFORM=${APP_PLATFORM}             \
+		TARGET_CFLAGS+="${TARGET_CFLAGS_ADDON}"                                \
+		TARGET_LDFLAGS+="${TARGET_LDFLAGS_ADDON}"                              \
+		TARGET_CXXFLAGS+="${TARGET_CXXFLAGS_ADDON}" || exit 1;                 \
 	touch ${OPENAL_TIMESTAMP};                                                 \
 	touch ${OPENAL_TIMESTAMP_INT};                                             \
 	else                                                                       \
@@ -251,11 +241,11 @@ $(OGG_TIMESTAMP) : ogg_download
 ogg_download :
 	@if [ ! -d ${OGG_DIR} ] ; then                                             \
 		echo "ogg sources missing, downloading...";                            \
-		mkdir -p ${ROOT}/deps;                                                 \
-		cd ${ROOT}/deps ;                                                      \
+		mkdir -p ${ANDR_ROOT}/deps;                                            \
+		cd ${ANDR_ROOT}/deps ;                                                 \
 		git clone ${OGG_URL_GIT}|| exit 1;                                     \
 		cd libvorbis-libogg-android ;                                          \
-		patch -p1 < ../../libvorbis-libogg-fpu.patch || exit 1;                \
+		patch -p1 < ${ANDR_ROOT}/patches/libvorbis-libogg-fpu.patch || exit 1; \
 		sed -i 's-:-?-' jni/Application.mk;                                    \
 	fi
 
@@ -271,14 +261,14 @@ $(OGG_LIB): $(OGG_TIMESTAMP)
 		REFRESH=1;                                                             \
 	fi;                                                                        \
 	if [ $$REFRESH -ne 0 ] ; then                                              \
-	export PATH=$$PATH:${SDKFOLDER}/platform-tools:${ANDROID_NDK};             \
 	echo "changed timestamp for ogg detected building...";                     \
 	cd ${OGG_DIR};                                                             \
-	ndk-build NDEBUG=${NDEBUG} NDK_MODULE_PATH=${NDK_MODULE_PATH}              \
-	APP_ABI=${TARGET_ABI} APP_PLATFORM=${APP_PLATFORM}                         \
-	TARGET_CFLAGS+="${TARGET_CFLAGS_ADDON}"                                    \
-	TARGET_LDFLAGS+="${TARGET_LDFLAGS_ADDON}"                                  \
-	TARGET_CXXFLAGS+="${TARGET_CXXFLAGS_ADDON}" || exit 1;                     \
+	${ANDROID_NDK}/ndk-build NDEBUG=${NDEBUG}                                  \
+		NDK_MODULE_PATH=${NDK_MODULE_PATH}                                     \
+		APP_ABI=${TARGET_ABI} APP_PLATFORM=${APP_PLATFORM}                     \
+		TARGET_CFLAGS+="${TARGET_CFLAGS_ADDON}"                                \
+		TARGET_LDFLAGS+="${TARGET_LDFLAGS_ADDON}"                              \
+		TARGET_CXXFLAGS+="${TARGET_CXXFLAGS_ADDON}" || exit 1;                 \
 	touch ${OGG_TIMESTAMP};                                                    \
 	touch ${OGG_TIMESTAMP_INT};                                                \
 	else                                                                       \
@@ -297,12 +287,12 @@ $(OPENSSL_TIMESTAMP) : openssl_download
 openssl_download :
 	@if [ ! -d ${OPENSSL_DIR} ] ; then                                         \
 		echo "openssl sources missing, downloading...";                        \
-		mkdir -p ${ROOT}/deps;                                                 \
-		cd ${ROOT}/deps ;                                                      \
+		mkdir -p ${ANDR_ROOT}/deps;                                            \
+		cd ${ANDR_ROOT}/deps ;                                                 \
 		wget ${OPENSSL_URL} || exit 1;                                         \
 		tar -xzf ${OPENSSL_BASEDIR}.tar.gz;                                    \
 		cd ${OPENSSL_BASEDIR};                                                 \
-		patch -p1 < ../../openssl_arch.patch;                                  \
+		patch -p1 < ${ANDR_ROOT}/patches/openssl_arch.patch;                   \
 	fi
 
 openssl : $(OPENSSL_LIB)
@@ -322,8 +312,8 @@ $(OPENSSL_LIB): $(OPENSSL_TIMESTAMP) $(GMP_LIB)
 	ln -s ${OPENSSL_DIR} ../openssl;                                           \
 	export TOOLCHAIN=/tmp/ndk-${TARGET_HOST}-openssl;                          \
 	${ANDROID_NDK}/build/tools/make-standalone-toolchain.sh                    \
-	--toolchain=${TARGET_TOOLCHAIN}${COMPILER_VERSION}                         \
-	--install-dir=$${TOOLCHAIN};                                               \
+		--toolchain=${TARGET_TOOLCHAIN}${COMPILER_VERSION}                     \
+		--install-dir=$${TOOLCHAIN};                                           \
 	export PATH="$${TOOLCHAIN}/bin:$${PATH}";                                  \
 	CC=${CROSS_PREFIX}gcc ./Configure enable-gmp -DL_ENDIAN -I${GMP_DIR} -L${GMP_DIR}/usr/lib android-${TARGET_ARCH};\
 	CC=${CROSS_PREFIX}gcc ANDROID_DEV=/tmp/ndk-${TARGET_HOST} make depend;     \
@@ -337,8 +327,8 @@ $(OPENSSL_LIB): $(OPENSSL_TIMESTAMP) $(GMP_LIB)
 
 clean_openssl :
 	$(RM) -rf ${OPENSSL_DIR};                                                  \
-	$(RM) -rf $(ROOT)/deps/${OPENSSL_BASEDIR}.tar.gz;                          \
-	$(RM) -rf $(ROOT)/deps/openssl
+	$(RM) -rf $(ANDR_ROOT)/deps/${OPENSSL_BASEDIR}.tar.gz;                     \
+	$(RM) -rf $(ANDR_ROOT)/deps/openssl
 
 $(LEVELDB_TIMESTAMP) : leveldb_download
 	@LAST_MODIF=$$(find ${LEVELDB_DIR} -type f -printf '%T@ %p\n' | sort -n | tail -1 | cut -f2- -d" "); \
@@ -349,8 +339,8 @@ $(LEVELDB_TIMESTAMP) : leveldb_download
 leveldb_download :
 	@if [ ! -d ${LEVELDB_DIR} ] ; then                                         \
 		echo "leveldb sources missing, downloading...";                        \
-		mkdir -p ${ROOT}/deps;                                                 \
-		cd ${ROOT}/deps ;                                                      \
+		mkdir -p ${ANDR_ROOT}/deps;                                            \
+		cd ${ANDR_ROOT}/deps ;                                                 \
 		git clone ${LEVELDB_URL_GIT} || exit 1;                                \
 		cd ${LEVELDB_DIR} || exit 1;                                           \
 		git checkout ${LEVELDB_COMMIT} || exit 1;                              \
@@ -367,22 +357,21 @@ $(LEVELDB_LIB): $(LEVELDB_TIMESTAMP)
 		REFRESH=1;                                                             \
 	fi;                                                                        \
 	if [ $$REFRESH -ne 0 ] ; then                                              \
-	export PATH=$${PATH}:${SDKFOLDER}/platform-tools:${ANDROID_NDK};           \
 	echo "changed timestamp for leveldb detected building...";                 \
 	cd deps/leveldb;                                                           \
 	export CROSS_PREFIX=${CROSS_PREFIX};                                       \
 	export TOOLCHAIN=/tmp/ndk-${TARGET_HOST}-leveldb;                          \
 	${ANDROID_NDK}/build/tools/make-standalone-toolchain.sh                    \
-	--toolchain=${TARGET_TOOLCHAIN}${COMPILER_VERSION}                         \
-	--install-dir=$${TOOLCHAIN};                                               \
+		--toolchain=${TARGET_TOOLCHAIN}${COMPILER_VERSION}                     \
+		--install-dir=$${TOOLCHAIN};                                           \
 	export PATH="$${TOOLCHAIN}/bin:$${PATH}";                                  \
 	export CC=${CROSS_PREFIX}gcc;                                              \
 	export CXX=${CROSS_PREFIX}g++;                                             \
 	export CFLAGS="$${CFLAGS} ${TARGET_CFLAGS_ADDON}";                         \
-	export CPPFLAGS="$${CPPFLAGS} ${TARGET_CFLAGS_ADDON}";                     \
+	export CPPFLAGS="$${CPPFLAGS} ${TARGET_CXXFLAGS_ADDON}";                     \
 	export LDFLAGS="$${LDFLAGS} ${TARGET_LDFLAGS_ADDON}";                      \
 	export TARGET_OS=OS_ANDROID_CROSSCOMPILE;                                  \
-	$(MAKE) -s || exit 1;                                                      \
+	$(MAKE) || exit 1;                                                      \
 	touch ${LEVELDB_TIMESTAMP};                                                \
 	touch ${LEVELDB_TIMESTAMP_INT};                                            \
 	$(RM) -rf $${TOOLCHAIN};                                                   \
@@ -402,7 +391,7 @@ $(FREETYPE_TIMESTAMP) : freetype_download
 freetype_download :
 	@if [ ! -d ${FREETYPE_DIR} ] ; then                                        \
 		echo "freetype sources missing, downloading...";                       \
-		mkdir -p ${ROOT}/deps;                                                 \
+		mkdir -p ${ANDR_ROOT}/deps;                                            \
 		cd deps;                                                               \
 		git clone ${FREETYPE_URL_GIT} || exit 1;                               \
 	fi
@@ -422,14 +411,14 @@ $(FREETYPE_LIB) : $(FREETYPE_TIMESTAMP)
 	fi;                                                                        \
 	if [ $$REFRESH -ne 0 ] ; then                                              \
 	mkdir -p ${FREETYPE_DIR};                                                  \
-	export PATH=$$PATH:${SDKFOLDER}/platform-tools:${ANDROID_NDK};             \
 	echo "changed timestamp for freetype detected building...";                \
 	cd ${FREETYPE_DIR}/Android/jni;                                            \
-	ndk-build NDEBUG=${NDEBUG} NDK_MODULE_PATH=${NDK_MODULE_PATH}              \
-	APP_PLATFORM=${APP_PLATFORM} APP_ABI=${TARGET_ABI}                         \
-	TARGET_CFLAGS+="${TARGET_CFLAGS_ADDON}"                                    \
-	TARGET_LDFLAGS+="${TARGET_LDFLAGS_ADDON}"                                  \
-	TARGET_CXXFLAGS+="${TARGET_CXXFLAGS_ADDON}" || exit 1;                     \
+	${ANDROID_NDK}/ndk-build NDEBUG=${NDEBUG}                                  \
+		NDK_MODULE_PATH=${NDK_MODULE_PATH}                                     \
+		APP_PLATFORM=${APP_PLATFORM} APP_ABI=${TARGET_ABI}                     \
+		TARGET_CFLAGS+="${TARGET_CFLAGS_ADDON}"                                \
+		TARGET_LDFLAGS+="${TARGET_LDFLAGS_ADDON}"                              \
+		TARGET_CXXFLAGS+="${TARGET_CXXFLAGS_ADDON}" || exit 1;                 \
 	touch ${FREETYPE_TIMESTAMP};                                               \
 	touch ${FREETYPE_TIMESTAMP_INT};                                           \
 	else                                                                       \
@@ -448,15 +437,15 @@ $(ICONV_TIMESTAMP) : iconv_download
 iconv_download :
 	@if [ ! -d ${ICONV_DIR} ] ; then                                           \
 		echo "iconv sources missing, downloading...";                      \
-		mkdir -p ${ROOT}/deps;                                             \
-		cd ${ROOT}/deps;                                                   \
+		mkdir -p ${ANDR_ROOT}/deps;                                        \
+		cd ${ANDR_ROOT}/deps;                                              \
 		wget ${ICONV_URL_HTTP} || exit 1;                                  \
 		tar -xzf libiconv-${ICONV_VERSION}.tar.gz || exit 1;               \
 		rm libiconv-${ICONV_VERSION}.tar.gz;                               \
 		ln -s libiconv-${ICONV_VERSION} libiconv;                          \
 		cd ${ICONV_DIR};                                                   \
-		patch -p1 < ${ROOT}/libiconv_android.patch;                        \
-		patch -p1 < ${ROOT}/libiconv_stdio.patch;                          \
+		patch -p1 < ${ANDR_ROOT}/patches/libiconv_android.patch;           \
+		patch -p1 < ${ANDR_ROOT}/patches/libiconv_stdio.patch;             \
 	fi
 
 iconv : $(ICONV_LIB)
@@ -474,14 +463,13 @@ $(ICONV_LIB) : $(ICONV_TIMESTAMP)
 	fi;                                                                        \
 	if [ $$REFRESH -ne 0 ] ; then                                              \
 	mkdir -p ${ICONV_DIR};                                                     \
-	export PATH=$$PATH:${SDKFOLDER}/platform-tools:${ANDROID_NDK};             \
 	echo "changed timestamp for iconv detected building...";                   \
 	cd ${ICONV_DIR};                                                           \
 	\
 	export TOOLCHAIN=/tmp/ndk-${TARGET_HOST}-iconv;                            \
 	${ANDROID_NDK}/build/tools/make-standalone-toolchain.sh                    \
-	--toolchain=${TARGET_TOOLCHAIN}${COMPILER_VERSION}                         \
-	--install-dir=$${TOOLCHAIN};                                               \
+		--toolchain=${TARGET_TOOLCHAIN}${COMPILER_VERSION}                     \
+		--install-dir=$${TOOLCHAIN};                                           \
 	export PATH="$${TOOLCHAIN}/bin:$${PATH}";                                  \
 	export CC=${CROSS_PREFIX}gcc;                                              \
 	export CXX=${CROSS_PREFIX}g++;                                             \
@@ -508,13 +496,13 @@ clean_iconv :
 irrlicht_download :
 	@if [ ! -d "deps/irrlicht" ] ; then                                        \
 		echo "irrlicht sources missing, downloading...";                       \
-		mkdir -p ${ROOT}/deps;                                                 \
+		mkdir -p ${ANDR_ROOT}/deps;                                            \
 		cd deps;                                                               \
 		svn co ${IRRLICHT_URL_SVN} irrlicht || exit 1;                         \
 		cd irrlicht;                                                           \
-		patch -p1 < ../../irrlicht-touchcount.patch || exit 1;                 \
-		patch -p1 < ../../irrlicht-back_button.patch || exit 1;                \
-		patch -p1 < ../../irrlicht-texturehack.patch || exit 1;                \
+		patch -p1 < ${ANDR_ROOT}/patches/irrlicht-touchcount.patch || exit 1;  \
+		patch -p1 < ${ANDR_ROOT}/patches/irrlicht-back_button.patch || exit 1; \
+		patch -p1 < ${ANDR_ROOT}/patches/irrlicht-texturehack.patch || exit 1; \
 	fi
 
 $(IRRLICHT_TIMESTAMP) : irrlicht_download
@@ -538,14 +526,14 @@ $(IRRLICHT_LIB): $(IRRLICHT_TIMESTAMP) $(FREETYPE_LIB)
 	fi;                                                                        \
 	if [ $$REFRESH -ne 0 ] ; then                                              \
 	mkdir -p ${IRRLICHT_DIR};                                                  \
-	export PATH=$$PATH:${SDKFOLDER}/platform-tools:${ANDROID_NDK};             \
 	echo "changed timestamp for irrlicht detected building...";                \
 	cd deps/irrlicht/source/Irrlicht/Android;                                  \
-	ndk-build NDEBUG=${NDEBUG} NDK_MODULE_PATH=${NDK_MODULE_PATH}              \
-	APP_ABI=${TARGET_ABI} APP_PLATFORM=${APP_PLATFORM}                         \
-	TARGET_CFLAGS+="${TARGET_CFLAGS_ADDON}"                                    \
-	TARGET_LDFLAGS+="${TARGET_LDFLAGS_ADDON}"                                  \
-	TARGET_CXXFLAGS+="${TARGET_CXXFLAGS_ADDON}" || exit 1;                     \
+	${ANDROID_NDK}/ndk-build NDEBUG=${NDEBUG}                                  \
+		NDK_MODULE_PATH=${NDK_MODULE_PATH}                                     \
+		APP_ABI=${TARGET_ABI} APP_PLATFORM=${APP_PLATFORM}                     \
+		TARGET_CFLAGS+="${TARGET_CFLAGS_ADDON}"                                \
+		TARGET_LDFLAGS+="${TARGET_LDFLAGS_ADDON}"                              \
+		TARGET_CXXFLAGS+="${TARGET_CXXFLAGS_ADDON}" || exit 1;                 \
 	touch ${IRRLICHT_TIMESTAMP};                                               \
 	touch ${IRRLICHT_TIMESTAMP_INT};                                           \
 	else                                                                       \
@@ -564,7 +552,7 @@ $(CURL_TIMESTAMP) : curl_download
 curl_download :
 	@if [ ! -d "deps/curl-${CURL_VERSION}" ] ; then                            \
 		echo "curl sources missing, downloading...";                           \
-		mkdir -p ${ROOT}/deps;                                                 \
+		mkdir -p ${ANDR_ROOT}/deps;                                            \
 		cd deps;                                                               \
 		wget ${CURL_URL_HTTP} || exit 1;                                       \
 		tar -xjf curl-${CURL_VERSION}.tar.bz2 || exit 1;                       \
@@ -587,20 +575,18 @@ $(CURL_LIB): $(CURL_TIMESTAMP) $(OPENSSL_LIB)
 	fi;                                                                        \
 	if [ $$REFRESH -ne 0 ] ; then                                              \
 	mkdir -p ${CURL_DIR};                                                      \
-	export PATH="$${PATH}:${SDKFOLDER}/platform-tools:${ANDROID_NDK}";         \
 	echo "changed timestamp for curl detected building...";                    \
 	cd deps/curl-${CURL_VERSION};                                              \
 	export CROSS_PREFIX=${CROSS_PREFIX};                                       \
 	export TOOLCHAIN=/tmp/ndk-${TARGET_HOST}-curl;                             \
 	${ANDROID_NDK}/build/tools/make-standalone-toolchain.sh                    \
-	--toolchain=${TARGET_TOOLCHAIN}${COMPILER_VERSION}                         \
-	--install-dir=$${TOOLCHAIN};                                               \
+		--toolchain=${TARGET_TOOLCHAIN}${COMPILER_VERSION}                     \
+		--install-dir=$${TOOLCHAIN};                                           \
 	export PATH="$${TOOLCHAIN}/bin:$${PATH}";                                  \
 	export CC=${CROSS_PREFIX}gcc;                                              \
 	export CXX=${CROSS_PREFIX}g++;                                             \
 	export TARGET_OS=OS_ANDROID_CROSSCOMPILE;                                  \
-	export CPPFLAGS="$${CPPFLAGS} -I${OPENSSL_DIR}/include                     \
-	${TARGET_CFLAGS_ADDON}";                                                   \
+	export CPPFLAGS="$${CPPFLAGS} -I${OPENSSL_DIR}/include ${TARGET_CFLAGS_ADDON}"; \
 	export CFLAGS="$${CFLAGS} ${TARGET_CFLAGS_ADDON}";                         \
 	export LDFLAGS="$${LDFLAGS} -L${OPENSSL_DIR} ${TARGET_LDFLAGS_ADDON}";     \
 	./configure --host=${TARGET_HOST} --disable-shared --enable-static --with-ssl;  \
@@ -625,7 +611,7 @@ $(GMP_TIMESTAMP) : gmp_download
 gmp_download :
 	@if [ ! -d "${GMP_DIR}" ] ; then                                           \
 		echo "gmp sources missing, downloading...";                        \
-		mkdir -p ${ROOT}/deps;                                             \
+		mkdir -p ${ANDR_ROOT}/deps;                                        \
 		cd deps;                                                           \
 		wget ${GMP_URL_HTTP} || exit 1;                                    \
 		tar -xjf gmp-${GMP_VERSION}.tar.bz2 || exit 1;                     \
@@ -648,14 +634,13 @@ $(GMP_LIB): $(GMP_TIMESTAMP)
 	fi;                                                                        \
 	if [ $$REFRESH -ne 0 ] ; then                                              \
 	mkdir -p ${GMP_DIR};                                                       \
-	export PATH="$${PATH}:${SDKFOLDER}/platform-tools:${ANDROID_NDK}";         \
 	echo "changed timestamp for gmp detected building...";                     \
 	cd deps/gmp-${GMP_VERSION};                                                \
 	export CROSS_PREFIX=${CROSS_PREFIX};                                       \
 	export TOOLCHAIN=/tmp/ndk-${TARGET_HOST}-gmp;                              \
 	${ANDROID_NDK}/build/tools/make-standalone-toolchain.sh                    \
-	--toolchain=${TARGET_TOOLCHAIN}${COMPILER_VERSION}                         \
-	--install-dir=$${TOOLCHAIN};                                               \
+		--toolchain=${TARGET_TOOLCHAIN}${COMPILER_VERSION}                     \
+		--install-dir=$${TOOLCHAIN};                                           \
 	export PATH="$${TOOLCHAIN}/bin:$${PATH}";                                  \
 	export CC=${CROSS_PREFIX}gcc;                                              \
 	export CXX=${CROSS_PREFIX}g++;                                             \
@@ -687,11 +672,11 @@ clean_sqlite3:
 	$(RM) -f sqlite
 
 $(ASSETS_TIMESTAMP) : $(IRRLICHT_LIB)
-	@mkdir -p ${ROOT}/deps;                                                     \
+	@mkdir -p ${ANDR_ROOT}/deps;                                                \
 	for DIRNAME in {builtin,client,doc,fonts,games,mods,po,textures}; do        \
-		LAST_MODIF=$$(find ${ROOT}/../../${DIRNAME} -type f -printf '%T@ %p\n' | sort -n | tail -1 | cut -f2- -d" "); \
+		LAST_MODIF=$$(find ${PROJ_ROOT}/${DIRNAME} -type f -printf '%T@ %p\n' | sort -n | tail -1 | cut -f2- -d" "); \
 		if [ $$(basename $$LAST_MODIF) != "timestamp" ]; then               \
-			touch ${ROOT}/../../${DIRNAME}/timestamp;                   \
+			touch ${PROJ_ROOT}/${DIRNAME}/timestamp;                   \
 			touch ${ASSETS_TIMESTAMP};                                  \
 			echo ${DIRNAME} changed $$LAST_MODIF;                       \
 		fi;                                                                 \
@@ -701,11 +686,11 @@ $(ASSETS_TIMESTAMP) : $(IRRLICHT_LIB)
 		touch ${IRRLICHT_DIR}/media/timestamp;                                 \
 		touch ${ASSETS_TIMESTAMP};                                             \
 	fi;                                                                        \
-	if [ ${ROOT}/../../minetest.conf.example -nt ${ASSETS_TIMESTAMP} ] ; then  \
+	if [ ${PROJ_ROOT}/minetest.conf.example -nt ${ASSETS_TIMESTAMP} ] ; then   \
 		echo "conf changed";                                                   \
 		touch ${ASSETS_TIMESTAMP};                                             \
 	fi;                                                                        \
-	if [ ${ROOT}/../../README.txt -nt ${ASSETS_TIMESTAMP} ] ; then             \
+	if [ ${PROJ_ROOT}/README.txt -nt ${ASSETS_TIMESTAMP} ] ; then              \
 		touch ${ASSETS_TIMESTAMP};                                             \
 	fi;                                                                        \
 	if [ ! -e $(ASSETS_TIMESTAMP) ] ; then                                     \
@@ -720,34 +705,34 @@ assets : $(ASSETS_TIMESTAMP)
 	if [ ${ASSETS_TIMESTAMP} -nt ${ASSETS_TIMESTAMP}.old ] ; then              \
 		REFRESH=1;                                                             \
 	fi;                                                                        \
-	if [ ! -d ${ROOT}/assets ] ; then                                          \
+	if [ ! -d ${APP_ROOT}/assets ] ; then                                      \
 		REFRESH=1;                                                             \
 	fi;                                                                        \
 	if [ $$REFRESH -ne 0 ] ; then                                              \
 	echo "assets changed, refreshing...";                                      \
 	$(MAKE) clean_assets;                                                      \
-	mkdir -p ${ROOT}/assets/Minetest;                                          \
-	cp ${ROOT}/../../minetest.conf.example ${ROOT}/assets/Minetest;            \
-	cp ${ROOT}/../../README.txt ${ROOT}/assets/Minetest;                       \
-	cp -r ${ROOT}/../../builtin ${ROOT}/assets/Minetest;                       \
-	mkdir ${ROOT}/assets/Minetest/client;                                      \
-	cp -r ${ROOT}/../../client/shaders ${ROOT}/assets/Minetest/client;         \
-	cp ${ROOT}/../../doc/lgpl-2.1.txt ${ROOT}/assets/Minetest/LICENSE.txt;     \
-	mkdir ${ROOT}/assets/Minetest/fonts;                                       \
-	cp -r ${ROOT}/../../fonts/*.ttf ${ROOT}/assets/Minetest/fonts/;            \
-	mkdir ${ROOT}/assets/Minetest/games;                                       \
+	mkdir -p ${APP_ROOT}/assets/Minetest;                                      \
+	cp ${PROJ_ROOT}/minetest.conf.example ${APP_ROOT}/assets/Minetest;         \
+	cp ${PROJ_ROOT}/README.txt ${APP_ROOT}/assets/Minetest;                    \
+	cp -r ${PROJ_ROOT}/builtin ${APP_ROOT}/assets/Minetest;                    \
+	mkdir -p ${APP_ROOT}/assets/Minetest/client;                                  \
+	cp -r ${PROJ_ROOT}/client/shaders ${APP_ROOT}/assets/Minetest/client;      \
+	cp ${PROJ_ROOT}/doc/lgpl-2.1.txt ${APP_ROOT}/assets/Minetest/LICENSE.txt;  \
+	mkdir -p ${APP_ROOT}/assets/Minetest/fonts;                                   \
+	cp -r ${PROJ_ROOT}/fonts/*.ttf ${APP_ROOT}/assets/Minetest/fonts/;         \
+	mkdir -p ${APP_ROOT}/assets/Minetest/games;                                   \
 	for game in ${GAMES_TO_COPY}; do                                           \
-	    cp -r ${ROOT}/../../games/$$game ${ROOT}/assets/Minetest/games/;       \
+	    cp -r ${PROJ_ROOT}/games/$$game ${APP_ROOT}/assets/Minetest/games/;    \
 	done;                                                                      \
-	mkdir ${ROOT}/assets/Minetest/mods;                                        \
+	mkdir -p ${APP_ROOT}/assets/Minetest/mods;                                    \
 	for mod in ${MODS_TO_COPY}; do                                             \
-	    cp -r ${ROOT}/../../mods/$$mod ${ROOT}/assets/Minetest/mods/;          \
+	    cp -r ${PROJ_ROOT}/mods/$$mod ${APP_ROOT}/assets/Minetest/mods/;       \
 	done;                                                                      \
-	cp -r ${ROOT}/../../po ${ROOT}/assets/Minetest;                            \
-	cp -r ${ROOT}/../../textures ${ROOT}/assets/Minetest;                      \
-	mkdir -p ${ROOT}/assets/Minetest/media;                                    \
-	cp -r ${IRRLICHT_DIR}/media/Shaders ${ROOT}/assets/Minetest/media;         \
-	cd ${ROOT}/assets ||  exit 1;                                              \
+	cp -r ${PROJ_ROOT}/po ${APP_ROOT}/assets/Minetest;                         \
+	cp -r ${PROJ_ROOT}/textures ${APP_ROOT}/assets/Minetest;                   \
+	mkdir -p ${APP_ROOT}/assets/Minetest/media;                                \
+	cp -r ${IRRLICHT_DIR}/media/Shaders ${APP_ROOT}/assets/Minetest/media;     \
+	cd ${APP_ROOT}/assets ||  exit 1;                                          \
 	find . -name "timestamp" -exec rm {} \; ;                                  \
 	find . -name "*.blend" -exec rm {} \; ;                                    \
 	find . -name "*~" -exec rm {} \; ;                                         \
@@ -755,8 +740,8 @@ assets : $(ASSETS_TIMESTAMP)
 	find . -type d -path "*.svn" -exec rm -rf {} \; ;                          \
 	find . -type f -path "*.gitignore" -exec rm -rf {} \; ;                    \
 	ls -R | grep ":$$" | sed -e 's/:$$//' -e 's/\.//' -e 's/^\///' > "index.txt"; \
-	find Minetest >"filelist.txt";                                             \
-	cp ${ROOT}/${ASSETS_TIMESTAMP} ${ROOT}/${ASSETS_TIMESTAMP}.old;            \
+	find -L Minetest > filelist.txt;                                             \
+	cp ${ANDR_ROOT}/${ASSETS_TIMESTAMP} ${ANDR_ROOT}/${ASSETS_TIMESTAMP}.old;  \
 	else                                                                       \
 		echo "nothing to be done for assets";                                  \
 	fi
@@ -764,56 +749,50 @@ assets : $(ASSETS_TIMESTAMP)
 clean_assets :
 	@$(RM) -r assets
 
-apk: $(PATHCFGFILE) assets $(ICONV_LIB) $(IRRLICHT_LIB) $(CURL_LIB) $(GMP_LIB) $(LEVELDB_TARGET)       \
-	$(OPENAL_LIB) $(OGG_LIB) prep_srcdir $(ROOT)/jni/src/android_version.h     \
-	$(ROOT)/jni/src/android_version_githash.h sqlite3_download
-	@export NDEBUG=$$NDEBUG; $(MAKE) manifest;                                 \
-	export PATH=$$PATH:${SDKFOLDER}/platform-tools:${ANDROID_NDK};             \
-	export ANDROID_HOME=${SDKFOLDER};                                          \
-	mkdir -p ${ROOT}/src;                                                      \
-	ndk-build NDK_MODULE_PATH=${NDK_MODULE_PATH}                               \
-	GPROF=${GPROF} APP_ABI=${TARGET_ABI} HAVE_LEVELDB=${HAVE_LEVELDB}          \
-	APP_PLATFORM=${APP_PLATFORM}                                               \
-	TARGET_LIBDIR=${TARGET_LIBDIR}                                             \
-	TARGET_CFLAGS+="${TARGET_CFLAGS_ADDON}"                                    \
-	TARGET_LDFLAGS+="${TARGET_LDFLAGS_ADDON}"                                  \
-	TARGET_CXXFLAGS+="${TARGET_CXXFLAGS_ADDON}" &&                             \
-	ant $$BUILD_TYPE &&                                                        \
-	echo "++ Success!" &&                                                      \
-	echo "APK: bin/Minetest-$$BUILD_TYPE.apk" &&                               \
-	echo "You can install it with \`adb install -r bin/Minetest-$$BUILD_TYPE.apk\`"
+apk: local.properties assets $(ICONV_LIB) $(IRRLICHT_LIB) $(CURL_LIB) $(GMP_LIB) $(LEVELDB_TARGET)       \
+	$(OPENAL_LIB) $(OGG_LIB) prep_srcdir $(ANDR_ROOT)/jni/src/android_version.h    \
+	$(ANDR_ROOT)/jni/src/android_version_githash.h sqlite3_download
+	@${ANDROID_NDK}/ndk-build NDK_MODULE_PATH=${NDK_MODULE_PATH}               \
+		GPROF=${GPROF} APP_ABI=${TARGET_ABI} HAVE_LEVELDB=${HAVE_LEVELDB}      \
+		APP_PLATFORM=${APP_PLATFORM}                                           \
+		TARGET_LIBDIR=${TARGET_LIBDIR}                                         \
+		TARGET_CFLAGS+="${TARGET_CFLAGS_ADDON}"                                \
+		TARGET_LDFLAGS+="${TARGET_LDFLAGS_ADDON}"                              \
+		TARGET_CXXFLAGS+="${TARGET_CXXFLAGS_ADDON}" || exit 1;                 \
+	if [ ! -e ${APP_ROOT}/jniLibs ]; then                                      \
+		ln -s ${ANDR_ROOT}/libs ${APP_ROOT}/jniLibs || exit 1;                 \
+	fi;                                                                        \
+	export VERSION_STR="${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}" && \
+	export BUILD_TYPE_C=$$(echo "$${BUILD_TYPE}" | sed 's/./\U&/') &&          \
+	gradle assemble$$BUILD_TYPE_C &&                                           \
+	echo "APK stored at: build/outputs/apk/Minetest-$$BUILD_TYPE.apk" &&       \
+	echo "You can install it with \`make install_$$BUILD_TYPE\`"
+
+# These Intentionally doesn't depend on their respective build steps,
+# because it takes a while to verify that everything's up-to-date.
+install_debug:
+	${ANDROID_SDK}/platform-tools/adb install -r build/outputs/apk/Minetest-debug.apk
+
+install_release:
+	${ANDROID_SDK}/platform-tools/adb install -r build/outputs/apk/Minetest-release.apk
 
 prep_srcdir :
-	@if [ ! -e ${ROOT}/jni/src ]; then                                         \
-		ln -s ${ROOT}/../../src ${ROOT}/jni/src;                           \
+	@if [ ! -e ${ANDR_ROOT}/jni/src ]; then                                    \
+		ln -s ${PROJ_ROOT}/src ${ANDR_ROOT}/jni/src;                           \
 	fi
 
-clean_apk : manifest
-	@export PATH=$$PATH:${SDKFOLDER}platform-tools:${ANDROID_NDK};             \
-	export ANDROID_HOME=${SDKFOLDER};                                          \
-	ant clean
-
-install_debug :
-	@export PATH=$$PATH:${SDKFOLDER}platform-tools:${ANDROID_NDK};             \
-	adb install -r ${ROOT}/bin/Minetest-debug.apk
-
-install :
-	@export PATH=$$PATH:${SDKFOLDER}platform-tools:${ANDROID_NDK};             \
-	adb install -r ${ROOT}/bin/Minetest-release.apk
-
-envpaths :
-	@echo "export PATH=$$PATH:${SDKFOLDER}platform-tools:${ANDROID_NDK}" > and_env;\
-	echo "export ANDROID_HOME=${SDKFOLDER}" >> and_env;
+clean_apk :
+	gradle clean
 
 clean_all :
 	@$(MAKE) clean_apk;                                                        \
-	$(MAKE) clean_assets clean_iconv clean_irrlicht clean_leveldb clean_curl clean_openssl \
-	clean_openal clean_ogg clean_gmp clean_manifest;                           \
+	$(MAKE) clean_assets clean_iconv clean_irrlicht clean_leveldb clean_curl   \
+	clean_openssl clean_openal clean_ogg clean_gmp;                            \
 	sleep 1;                                                                   \
 	$(RM) -r gen libs obj deps bin Debug and_env
 
-$(ROOT)/jni/src/android_version_githash.h : prep_srcdir
-	@export VERSION_FILE=${ROOT}/jni/src/android_version_githash.h;            \
+$(ANDR_ROOT)/jni/src/android_version_githash.h : prep_srcdir
+	@export VERSION_FILE=${ANDR_ROOT}/jni/src/android_version_githash.h;        \
 	export VERSION_FILE_NEW=$${VERSION_FILE}.new;                              \
 	{                                                                          \
 	echo "#ifndef ANDROID_MT_VERSION_GITHASH_H";                               \
@@ -831,8 +810,8 @@ $(ROOT)/jni/src/android_version_githash.h : prep_srcdir
 	fi
 
 
-$(ROOT)/jni/src/android_version.h : prep_srcdir
-	@export VERSION_FILE=${ROOT}/jni/src/android_version.h;                    \
+$(ANDR_ROOT)/jni/src/android_version.h : prep_srcdir
+	@export VERSION_FILE=${ANDR_ROOT}/jni/src/android_version.h;                \
 	export VERSION_FILE_NEW=$${VERSION_FILE}.new;                              \
 	{                                                                          \
 	echo "#ifndef ANDROID_MT_VERSION_H";                                       \
@@ -851,22 +830,5 @@ $(ROOT)/jni/src/android_version.h : prep_srcdir
 		rm "$${VERSION_FILE_NEW}";                                         \
 	fi
 
-manifest :
-	@BASE_VERSION="${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}";        \
-	if [ "${NDEBUG}x" != "x" ] ; then                                          \
-		DBG='';                                                                \
-		DBG_FLAG="android:debuggable=\"false\"";                               \
-	else                                                                       \
-		DBG="<uses-permission android:name=\"android.permission.SET_DEBUG_APP\" />"; \
-		DBG_FLAG="android:debuggable=\"true\"";                                \
-	fi;                                                                        \
-	cat ${ROOT}/AndroidManifest.xml.template |                                 \
-	sed "s/###ANDROID_VERSION###/${ANDROID_VERSION_CODE}/g" |                  \
-	sed "s/###BASE_VERSION###/$$BASE_VERSION/g" |                              \
-	sed -e "s@###DEBUG_BUILD###@$$DBG@g" |                                     \
-	sed -e "s@###DEBUG_FLAG###@$$DBG_FLAG@g" >${ROOT}/AndroidManifest.xml
-
-clean_manifest :
-	rm -rf ${ROOT}/AndroidManifest.xml
-
 clean : clean_apk clean_assets
+
diff --git a/build/android/build.gradle b/build/android/build.gradle
new file mode 100644
index 000000000..3ce11bec3
--- /dev/null
+++ b/build/android/build.gradle
@@ -0,0 +1,49 @@
+buildscript {
+	repositories {
+		mavenCentral()
+	}
+	dependencies {
+		classpath "com.android.tools.build:gradle:1.5.0"
+	}
+}
+
+apply plugin: "com.android.application"
+
+android {
+	compileSdkVersion 23
+	buildToolsVersion "23.0.3"
+
+	defaultConfig {
+		versionCode 13
+		versionName "${System.env.VERSION_STR}.${versionCode}"
+		minSdkVersion 9
+		targetSdkVersion 9
+		applicationId "net.minetest.minetest"
+		manifestPlaceholders = [ package: "net.minetest.minetest", project: project.name ]
+	}
+
+	lintOptions {
+		disable "OldTargetApi", "GoogleAppIndexingWarning"
+	}
+
+	Properties props = new Properties()
+	props.load(new FileInputStream(file("local.properties")))
+
+	if (props.getProperty("keystore") != null) {
+		signingConfigs {
+			release {
+				storeFile file(props["keystore"])
+				storePassword props["keystore.password"]
+				keyAlias props["key"]
+				keyPassword props["key.password"]
+			}
+		}
+
+		buildTypes {
+			release {
+				signingConfig signingConfigs.release
+			}
+		}
+	}
+}
+
diff --git a/build/android/build.xml b/build/android/build.xml
deleted file mode 100644
index 50a3e95ac..000000000
--- a/build/android/build.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project name="Minetest" default="help">
-	<property file="local.properties" />
-	<property file="ant.properties" />
-	<property environment="env" />
-	<condition property="sdk.dir" value="${env.ANDROID_HOME}">
-		<isset property="env.ANDROID_HOME" />
-	</condition>
-	<loadproperties srcFile="project.properties" />
-	<fail
-		message="sdk.dir is missing. Make sure to generate local.properties using 'android update project' or to inject it through the ANDROID_HOME environment variable."
-		unless="sdk.dir"
-	/>
-	<import file="custom_rules.xml" optional="true" />
-	<import file="${sdk.dir}/tools/ant/build.xml" />
-</project>
diff --git a/build/android/jni/Android.mk b/build/android/jni/Android.mk
index 92738e6cc..e8534eaac 100644
--- a/build/android/jni/Android.mk
+++ b/build/android/jni/Android.mk
@@ -69,13 +69,13 @@ GPROF_DEF=-DGPROF
 endif
 
 LOCAL_CFLAGS := -D_IRR_ANDROID_PLATFORM_      \
-				-DHAVE_TOUCHSCREENGUI         \
-				-DUSE_CURL=1                  \
-				-DUSE_SOUND=1                 \
-				-DUSE_FREETYPE=1              \
-				-DUSE_LEVELDB=$(HAVE_LEVELDB) \
-				$(GPROF_DEF)                  \
-				-pipe -fstrict-aliasing
+		-DHAVE_TOUCHSCREENGUI         \
+		-DUSE_CURL=1                  \
+		-DUSE_SOUND=1                 \
+		-DUSE_FREETYPE=1              \
+		-DUSE_LEVELDB=$(HAVE_LEVELDB) \
+		$(GPROF_DEF)                  \
+		-pipe -fstrict-aliasing
 
 ifndef NDEBUG
 LOCAL_CFLAGS += -g -D_DEBUG -O0 -fno-omit-frame-pointer
@@ -95,8 +95,8 @@ ifeq ($(TARGET_ARCH_ABI),x86)
 LOCAL_CFLAGS += -fno-stack-protector
 endif
 
-LOCAL_C_INCLUDES :=                               \
-		jni/src jni/src/sqlite                    \
+LOCAL_C_INCLUDES := \
+		jni/src                                   \
 		jni/src/script                            \
 		jni/src/lua/src                           \
 		jni/src/json                              \
@@ -111,7 +111,7 @@ LOCAL_C_INCLUDES :=                               \
 		deps/leveldb/include                      \
 		deps/sqlite/
 
-LOCAL_SRC_FILES :=                                \
+LOCAL_SRC_FILES := \
 		jni/src/ban.cpp                           \
 		jni/src/camera.cpp                        \
 		jni/src/cavegen.cpp                       \
@@ -261,7 +261,7 @@ LOCAL_SRC_FILES :=                                \
 # intentionally kept out (we already build openssl itself): jni/src/util/sha256.c
 
 # Network
-LOCAL_SRC_FILES +=                                \
+LOCAL_SRC_FILES += \
 		jni/src/network/connection.cpp            \
 		jni/src/network/networkpacket.cpp         \
 		jni/src/network/clientopcodes.cpp         \
@@ -270,7 +270,7 @@ LOCAL_SRC_FILES +=                                \
 		jni/src/network/serverpackethandler.cpp   \
 
 # lua api
-LOCAL_SRC_FILES +=                                \
+LOCAL_SRC_FILES += \
 		jni/src/script/common/c_content.cpp       \
 		jni/src/script/common/c_converter.cpp     \
 		jni/src/script/common/c_internal.cpp      \
@@ -310,11 +310,10 @@ LOCAL_SRC_FILES +=                                \
 		jni/src/script/scripting_mainmenu.cpp
 
 #freetype2 support
-LOCAL_SRC_FILES +=                                \
-		jni/src/cguittfont/xCGUITTFont.cpp
+LOCAL_SRC_FILES += jni/src/cguittfont/xCGUITTFont.cpp
 
-# lua
-LOCAL_SRC_FILES +=                                \
+# Lua
+LOCAL_SRC_FILES += \
 		jni/src/lua/src/lapi.c                    \
 		jni/src/lua/src/lauxlib.c                 \
 		jni/src/lua/src/lbaselib.c                \
@@ -374,3 +373,4 @@ ifdef GPROF
 $(call import-module,android-ndk-profiler)
 endif
 $(call import-module,android/native_app_glue)
+
diff --git a/build/android/jni/Application.mk b/build/android/jni/Application.mk
index b7ffc56a1..53467059a 100644
--- a/build/android/jni/Application.mk
+++ b/build/android/jni/Application.mk
@@ -1,4 +1,4 @@
-# NDK_TOOLCHAIN_VERSION := clang3.3
+# NDK_TOOLCHAIN_VERSION := clang3.8
 
 APP_PLATFORM := android-9
 APP_MODULES := minetest
@@ -6,3 +6,4 @@ APP_STL := gnustl_static
 
 APP_CPPFLAGS += -fexceptions
 APP_GNUSTL_FORCE_CPP_FEATURES := rtti
+
diff --git a/build/android/irrlicht-back_button.patch b/build/android/patches/irrlicht-back_button.patch
similarity index 100%
rename from build/android/irrlicht-back_button.patch
rename to build/android/patches/irrlicht-back_button.patch
diff --git a/build/android/irrlicht-texturehack.patch b/build/android/patches/irrlicht-texturehack.patch
similarity index 100%
rename from build/android/irrlicht-texturehack.patch
rename to build/android/patches/irrlicht-texturehack.patch
diff --git a/build/android/irrlicht-touchcount.patch b/build/android/patches/irrlicht-touchcount.patch
similarity index 100%
rename from build/android/irrlicht-touchcount.patch
rename to build/android/patches/irrlicht-touchcount.patch
diff --git a/build/android/libiconv_android.patch b/build/android/patches/libiconv_android.patch
similarity index 100%
rename from build/android/libiconv_android.patch
rename to build/android/patches/libiconv_android.patch
diff --git a/build/android/libiconv_stdio.patch b/build/android/patches/libiconv_stdio.patch
similarity index 100%
rename from build/android/libiconv_stdio.patch
rename to build/android/patches/libiconv_stdio.patch
diff --git a/build/android/libvorbis-libogg-fpu.patch b/build/android/patches/libvorbis-libogg-fpu.patch
similarity index 100%
rename from build/android/libvorbis-libogg-fpu.patch
rename to build/android/patches/libvorbis-libogg-fpu.patch
diff --git a/build/android/openssl_arch.patch b/build/android/patches/openssl_arch.patch
similarity index 100%
rename from build/android/openssl_arch.patch
rename to build/android/patches/openssl_arch.patch
diff --git a/build/android/project.properties b/build/android/project.properties
deleted file mode 100644
index cc2a7c5cf..000000000
--- a/build/android/project.properties
+++ /dev/null
@@ -1 +0,0 @@
-target=android-10
diff --git a/build/android/settings.gradle b/build/android/settings.gradle
new file mode 100644
index 000000000..a6e60c439
--- /dev/null
+++ b/build/android/settings.gradle
@@ -0,0 +1,2 @@
+rootProject.name = "Minetest"
+
diff --git a/build/android/src/debug/AndroidManifest.xml b/build/android/src/debug/AndroidManifest.xml
new file mode 100644
index 000000000..a3815b9f8
--- /dev/null
+++ b/build/android/src/debug/AndroidManifest.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android">
+	<uses-permission android:name="android.permission.SET_DEBUG_APP" />
+</manifest>
diff --git a/build/android/src/main/AndroidManifest.xml b/build/android/src/main/AndroidManifest.xml
new file mode 100644
index 000000000..df218fb33
--- /dev/null
+++ b/build/android/src/main/AndroidManifest.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+		package="net.minetest.minetest"
+		android:installLocation="auto">
+	<uses-feature android:glEsVersion="0x00010000" android:required="true"/>
+	<uses-permission android:name="android.permission.INTERNET" />
+	<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
+	<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
+	<application android:icon="@drawable/irr_icon"
+			android:label="${project}"
+			android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
+			android:allowBackup="true">
+		<activity android:name=".MtNativeActivity"
+				android:label="${project}"
+				android:launchMode="singleTask"
+				android:configChanges="orientation|keyboard|keyboardHidden|navigation"
+				android:screenOrientation="sensorLandscape"
+				android:clearTaskOnLaunch="true">
+			<intent-filter>
+				<action android:name="android.intent.action.MAIN" />
+				<category android:name="android.intent.category.LAUNCHER" />
+			</intent-filter>
+			<meta-data android:name="android.app.lib_name" android:value="minetest" />
+		</activity>
+		<activity android:name=".MinetestTextEntry"
+				android:theme="@style/Theme.Transparent"
+				android:excludeFromRecents="true">
+		</activity>
+		<activity android:name=".MinetestAssetCopy"
+				android:theme="@style/Theme.Transparent"
+				android:excludeFromRecents="true">
+		</activity>
+	</application>
+</manifest>
diff --git a/build/android/src/net/minetest/minetest/MinetestAssetCopy.java b/build/android/src/main/java/net.minetest.minetest/MinetestAssetCopy.java
similarity index 100%
rename from build/android/src/net/minetest/minetest/MinetestAssetCopy.java
rename to build/android/src/main/java/net.minetest.minetest/MinetestAssetCopy.java
diff --git a/build/android/src/net/minetest/minetest/MinetestTextEntry.java b/build/android/src/main/java/net.minetest.minetest/MinetestTextEntry.java
similarity index 100%
rename from build/android/src/net/minetest/minetest/MinetestTextEntry.java
rename to build/android/src/main/java/net.minetest.minetest/MinetestTextEntry.java
diff --git a/build/android/src/net/minetest/minetest/MtNativeActivity.java b/build/android/src/main/java/net.minetest.minetest/MtNativeActivity.java
similarity index 100%
rename from build/android/src/net/minetest/minetest/MtNativeActivity.java
rename to build/android/src/main/java/net.minetest.minetest/MtNativeActivity.java
diff --git a/build/android/res/drawable-hdpi/irr_icon.png b/build/android/src/main/res/drawable-hdpi/irr_icon.png
similarity index 100%
rename from build/android/res/drawable-hdpi/irr_icon.png
rename to build/android/src/main/res/drawable-hdpi/irr_icon.png
diff --git a/build/android/res/drawable-ldpi/irr_icon.png b/build/android/src/main/res/drawable-ldpi/irr_icon.png
similarity index 100%
rename from build/android/res/drawable-ldpi/irr_icon.png
rename to build/android/src/main/res/drawable-ldpi/irr_icon.png
diff --git a/build/android/res/drawable-mdpi/irr_icon.png b/build/android/src/main/res/drawable-mdpi/irr_icon.png
similarity index 100%
rename from build/android/res/drawable-mdpi/irr_icon.png
rename to build/android/src/main/res/drawable-mdpi/irr_icon.png
diff --git a/build/android/res/drawable-xhdpi/irr_icon.png b/build/android/src/main/res/drawable-xhdpi/irr_icon.png
similarity index 100%
rename from build/android/res/drawable-xhdpi/irr_icon.png
rename to build/android/src/main/res/drawable-xhdpi/irr_icon.png
diff --git a/build/android/res/layout/assetcopy.xml b/build/android/src/main/res/layout/assetcopy.xml
similarity index 94%
rename from build/android/res/layout/assetcopy.xml
rename to build/android/src/main/res/layout/assetcopy.xml
index 8ec14bdc2..1fcfffd65 100644
--- a/build/android/res/layout/assetcopy.xml
+++ b/build/android/src/main/res/layout/assetcopy.xml
@@ -18,7 +18,7 @@
         android:ellipsize="middle" 
         android:singleLine="true"
         android:layout_gravity="center_horizontal"
-        android:text="preparing media ..."
+        android:text="@string/preparing_media"
         android:textAppearance="?android:attr/textAppearanceSmall" />
 
 </LinearLayout>
diff --git a/build/android/src/main/res/values/strings.xml b/build/android/src/main/res/values/strings.xml
new file mode 100644
index 000000000..b407a77c6
--- /dev/null
+++ b/build/android/src/main/res/values/strings.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+	<string name="preparing_media">Preparing media...</string>
+</resources>
+
diff --git a/build/android/res/values/styles.xml b/build/android/src/main/res/values/styles.xml
similarity index 100%
rename from build/android/res/values/styles.xml
rename to build/android/src/main/res/values/styles.xml
diff --git a/util/bump_version.sh b/util/bump_version.sh
index 5ff69c8af..948561ac3 100755
--- a/util/bump_version.sh
+++ b/util/bump_version.sh
@@ -32,12 +32,12 @@ cd ${0%/*}/..
 grep -q -E '^set\(VERSION_MAJOR [0-9]+\)$' CMakeLists.txt || die "error: Could not find CMakeLists.txt"
 grep -q -E '^set\(VERSION_MINOR [0-9]+\)$' CMakeLists.txt || die "error: Could not find CMakeLists.txt"
 grep -q -E '^set\(VERSION_PATCH [0-9]+\)$' CMakeLists.txt || die "error: Could not find CMakeLists.txt"
-grep -q -E '^ANDROID_VERSION_CODE = [0-9]+$' build/android/Makefile || die "error: Could not find build/android/Makefile"
+grep -q -E 'versionCode [0-9]+$' build/android/build.gradle || die "error: Could not find Android version code"
 
 VERSION_MAJOR=$(grep -E '^set\(VERSION_MAJOR [0-9]+\)$' CMakeLists.txt | tr -dC 0-9)
 VERSION_MINOR=$(grep -E '^set\(VERSION_MINOR [0-9]+\)$' CMakeLists.txt | tr -dC 0-9)
 VERSION_PATCH=$(grep -E '^set\(VERSION_PATCH [0-9]+\)$' CMakeLists.txt | tr -dC 0-9)
-ANDROID_VERSION_CODE=$(grep -E '^ANDROID_VERSION_CODE = [0-9]+$' build/android/Makefile | tr -dC 0-9)
+ANDROID_VERSION_CODE=$(grep -E 'versionCode [0-9]+$' build/android/build.gradle | tr -dC 0-9)
 
 echo "Current Minetest version: $VERSION_MAJOR.$VERSION_MINOR.$VERSION_PATCH"
 echo "Current Android version code: $ANDROID_VERSION_CODE"
@@ -89,13 +89,13 @@ sed -i -re "s/^set\(VERSION_PATCH [0-9]+\)$/set(VERSION_PATCH $NEW_VERSION_PATCH
 
 sed -i -re "s/^set\(DEVELOPMENT_BUILD TRUE\)$/set(DEVELOPMENT_BUILD FALSE)/" CMakeLists.txt || die "Failed to unset DEVELOPMENT_BUILD"
 
-sed -i -re "s/^ANDROID_VERSION_CODE = [0-9]+$/ANDROID_VERSION_CODE = $NEW_ANDROID_VERSION_CODE/" build/android/Makefile || die "Failed to update ANDROID_VERSION_CODE"
+sed -i -re "s/versionCode [0-9]+$/versionCode $NEW_ANDROID_VERSION_CODE/" build/android/build.gradle || die "Failed to update Android version code"
 
 sed -i -re "1s/[0-9]+\.[0-9]+\.[0-9]+/$NEW_VERSION/g" doc/lua_api.txt || die "Failed to update doc/lua_api.txt"
 
 sed -i -re "1s/[0-9]+\.[0-9]+\.[0-9]+/$NEW_VERSION/g" doc/menu_lua_api.txt || die "Failed to update doc/menu_lua_api.txt"
 
-git add -f CMakeLists.txt build/android/Makefile doc/lua_api.txt doc/menu_lua_api.txt || die "git add failed"
+git add -f CMakeLists.txt build/android/build.gradle doc/lua_api.txt doc/menu_lua_api.txt || die "git add failed"
 
 git commit -m "Bump version to $NEW_VERSION" || die "git commit failed"
 
-- 
GitLab