diff --git a/Makefile b/Makefile index 18c59a8da..1af1575f5 100644 --- a/Makefile +++ b/Makefile @@ -16,11 +16,16 @@ endif IS_RELEASE := $(if $(or $(EMULATE_READER),$(WIN32)),,1) IS_RELEASE := $(if $(or $(IS_RELEASE),$(APPIMAGE),$(DEBIAN),$(MACOS)),1,) -ANDROID_ARCH?=arm -ifeq ($(ANDROID_ARCH), x86) - ANDROID_ABI:=$(ANDROID_ARCH) +ifeq ($(ANDROID_ARCH), arm64) + ANDROID_ABI?=arm64-v8a +else ifeq ($(ANDROID_ARCH), x86) + ANDROID_ABI?=$(ANDROID_ARCH) +else ifeq ($(ANDROID_ARCH), x86_64) + ANDROID_ABI?=$(ANDROID_ARCH) +else + ANDROID_ARCH?=arm + ANDROID_ABI?=armeabi-v7a endif -ANDROID_ABI?=armeabi-v7a # Use the git commit count as the (integer) Android version code ANDROID_VERSION?=$(shell git rev-list --count HEAD) diff --git a/base b/base index 8b1b0dbde..5957a6b80 160000 --- a/base +++ b/base @@ -1 +1 @@ -Subproject commit 8b1b0dbdef5fe523c11cf46593ebe10206269805 +Subproject commit 5957a6b8059a92da1b747ea1273b69da3c8e54c8 diff --git a/frontend/device/android/device.lua b/frontend/device/android/device.lua index c7c23aee8..7b60c1b15 100644 --- a/frontend/device/android/device.lua +++ b/frontend/device/android/device.lua @@ -422,8 +422,8 @@ function Device:info() local is_eink, eink_platform = android.isEink() local product_type = android.getPlatformName() - local common_text = T(_("%1\n\nOS: Android %2, api %3\nBuild flavor: %4\n"), - android.prop.product, getCodename(), Device.firmware_rev, android.prop.flavor) + local common_text = T(_("%1\n\nOS: Android %2, api %3 on %4\nBuild flavor: %5\n"), + android.prop.product, getCodename(), Device.firmware_rev, jit.arch, android.prop.flavor) local platform_text = "" if product_type ~= "android" then diff --git a/kodev b/kodev index d9098dcbc..c18d106da 100755 --- a/kodev +++ b/kodev @@ -18,7 +18,12 @@ fi ANDROID_ARCH="${ANDROID_ARCH:-arm}" # Default to Android 4.0+; required for NDK 15 but with a custom NDK the strict minimum is 9. -NDKABI="${NDKABI:-14}" +if [[ "${ANDROID_ARCH}" == "arm64" ]] || [[ "${ANDROID_ARCH}" == "x86_64" ]]; then + # 64bit arches require at least ABI 21 + NDKABI="${NDKABI:-21}" +else + NDKABI="${NDKABI:-14}" +fi export NDKABI # Default android flavor @@ -156,7 +161,7 @@ SUPPORTED_TARGETS=" cervantes remarkable sony-prstux - android + android Supports ANDROID_ARCH arm, arm64, x86 & x86_64 pocketbook ubuntu-touch appimage @@ -799,7 +804,7 @@ TARGET: android) command -v adb >/dev/null && { if [ -z "${no_build}" ]; then - echo "[*] Building KOReader for Android…" + echo "[*] Building KOReader for Android ${ANDROID_ARCH}…" kodev-release --ignore-translation android assert_ret_zero $? fi diff --git a/platform/android/luajit-launcher b/platform/android/luajit-launcher index 2228f9309..96d7478c6 160000 --- a/platform/android/luajit-launcher +++ b/platform/android/luajit-launcher @@ -1 +1 @@ -Subproject commit 2228f930992cdf76b49a843eb872a43a1bf565d8 +Subproject commit 96d7478c68b072541b8040256bcdaf0230e9a593 diff --git a/spec/unit/uimanager_spec.lua b/spec/unit/uimanager_spec.lua index ea0b6848d..d951855fd 100644 --- a/spec/unit/uimanager_spec.lua +++ b/spec/unit/uimanager_spec.lua @@ -127,7 +127,9 @@ describe("UIManager spec", function() assert.are.same("5s", UIManager._task_queue[2].action) -- insert task at the end after "10s" - UIManager:scheduleIn(10, 'foo') -- is a bit later than "10s", as time.now() is used internally + -- NOTE: Can't use 10, as time.now, which is used internally, may or may not have moved, + -- depending on host's performance and clock granularity (especially if host is fast and/or COARSE is available). + UIManager:scheduleIn(11, 'foo') assert.are.same('foo', UIManager._task_queue[4].action) -- insert task at the second last position after "10s" @@ -145,14 +147,15 @@ describe("UIManager spec", function() UIManager:scheduleIn(5, 'barba') -- is a bit later than "5s", as time.now() is used internally assert.are.same('barba', UIManager._task_queue[4].action) - -- "papa" is shortly after "now" - UIManager:nextTick('papa') -- is a bit later than "now" - assert.are.same('papa', UIManager._task_queue[2].action) - - -- "mama is shedule now and inserted after "now" + -- "mama" is sheduled now and inserted after "now" UIManager:schedule(now, 'mama') assert.are.same('mama', UIManager._task_queue[2].action) + -- "papa" is shortly after "now" + -- NOTE: For the same reason as above, test this last, as time.now may not have moved... + UIManager:nextTick('papa') -- is a bit later than "now" + assert.are.same('papa', UIManager._task_queue[3].action) + -- "letta" is shortly after "papa" UIManager:tickAfterNext('letta') assert.are.same("function", type(UIManager._task_queue[4].action))