Я создал небольшое приложение с Android Activity, которое использует библиотеку карт mapsforge-vtm , чтобы показать автономную карту с помощью файла mapsforge.
Эти две зависимости были необходимы в моем файле build.gradle:
implementation 'org.mapsforge:vtm-android:0.13.0'
implementation 'org.mapsforge:vtm-themes:0.13.0'
Когда я впервые попытался запустить приложение, оно не удалось с UnsatisfiedLinkError 'не смог найти "libvtm-jni.so"' После некоторого поиска в Google мне удалось работать обойти эту проблему вручную (но действительно ли это необходимо?), скопировав кучу файлов (см. далее), а затем добавив следующее в мой build.gradle:
android {
...
defaultConfig {
...
buildTypes {
...
sourceSets {
main {
file("natives").eachDir() { dir ->
jniLibs.srcDirs += "${dir.path}/lib"
}
}
}
Это были файлы (в пределах эти каталоги) Я скопировал, чтобы заставить его работать:
https://github.com/mapsforge/vtm/tree/master/vtm-android/natives
Оттуда я скопировал весь каталог содержимого "natives" из URL выше в "natives" "directory in my" app "directory.
Мой вопрос заключается в том, как сделать это лучше, без необходимости копировать файлы вручную, как я сделал?
Я имею в виду файлы, которые я скопировал кажется, существует в хранилище Maven вместе с "vtm- android -0.13.0.jar", который я добавил с одной из моих зависимостей gradle. Вы можете увидеть его здесь:
https://repo1.maven.org/maven2/org/mapsforge/vtm-android/0.13.0/
По вышеуказанной ссылке вы можете найти файл "vtm- android -0.13.0.jar", но также нативные файлы, например "vtm- android -0.13.0-natives-arm64-v8a.jar". Если вы скачаете этот jar-файл natives и откроете его, например, с помощью 7-Zip, вы увидите, что внутри него находится «libvtm-jni.so».
Итак, поскольку там есть файлы natives, я полагаю, должен быть какой-то хороший способ их автоматического извлечения вместо того, чтобы вручную копировать файлы, как я сделал?