Makefile.am: build Android APK package without Ant
In current Android SDK releases, Ant support was removed. Move the necessary build steps from the former Ant build system to our Makefile, and call the required build tools from the Android SDK (aapt and dx), Java SDK (javac) and Info-ZIP (zip) directly. [mk: copied from Felix's commit e52b906dba971a1173f9e8f83d32b52ee9f89af3 in the XCSoar project)
This commit is contained in:
parent
85d0bbd957
commit
fbdb8b406e
69
Makefile.am
69
Makefile.am
|
@ -285,7 +285,7 @@ libmain_a_CPPFLAGS = $(AM_CPPFLAGS) -Iandroid/build/include
|
||||||
|
|
||||||
src_mpd_LDADD += libandroid.a libjava.a
|
src_mpd_LDADD += libandroid.a libjava.a
|
||||||
|
|
||||||
all-local: android/build/bin/$(APK_NAME)-debug.apk
|
all-local: android/build/$(APK_NAME)-debug.apk
|
||||||
clean-local:
|
clean-local:
|
||||||
rm -rf android/build
|
rm -rf android/build
|
||||||
|
|
||||||
|
@ -298,25 +298,49 @@ ANDROID_SDK_PLATFORM = android-17
|
||||||
ANDROID_BUILD_TOOLS_DIR = $(ANDROID_SDK)/build-tools/$(ANDROID_SDK_BUILD_TOOLS_VERSION)
|
ANDROID_BUILD_TOOLS_DIR = $(ANDROID_SDK)/build-tools/$(ANDROID_SDK_BUILD_TOOLS_VERSION)
|
||||||
ANDROID_SDK_PLATFORM_DIR = $(ANDROID_SDK)/platforms/$(ANDROID_SDK_PLATFORM)
|
ANDROID_SDK_PLATFORM_DIR = $(ANDROID_SDK)/platforms/$(ANDROID_SDK_PLATFORM)
|
||||||
|
|
||||||
|
JAVAC = javac
|
||||||
|
AAPT = $(ANDROID_BUILD_TOOLS_DIR)/aapt
|
||||||
|
DX = $(ANDROID_BUILD_TOOLS_DIR)/dx
|
||||||
ZIPALIGN = $(ANDROID_BUILD_TOOLS_DIR)/zipalign
|
ZIPALIGN = $(ANDROID_BUILD_TOOLS_DIR)/zipalign
|
||||||
|
|
||||||
android/build/build.xml: android/AndroidManifest.xml
|
ANDROID_XML_RES := $(wildcard $(srcdir)/android/res/*/*.xml)
|
||||||
rm -rf android/build
|
ANDROID_XML_RES_COPIES := $(patsubst $(srcdir)/android/%,android/build/%,$(ANDROID_XML_RES))
|
||||||
mkdir -p android/build/include android/build/res android/build/src/org
|
|
||||||
ln -s $(abs_srcdir)/android/AndroidManifest.xml $(abs_srcdir)/android/custom_rules.xml android/build
|
|
||||||
ln -s $(abs_srcdir)/android/src android/build/src/org/musicpd
|
|
||||||
ln -s $(abs_srcdir)/android/res/values $(abs_srcdir)/android/res/layout android/build/res
|
|
||||||
$(ANDROID_SDK)/tools/android update project --path android/build --target $(ANDROID_SDK_PLATFORM) --name $(APK_NAME)
|
|
||||||
|
|
||||||
android/build/bin/classes/org/musicpd/Bridge.class: android/src/Bridge.java android/build/build.xml android/build/res/drawable/icon.png
|
JAVA_SOURCE_NAMES = Bridge.java Loader.java Main.java
|
||||||
cd android/build && ant compile-jni-classes
|
JAVA_SOURCES = $(addprefix $(srcdir)/android/src/,$(JAVA_SOURCE_NAMES))
|
||||||
|
|
||||||
android/build/include/org_musicpd_Bridge.h: android/build/bin/classes/org/musicpd/Bridge.class
|
JAVA_CLASSFILES_DIR = android/build/classes
|
||||||
javah -classpath $(ANDROID_SDK_PLATFORM_DIR)/android.jar:android/build/bin/classes -d $(@D) org.musicpd.Bridge
|
|
||||||
|
$(ANDROID_XML_RES_COPIES): $(ANDROID_XML_RES)
|
||||||
|
@$(MKDIR_P) $(dir $@)
|
||||||
|
cp $(patsubst android/build/%,$(srcdir)/android/%,$@) $@
|
||||||
|
|
||||||
|
android/build/resources.apk: $(ANDROID_XML_RES_COPIES) android/build/res/drawable/icon.png
|
||||||
|
@$(MKDIR_P) android/build/gen
|
||||||
|
$(AAPT) package -f -m --auto-add-overlay \
|
||||||
|
--custom-package org.musicpd \
|
||||||
|
-M $(srcdir)/android/AndroidManifest.xml \
|
||||||
|
-S android/build/res \
|
||||||
|
-J android/build/gen \
|
||||||
|
-I $(ANDROID_SDK_PLATFORM_DIR)/android.jar \
|
||||||
|
-F android/build/resources.apk
|
||||||
|
|
||||||
|
# R.java is generated by aapt, when resources.apk is generated
|
||||||
|
android/build/gen/org/musicpd/R.java: android/build/resources.apk
|
||||||
|
|
||||||
|
android/build/classes.dex: $(JAVA_SOURCES) android/build/gen/org/musicpd/R.java
|
||||||
|
@$(MKDIR_P) $(JAVA_CLASSFILES_DIR)
|
||||||
|
$(JAVAC) -source 1.5 -target 1.5 -Xlint:-options \
|
||||||
|
-cp $(ANDROID_SDK_PLATFORM_DIR)/android.jar:$(JAVA_CLASSFILES_DIR) \
|
||||||
|
-d $(JAVA_CLASSFILES_DIR) $^
|
||||||
|
$(DX) --dex --output $@ $(JAVA_CLASSFILES_DIR)
|
||||||
|
|
||||||
|
android/build/include/org_musicpd_Bridge.h: android/build/classes.dex
|
||||||
|
javah -classpath $(ANDROID_SDK_PLATFORM_DIR)/android.jar:$(JAVA_CLASSFILES_DIR) -d $(@D) org.musicpd.Bridge
|
||||||
|
|
||||||
BUILT_SOURCES = android/build/include/org_musicpd_Bridge.h
|
BUILT_SOURCES = android/build/include/org_musicpd_Bridge.h
|
||||||
|
|
||||||
android/build/libs/armeabi-v7a/libmpd.so: libmpd.so android/build/build.xml
|
android/build/lib/armeabi-v7a/libmpd.so: libmpd.so
|
||||||
mkdir -p $(@D)
|
mkdir -p $(@D)
|
||||||
rm -f $@
|
rm -f $@
|
||||||
$(STRIP) -o $@ $<
|
$(STRIP) -o $@ $<
|
||||||
|
@ -325,21 +349,18 @@ android/build/res/drawable/icon.png: mpd.svg
|
||||||
mkdir -p $(@D)
|
mkdir -p $(@D)
|
||||||
rsvg-convert --width=48 --height=48 $< -o $@
|
rsvg-convert --width=48 --height=48 $< -o $@
|
||||||
|
|
||||||
APK_DEPS = android/build/res/drawable/icon.png \
|
.DELETE_ON_ERROR: android/build/unsigned.apk
|
||||||
android/build/libs/armeabi-v7a/libmpd.so \
|
android/build/unsigned.apk: android/build/classes.dex android/build/resources.apk android/build/lib/armeabi-v7a/libmpd.so
|
||||||
$(wildcard $(srcdir)/android/src/*.java) \
|
cp android/build/resources.apk $@
|
||||||
android/build/build.xml
|
cd $(dir $@) && zip -q -r $(notdir $@) classes.dex lib
|
||||||
|
|
||||||
android/build/bin/$(APK_NAME)-debug.apk: $(APK_DEPS)
|
android/build/$(APK_NAME)-debug.apk: android/build/unsigned.apk
|
||||||
cd android/build && ant nodeps debug
|
jarsigner -keystore $(HOME)/.android/debug.keystore -storepass android -signedjar $@ $< androiddebugkey
|
||||||
|
|
||||||
android/build/bin/$(APK_NAME)-release-unsigned.apk: $(APK_DEPS)
|
android/build/$(APK_NAME)-release-unaligned.apk: android/build/unsigned.apk
|
||||||
cd android/build && ant nodeps release
|
|
||||||
|
|
||||||
android/build/bin/$(APK_NAME)-release-unaligned.apk: android/build/bin/$(APK_NAME)-release-unsigned.apk
|
|
||||||
jarsigner -digestalg SHA1 -sigalg MD5withRSA -storepass:env ANDROID_KEYSTORE_PASS -keystore $(ANDROID_KEYSTORE) -signedjar $@ $< $(ANDROID_KEY_ALIAS)
|
jarsigner -digestalg SHA1 -sigalg MD5withRSA -storepass:env ANDROID_KEYSTORE_PASS -keystore $(ANDROID_KEYSTORE) -signedjar $@ $< $(ANDROID_KEY_ALIAS)
|
||||||
|
|
||||||
android/build/bin/$(APK_NAME).apk: android/build/bin/$(APK_NAME)-release-unaligned.apk
|
android/build/$(APK_NAME).apk: android/build/$(APK_NAME)-release-unaligned.apk
|
||||||
$(ZIPALIGN) -f 4 $< $@
|
$(ZIPALIGN) -f 4 $< $@
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|
2
NEWS
2
NEWS
|
@ -4,6 +4,8 @@ ver 0.20.15 (not yet released)
|
||||||
* state file
|
* state file
|
||||||
- make mount point restore errors non-fatal
|
- make mount point restore errors non-fatal
|
||||||
- fix crash when restoring mounts with incompatible database plugin
|
- fix crash when restoring mounts with incompatible database plugin
|
||||||
|
* Android
|
||||||
|
- build without Ant
|
||||||
|
|
||||||
ver 0.20.14 (2018/01/01)
|
ver 0.20.14 (2018/01/01)
|
||||||
* database
|
* database
|
||||||
|
|
Loading…
Reference in New Issue