Как правильно использовать 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()
но я не хочу использовать это, потому что это не позволяет мне выгружать библиотеки.