Создайте 64-битный файл .so библиотеки GDAL.

Я использовал библиотеку GDAL в своем приложении, и она работает правильно. Служба Google Play объявила, что после 1 августа 2019 года они загружают только 64-битные совместимые APK. Поэтому я сделал проект совместимым с 64-битными версиями. К сожалению, в библиотеке GDAL возникла проблема. они показывают, что нет реализации для библиотеки gdal (т.е. файла .so в соответствии с типом ABI). Поэтому я думаю, что соответствующий 64-битный GDAL был недоступен для этой области. У меня есть файл .so в папке armeabi, совместимый с 32-битной версией. Затем я переключился на совместимость с arm64-V8a. После этого я генерирую сборку, соответствующего файла .so нет в папке arm64-v8a. Итак, мой вопрос: как мы можем сгенерировать 64-битные файлы .so из библиотеки GDAL? Примечание. Обычно я использовал 32-разрядный APK, и он работал правильно. В соответствии с новым требованием Playstore я использовал 64-битный совместимый APK и провел дымовое тестирование, к сожалению, они потерпели крах, проблема этого сбоя в том, что я использовал библиотеку GDAL, которая имеет файлы .so относительно типа ABI. . поэтому, когда я запускаю 64-битную версию, ошибка показывает, что для GDAL не найдена реализация. Поэтому я использовал анализатор apk, чтобы увидеть разницу с 32-битной совместимостью. поэтому я определил, что нет файла .so, связанного с папкой arm64-V8a. Итак, я думаю, нам нужно сгенерировать 64-битный файл .so для библиотеки GDAL. Есть ли какое-либо решение для создания этого I здесь, добавив снимки экрана, см. папку lib 32-битная совместимость 64-битная совместимость 3`.so файлы внутри armeabi


person varsha jeevan    schedule 29.05.2019    source источник


Ответы (2)


У меня те же проблемы с переносом некоторых библиотек ARM-Android с 32 на 64 бита.

В случае с GDAL, к счастью, я смог найти готовые 64-битные двоичные файлы:

https://github.com/eltorio/RtkGps/tree/master/gdal-prebuilt

Привязки GDAL для Java можно найти в папке libs. Это файл gdal.jar:

https://github.com/eltorio/RtkGps/tree/master/libs

person LuisTavares    schedule 04.06.2019
comment
Спасибо за шаги @lusitanica. Можем ли мы сгенерировать файл .so, используя этот исходный код? Мне нужно 5 типов файлов .so из библиотеки gdal. 1. libgdalconstjni.so 2. libgdaljni.so 3. libogrjni.so 4. libosrjni.so 5. libproj.so - person varsha jeevan; 04.06.2019
comment
Конечно, просто взгляните на файл gdal.mk. Не забывайте, что все упомянутые вами файлы jni объединены в один файл so по ссылке, которую я указал. github.com/eltorio/RtkGps/blob/master/jni/gdal. тк - person LuisTavares; 04.06.2019
comment
не удалось создать приложение в студии Android. Это показывает, что тип arm64 abi не поддерживается для платформы. Вы имеете какое-нибудь представление об этом? При сборке возникла следующая проблема: ABI [arm64-v8a, x86_64] не поддерживаются для платформы. Поддерживаемые ABI: [armeabi-v7a, x86]. - person varsha jeevan; 04.06.2019
comment
У меня не было проблем с пересборкой gdal.so, но тогда я использую скрипт ndk-build вместо Studio. Попробуйте настроить с помощью Android.mk и не забывайте, что сценарии нацелены на Android 21 API, github.com/eltorio/RtkGps/blob/master/jni/Android.mk - person LuisTavares; 04.06.2019
comment
Поскольку вы, скорее всего, используете Gradle: developer.android.com/ распространять/лучшие практики/разрабатывать/ - person LuisTavares; 04.06.2019
comment
Спасибо @lusitanica за помощь, позвольте мне попробовать :-) - person varsha jeevan; 04.06.2019
comment
Файлы .so были созданы с помощью файлов libgdal.so и libproj.so и относятся к 64-битной версии. Теперь я попытался сгенерировать оставшиеся файлы '.so', поэтому я заглянул в файл gdal.mk и изменил имя модуля. Затем, после того как я добавил соответствующий код в класс java и build. К сожалению, в сборке Android.mk *** отсутствует разделитель. Останавливаться. LOCAL_SRC_FILES для готовой библиотеки должен содержать только один элемент. Есть ли у вас какие-либо идеи, чтобы решить эту проблему? Используется ли этот файл gdal.mk для изменения для создания необходимых файлов .so. - person varsha jeevan; 07.06.2019
comment
В этом случае не осталось .so файлов. Все в одном пакете gdal.so. Тем не менее, если вы хотите построить их по отдельности, взгляните на этот Android.mk из другого проекта. В частности, конец файла, где находится материал Гдала, github.com /nutiteq/advancedlayers/blob/master/jni/Android.mk - person LuisTavares; 07.06.2019
comment
Спасибо за ссылку @lusitanica, я понял способ, но пока я запускал сборку ndk, он показывает jni/gdal/lib/arm64-v8a/libgdal.a: ошибка добавления символов: формат файла не распознан clang++: ошибка : команда компоновщика завершилась неудачно с кодом выхода 1 (используйте -v, чтобы увидеть вызов). Нужен ли 64-битный файл libgdal.a??? Есть ли у вас какие-либо идеи??? - person varsha jeevan; 09.06.2019
comment
Судя по всему, вы используете компилятор CLang. Я и проект, на который я ссылался, вместо этого используют компилятор GCC. - person LuisTavares; 09.06.2019
comment
Да, я понял :) Спасибо за вашу поддержку @lusitanica - person varsha jeevan; 10.06.2019

Как мы можем сгенерировать 64-битные файлы .so из библиотеки GDAL?

Вы должны собрать библиотеку из исходного кода с помощью Android NDK.

Видеть:

person shizhen    schedule 29.05.2019
comment
Спасибо за ответ @shizhen. Я попробовал упомянутый способ, но, к сожалению, не создает файл so. Шаги, которые я сделал с помощью командной строки, поэтому я получил ошибку. :-( - person varsha jeevan; 04.06.2019