dyOpen: библиотека dlopen, которая обходит ограничения мобильной системы
Введение
byOpen — это расширенная версия библиотеки dlfunctions, которая позволяет обойти ограничения мобильных систем.
Поддерживаемые функции
static public boolean loadLibrary(String libraryName) {
Method forName = Class.class.getDeclaredMethod("forName", String.class);
Method getDeclaredMethod = Class.class.getDeclaredMethod("getDeclaredMethod", String.class, Class[].class);
Class<?> systemClass = (Class<?>) forName.invoke(null, "java.lang.System");
Method loadLibrary = (Method) getDeclaredMethod.invoke(systemClass, "loadLibrary", new Class[]{String.class});
loadLibrary.invoke(systemClass, libraryName);
}
* В Native версии, реализованной в файле dlopen_android.c, автор переписал этот метод через JNI и объединил его с fake dlopen.
Использование интерфейса
Интерфейсы и статические библиотеки доступны в файле dlopen.h. Использование аналогично оригинальному dlopen:
typedef by_char_t const* (*curl_version_t)();
by_pointer_t handle = by_dlopen("libcurl.so", BY_RTLD_LAZY);
if (handle)
{
by_pointer_t addr = by_dlsym(handle, "curl_version");
if (addr)
{
curl_version_t curl_version = (curl_version_t)addr;
by_print("curl_version: %s", curl_version());
}
by_dlclose(handle);
}
Компиляция
Для компиляции требуется установить xmake.
$ xmake f -p android --ndk=~/file/android-ndk-r20b
$ xmake
* Компиляция тестового APK через gradle:
$ cd src/android
$ ./gradlew app:assembleDebug
* Создание APK напрямую через xmake:
$ xmake apk_build
* Установка и тестирование APK через xmake:
$ xmake apk_test
$ xmake f -p iphoneos -a [armv7|arm64]
$ xmake
$ xmake
$ xmake run
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )