mirror of
https://github.com/koreader/koreader.git
synced 2025-12-13 20:36:53 +01:00
make: improve android update
- out-of-tree luajit-launcher build: no leftovers after `make clean` - use the luajit library compiled by base: no point wasting time building a second (different, possibly incompatible) version
This commit is contained in:
committed by
Frans de Jonge
parent
ede4ca8b36
commit
bd4a651fbf
3
Makefile
3
Makefile
@@ -167,9 +167,6 @@ endif
|
||||
|
||||
clean: base-clean
|
||||
rm -rf $(INSTALL_DIR)
|
||||
ifeq ($(TARGET), android)
|
||||
$(MAKE) -C $(CURDIR)/platform/android/luajit-launcher clean
|
||||
endif
|
||||
|
||||
distclean: clean base-distclean
|
||||
$(MAKE) -C doc clean
|
||||
|
||||
2
base
2
base
Submodule base updated: 720df9dfc4...3c3f18f27a
2
kodev
2
kodev
@@ -21,7 +21,7 @@ fi
|
||||
ANDROID_ARCH="${ANDROID_ARCH:-arm}"
|
||||
|
||||
# Default android flavor
|
||||
ANDROID_FLAVOR="${ANDROID_FLAVOR:-rocks}"
|
||||
ANDROID_FLAVOR="${ANDROID_FLAVOR:-Rocks}"
|
||||
export ANDROID_FLAVOR
|
||||
|
||||
function assert_ret_zero() {
|
||||
|
||||
@@ -1,11 +1,18 @@
|
||||
# Use the git commit count as the (integer) Android version code
|
||||
ANDROID_VERSION ?= $(shell git rev-list --count HEAD)
|
||||
ANDROID_NAME ?= $(VERSION)
|
||||
ANDROID_APK = koreader-android-$(ANDROID_ARCH)$(KODEDUG_SUFFIX)-$(VERSION).apk
|
||||
ANDROID_DIR = $(PLATFORM_DIR)/android
|
||||
ANDROID_LAUNCHER_DIR = $(ANDROID_DIR)/luajit-launcher
|
||||
ANDROID_ASSETS = $(ANDROID_LAUNCHER_DIR)/assets/module
|
||||
ANDROID_LIBS_ROOT = $(ANDROID_LAUNCHER_DIR)/libs
|
||||
ANDROID_LIBS_ABI = $(ANDROID_LIBS_ROOT)/$(ANDROID_ABI)
|
||||
ANDROID_LAUNCHER_BUILD = $(INSTALL_DIR)/luajit-launcher
|
||||
ANDROID_ASSETS = $(ANDROID_LAUNCHER_BUILD)/assets
|
||||
ANDROID_LIBS = $(ANDROID_LAUNCHER_BUILD)/libs/$(ANDROID_ABI)
|
||||
ANDROID_FLAVOR ?= Rocks
|
||||
|
||||
ifneq (,$(CI))
|
||||
GRADLE_FLAGS ?= --console=plain --no-daemon -x lintVitalArmRocksRelease
|
||||
endif
|
||||
GRADLE_FLAGS += $(PARALLEL_JOBS:%=--max-workers=%)
|
||||
|
||||
ifeq ($(ANDROID_ARCH), arm64)
|
||||
ANDROID_ABI ?= arm64-v8a
|
||||
@@ -24,22 +31,24 @@ androiddev: update
|
||||
update: all
|
||||
# Note: do not remove the module directory so there's no need
|
||||
# for `mk7z.sh` to always recreate `assets.7z` from scratch.
|
||||
rm -rfv $(ANDROID_LIBS_ROOT)
|
||||
mkdir -p $(ANDROID_ASSETS) $(ANDROID_LIBS_ABI)
|
||||
rm -rfv $(ANDROID_LIBS)
|
||||
# APK version
|
||||
echo $(VERSION) > $(ANDROID_ASSETS)/version.txt
|
||||
# shared libraries are stored as raw assets
|
||||
cp -pLR $(INSTALL_DIR)/koreader/libs $(ANDROID_LAUNCHER_DIR)/assets
|
||||
# in runtime luajit-launcher's libluajit.so will be loaded
|
||||
rm -vf $(ANDROID_LAUNCHER_DIR)/assets/libs/libluajit.so
|
||||
mkdir -p $(ANDROID_ASSETS)/module $(ANDROID_LIBS)
|
||||
# We need strip the version, or versioned
|
||||
# libraries won't be included in the APK.
|
||||
for src in $(INSTALL_DIR)/koreader/libs/*; do \
|
||||
dst="$${src##*/}"; \
|
||||
dst="$${dst%%.[0-9]*}"; \
|
||||
llvm-strip --strip-unneeded "$$src" -o $(ANDROID_LIBS)/"$$dst"; \
|
||||
done
|
||||
# binaries are stored as shared libraries to prevent W^X exception on Android 10+
|
||||
# https://developer.android.com/about/versions/10/behavior-changes-10#execute-permission
|
||||
cp -pLR $(INSTALL_DIR)/koreader/sdcv $(ANDROID_LIBS_ABI)/libsdcv.so
|
||||
echo "sdcv libsdcv.so" > $(ANDROID_ASSETS)/map.txt
|
||||
llvm-strip --strip-unneeded $(INSTALL_DIR)/koreader/sdcv -o $(ANDROID_LIBS)/libsdcv.so
|
||||
printf '%s\n' 'libs .' 'sdcv libsdcv.so' >$(ANDROID_ASSETS)/module/map.txt
|
||||
# assets are compressed manually and stored inside the APK.
|
||||
cd $(INSTALL_DIR)/koreader && \
|
||||
./tools/mk7z.sh \
|
||||
../../$(ANDROID_ASSETS)/koreader.7z \
|
||||
$(abspath $(ANDROID_ASSETS)/module/koreader.7z) \
|
||||
"$$(git show -s --format='%ci')" \
|
||||
-m0=lzma2 -mx=9 \
|
||||
-- . \
|
||||
@@ -65,17 +74,29 @@ update: all
|
||||
'-xr!NOTICE' \
|
||||
'-xr!README.md' \
|
||||
;
|
||||
# make the android APK
|
||||
# Note: filter out the `--debug=…` make flag
|
||||
# so the old crummy version provided by the
|
||||
# NDK does not blow a gasket.
|
||||
MAKEFLAGS='$(filter-out --debug=%,$(MAKEFLAGS))' \
|
||||
$(MAKE) -C $(ANDROID_LAUNCHER_DIR) $(if $(KODEBUG), debug, release) \
|
||||
ANDROID_APPNAME=KOReader \
|
||||
ANDROID_VERSION=$(ANDROID_VERSION) \
|
||||
ANDROID_NAME=$(ANDROID_NAME) \
|
||||
ANDROID_FLAVOR=$(ANDROID_FLAVOR)
|
||||
cp $(ANDROID_LAUNCHER_DIR)/bin/NativeActivity.apk \
|
||||
koreader-android-$(ANDROID_ARCH)$(KODEDUG_SUFFIX)-$(VERSION).apk
|
||||
# Note: we filter out the `--debug=…` make flag so the old
|
||||
# crummy version provided by the NDK does not blow a gasket.
|
||||
env \
|
||||
ANDROID_ARCH='$(ANDROID_ARCH)' \
|
||||
ANDROID_ABI='$(ANDROID_ABI)' \
|
||||
ANDROID_FULL_ARCH='$(ANDROID_ABI)' \
|
||||
LUAJIT_INC='$(abspath $(STAGING_DIR)/include/luajit-2.1)' \
|
||||
LUAJIT_LIB='$(abspath $(ANDROID_LIBS)/libluajit.so)' \
|
||||
MAKEFLAGS='$(filter-out --debug=%,$(MAKEFLAGS))' \
|
||||
NDK=$(ANDROID_NDK_ROOT) \
|
||||
SDK=$(ANDROID_SDK_ROOT) \
|
||||
$(ANDROID_LAUNCHER_DIR)/gradlew \
|
||||
--project-dir='$(abspath $(ANDROID_LAUNCHER_DIR))' \
|
||||
--project-cache-dir='$(abspath $(ANDROID_LAUNCHER_BUILD)/gradle)' \
|
||||
-PassetsPath='$(abspath $(ANDROID_ASSETS))' \
|
||||
-PbuildDir='$(abspath $(ANDROID_LAUNCHER_BUILD))' \
|
||||
-PlibsPath='$(abspath $(dir $(ANDROID_LIBS)))' \
|
||||
-PndkCustomPath='$(ANDROID_NDK_ROOT)' \
|
||||
-PprojectName='KOReader' \
|
||||
-PversCode='$(ANDROID_VERSION)' \
|
||||
-PversName='$(ANDROID_NAME)' \
|
||||
$(GRADLE_FLAGS) \
|
||||
'app:assemble$(ANDROID_ARCH)$(ANDROID_FLAVOR)$(if $(KODEBUG),Debug,Release)'
|
||||
cp $(ANDROID_LAUNCHER_BUILD)/outputs/apk/$(ANDROID_ARCH)$(ANDROID_FLAVOR)/$(if $(KODEBUG),debug,release)/NativeActivity.apk $(ANDROID_APK)
|
||||
|
||||
PHONY += androiddev update
|
||||
|
||||
Submodule platform/android/luajit-launcher updated: 5393d61c54...981e9c871a
Reference in New Issue
Block a user