Это сторонняя библиотека, и у меня нет доступа к ее исходному коду - просьба к ним собрать для ARM64 пока не дала результата, несмотря на то, что они утверждают, что Android 8.0 (только для ARM64) будет "поддерживаться".
Следующий код Java выполняется на armv7l
, но не работает на aarch64
:
static {
switch(System.getProperty("os.arch")){
case "aarch64":
case "armv7l":
try {
System.loadLibrary("somelibrary");
} catch(UnsatisfiedLinkError e) {
Log.e(LOG_TAG, e.getMessage());
}
break;
}
}
dlopen не удалось: «/data/app/ ... /base.apk!/lib/arm64-v8a/somelibrary.so» является 32-разрядным вместо 64-разрядного.
Кажется, что выполнение AArch32
было бы "необязательным" (и, возможно, даже не доступным) - потому что (скорее всего) пришлось бы переключить ЦП с исполнения AArch64
на исполнение AArch32
. например. это слайд-шоу охватывает тему: Linux на 64-разрядной архитектуре AArch64 ARM а>.
В: Есть ли способ использовать 32-битную библиотеку на 64-битном Android-устройстве?
Как оказалось, Google Play это не принимает — требуется предоставление нативной сборки ARM64.
armeabi
, она жалуетсяUnable to strip library '...lib/armeabi/somelibrary.so' due to missing strip tool for ABI 'ARMEABI'. Packaging it as is.
... но на самом деле ее можно использовать. 08.09.2018armeabi
(который работает для обеих архитектур), а не с каталогомarmeabi-v7a
(который явно 32-битный). 08.09.2018