[ion/sdl] Clean the Android build system

This commit is contained in:
Romain Goyet
2019-03-12 14:18:51 +01:00
parent a71319c9d5
commit 85c02aa919
7 changed files with 73 additions and 30 deletions

View File

@@ -6,10 +6,59 @@ $(call object_for,ion/src/sdl/shared/main.cpp) : SFLAGS += -DEPSILON_SDL_FULLSCR
LDFLAGS += -ljnigraphics -llog
ANDROID_LIB_PATH = ion/src/sdl/android/libs
# If NDK_ABI is not defined, we will re-trigger a build for each avaialble ABI.
# This is used to build APKs, which needs to embbed a binary for each ABI.
$(ANDROID_LIB_PATH)/%/libepsilon.so:
ion/src/sdl/android/libs/%/libepsilon.so:
$(Q) $(MAKE) MODEL=android NDK_ABI=$* clean
$(Q) $(MAKE) MODEL=android NDK_ABI=$* epsilon.so
$(Q) mv epsilon.so $@
ifdef NDK_ABI
.PHONY: epsilon.apk
epsilon.apk:
echo "To make epsilon.apk, to not define NDK_ABI"
else
# Cross-ABI libepsilon.so
# This file is loaded is loaded only once, which prevents us from tracking
# dependencies across ABIs. As a shortcut, we simply force a re-make of
# libepsilon.so for each ABI.
.PHONY: force_remake
$(BUILD_DIR)/app/libs/%/libepsilon.so: force_remake $$(@D)/.
$(Q) echo "MAKE NDK_ABI=$*"
$(Q) $(MAKE) NDK_ABI=$* epsilon.so
$(Q) cp $(BUILD_DIR)/$*/epsilon.so $@
# Android resources
# Some android resources needs to be filtered through ImageMagick. Others are
# simply copied over.
$(BUILD_DIR)/app/res/mipmap/ic_launcher.png: ion/src/sdl/assets/logo.svg | $$(@D)/.
@echo "CONVERT $@"
$(Q) convert -background "#FFB734" $< $@
$(BUILD_DIR)/app/res/mipmap-v26/ic_launcher_foreground.png: ion/src/sdl/assets/logo.svg | $$(@D)/.
@echo "CONVERT $@"
$(Q) convert -background none $< -resize 512x512 -gravity center -background none -extent 1024x1024 $@
$(BUILD_DIR)/app/res/%: ion/src/sdl/android/src/res/% $$(@D)/.
@echo "COPY $@"
$(Q) cp $< $@
NDK_ABIS = arm64-v8a x86_64
epsilon_apk_deps = $(patsubst %,$(BUILD_DIR)/app/libs/%/libepsilon.so,$(NDK_ABIS))
epsilon_apk_deps += $(subst ion/src/sdl/android/src/res,$(BUILD_DIR)/app/res,$(wildcard ion/src/sdl/android/src/res/*/*))
epsilon_apk_deps += $(addprefix $(BUILD_DIR)/app/res/,mipmap/ic_launcher.png mipmap-v26/ic_launcher_foreground.png)
.PHONY: epsilon.apk
epsilon.apk: $(epsilon_apk_deps)
@echo "GRADLE ion/src/sdl/android/build.gradle"
$(Q) ANDROID_HOME=/usr/local/android gradle -b ion/src/sdl/android/build.gradle assembleRelease
.PHONY: epsilon_run
epsilon_run: $(epsilon_apk_deps)
@echo "GRADLE ion/src/sdl/android/build.gradle"
$(Q) ANDROID_HOME=/usr/local/android gradle -b ion/src/sdl/android/build.gradle installDebug
endif

View File

@@ -34,13 +34,13 @@ android {
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
proguardFiles getDefaultProguardFile('proguard-android.txt')
}
}
sourceSets{
main {
manifest.srcFile 'src/AndroidManifest.xml'
res.srcDir 'src/res'
res.srcDir BUILD_DIR + '/res'
java.srcDir 'src'
jniLibs.srcDir BUILD_DIR + '/libs'
assets.srcDir '../assets'

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@color/yellow" />
<foreground android:drawable="@mipmap/ic_launcher_foreground" />
</adaptive-icon>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="yellow">#FFB734</color>
<color name="lightGray">#F7F7F7</color>
</resources>

View File

@@ -0,0 +1,3 @@
<resources>
<string name="app_name">NumWorks</string>
</resources>

View File

@@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024">
<path d="M744.7 189c-27.1 0-49.2 20.1-49.2 44.8v431.8l-369.8-457c-9.9-12.2-25.9-19.6-42.7-19.6-29.2 0-53 21.5-53 47.9v553.3c0 24.7 22.1 44.8 49.3 44.8 27.1 0 49.2-20.1 49.2-44.8V358.6l369.9 458.2c9.2 11.4 24 18.2 39.7 18.2h6.7c27.1 0 49.2-20.1 49.2-44.8V233.8c0-24.7-22.1-44.8-49.3-44.8z" fill="#fff" stroke="none" />
</svg>

After

Width:  |  Height:  |  Size: 392 B

View File

@@ -1,22 +0,0 @@
# Makefile is loaded for a single architecture at once. If NDK_ABI is not
# defined, we assume we want to build all of them. But in that case, we cannot
# track per-ABI dependencies. So as a shortcut, we force a re-make of each ABI.
.PHONY: force_rebuild_libepsilon
$(BUILD_DIR)/app/libs/%/libepsilon.so: force_rebuild_libepsilon $$(@D)/.
$(Q) echo "MAKE NDK_ABI=$*"
$(Q) $(MAKE) NDK_ABI=$* epsilon.so
$(Q) cp $(BUILD_DIR)/$*/epsilon.so $@
NDK_ABIS = arm64-v8a x86_64
.PHONY: epsilon.apk
epsilon.apk: $(patsubst %,$(BUILD_DIR)/app/libs/%/libepsilon.so,$(NDK_ABIS))
@echo "GRADLE ion/src/sdl/android/build.gradle"
$(Q) ANDROID_HOME=/usr/local/android gradle -b ion/src/sdl/android/build.gradle assembleRelease
.PHONY: epsilon_run
epsilon_run: $(patsubst %,$(BUILD_DIR)/app/libs/%/libepsilon.so,$(NDK_ABIS))
@echo "GRADLE ion/src/sdl/android/build.gradle"
$(Q) ANDROID_HOME=/usr/local/android gradle -b ion/src/sdl/android/build.gradle installDebug