У меня проблемы с получением минизипа для работы на Android. Сначала я попытался связать его как статический с общей библиотекой приложения. Однако, как только я использовал код из этой мини-библиотеки, я получил
UnsatisfiedLinkError. У меня есть несколько других библиотек, которые работают, libzip и libpng. Поэтому для сравнения я скомпилировал все три в разделяемые библиотеки и использовал System.loadLibrary ("libpng"); System.loadLibrary ( "libzip");
System.loadLibrary ( "minizip"); загрузить их перед применением.
LogCat выводит это:
02-28 21:12:23.371: D/dalvikvm(21023): Trying to load lib /data/data/com.flotsamworks.seadrift/lib/liblibpng.so 0x4a315c18
02-28 21:12:23.381: D/dalvikvm(21023): Added shared lib /data/data/com.flotsamworks.seadrift/lib/liblibpng.so 0x4a315c18
02-28 21:12:23.381: D/dalvikvm(21023): No JNI_OnLoad found in /data/data/com.flotsamworks.seadrift/lib/liblibpng.so 0x4a315c18, skipping init
02-28 21:12:23.411: D/dalvikvm(21023): Trying to load lib /data/data/com.flotsamworks.seadrift/lib/liblibzip.so 0x4a315c18
02-28 21:12:23.421: D/dalvikvm(21023): Added shared lib /data/data/com.flotsamworks.seadrift/lib/liblibzip.so 0x4a315c18
02-28 21:12:23.431: D/dalvikvm(21023): No JNI_OnLoad found in /data/data/com.flotsamworks.seadrift/lib/liblibzip.so 0x4a315c18, skipping init
02-28 21:12:23.431: D/dalvikvm(21023): Trying to load lib /data/data/com.flotsamworks.seadrift/lib/libminizip.so 0x4a315c18
02-28 21:12:23.451: I/dalvikvm(21023): Unable to dlopen(/data/data/com.flotsamworks.seadrift/lib/libminizip.so): Cannot load library: link_image[2033]: failed to link libminizip.so
Как видите, минизип не работает. но почему? Я действительно понятия не имею. Компиляция не требует никаких проблем. Я подозреваю, что он полагается на некоторые вещи, которых нет у Android, или на более свежую версию libz.
Что касается компиляции, у меня есть только те параметры компоновщика, которые одинаковы для libzip и libpng. -shared -Wl, - fix-cortex-a8 -lz
Я загрузил проект, если вы хотите взглянуть на make-файлы и код.
Я кодирую / это код .... в build / android8_gmake / вы можете найти build.sh, настроить три пути к gcc, g ++ и ar.
В ./debug/bin вы найдете уже созданные общие объекты, которые я использовал.
http://projects.woutervandongen.com/thirdparty_sharedlibs_28_2_12.zip
Я использую NDKr7b с пользовательским набором инструментов, сгенерированным:
make-standalone-toolchain.sh --platform = android-8 --install-dir =. / standalone-toolchain-api8
Пожалуйста, помогите
С уважением,
Wouter