Проблема в основном связана с природой библиотек. Библиотеки динамичны в Android и должны быть связаны во время выполнения.
libindy.so
зависит от stl, openssl, libsodium и libzmq.
Вы найдете libgnustl_shared.so
в NDK.
Все остальные необходимые готовые библиотеки также доступны здесь .
Что вам нужно сделать, это убедиться, что эти библиотеки присутствуют в папке jniLibs, и загружать их в библиотеки по порядку перед libindy.
System.loadLibrary("libgnustl_shared");
.
.
System.loadLibrary("indy");
Альтернативный подход:
В Indy есть подпроект, в котором мы используем libindy в качестве зависимости, и мы пытаемся создать одну динамическую библиотеку, которая имеет все зависимости.
Ссылка
Если вы выполняете шаги, подобные vcx, вам не нужно иметь все библиотеки-ответчики в jniLibs, так как они уже будут частью окончательного .so файла
Команда, которая создает одну толстую динамическую библиотеку со всеми символами и зависимостями, выглядит так (по ссылке, вставленной выше)
${LIBVCX}/target/${CROSS_COMPILE}/release/libvcx.a \
${TOOLCHAIN_DIR}/sysroot/usr/${NDK_LIB_DIR}/libz.so \
${TOOLCHAIN_DIR}/sysroot/usr/${NDK_LIB_DIR}/libm.a \
${TOOLCHAIN_DIR}/sysroot/usr/${NDK_LIB_DIR}/liblog.so \
${LIBINDY_DIR}/libindy.a \
${TOOLCHAIN_DIR}/${CROSS_COMPILE_DIR}/${NDK_LIB_DIR}/libgnustl_shared.so \
${OPENSSL_DIR}/lib/libssl.a \
${OPENSSL_DIR}/lib/libcrypto.a \
${SODIUM_LIB_DIR}/libsodium.a \
${LIBZMQ_LIB_DIR}/libzmq.a \
${TOOLCHAIN_DIR}/${CROSS_COMPILE_DIR}/${NDK_LIB_DIR}/libgnustl_shared.so -Wl,--no-whole-archive -z muldefs