Как правильно использовать dlopen() на Android?

У меня есть общий объект, связанный с моим приложением для Android. Это в lib папка из APK. На Android 7 я могу просто сделать следующее, чтобы загрузить его:

lib = dlopen("libfoo.so", RTLD_LAZY);

Тем не менее, это не работает на Android 4. На Android 4 я должен сделать следующее:

lib = dlopen("/data/data/<my_package_identifier>/lib/libfoo.so", RTLD_LAZY);

Так что я всегда должен указывать путь /data/data/<id>/lib при звонке dlopen() на андроид? Я немного беспокоюсь о путях жесткого кодирования, но, как я уже сказал, простая передача имени общего объекта не работает на Android 4.

Я знаю, что это, вероятно, легче со стороны Java, используя System.loadLibrary() но я не хочу использовать это, потому что это не позволяет мне выгружать библиотеки.

0 ответов

Другие вопросы по тегам