Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 27.08.2015
Сообщений: 5
1

Вызов системной JNI-функции из своего приложения

27.08.2015, 21:44. Показов 845. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Имеется Highscreen ICE 2, у которого есть второй дисплей на задней панели(OLED).
Хочу получить доступ к рисованию на этом экране.
В результате декомпиляции стоковой прошивки выяснил, что для рисования система использует службу OledService, в которой есть только прототипы нужных функций на java, а сами функции объявлены через JNI на си в system\lib\libandroid_servers.so.
Названия функций:
  • refreshScreen_native
  • setMode_native
  • open_native
  • close_native
Как можно вызвать эти функции из своего приложения?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.08.2015, 21:44
Ответы с готовыми решениями:

Вызов permission своего приложения
Здравствуйте. Подскажите вот по этому коду Intent appSettingsIntent = new...

Qt и JNI вызов java класса
Всем привет, недавно делал Android приложение, использовал Jni. Вроде было не сильно сложно. Сейчас...

Qt android JNI - Вызов галереи
Доброго дня ! делаю вызов галереи: QAndroidJniObject action = QAndroidJniObject::fromString(...

Вызов C++ dll без использования JNI
Можно ли вызывать функции dll которые написаны "в стиле" С (без JNI): extern "C"...

8
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
28.08.2015, 01:44 2
Цитата Сообщение от XTracer Посмотреть сообщение
В результате декомпиляции стоковой прошивки выяснил
Я не понял, вы декомпилировали программу на С/С++? (уж очень вторая картинка на дезасемблер похожа - для меня это важно). Или это декомпил явы?

По с/с++ сильно не помогу, но почитайте про основы NDK. Там в статьях есть примеры подключения вашей либы к проекту и работу с ней. Может это поможет: http://habrahabr.ru/company/re... og/265117/
Там вроде тоже основы подключения увидел...
0
0 / 0 / 0
Регистрация: 27.08.2015
Сообщений: 5
28.08.2015, 11:44  [ТС] 3
на первом скриншоте кусок из декомпилированного services.jar, на втором скрине часть дизассемблинга libandroid_servers.so, в которой происходит регистрация JNI функций для java.
сами функции(на си которые), как я понял, просто открывают /dev/OLED и пишут в него массив, попробую копать в эту сторону еще
0
0 / 0 / 0
Регистрация: 27.08.2015
Сообщений: 5
28.08.2015, 13:15  [ТС] 4
пробовал писать в "/dev/OLED" - не вышло, нет доступа.
через System.loadLibrary("android_servers") тоже не получается обращаться к native функциям, ведь они же регистрируются только для класса "com/android/server/OledService"?
Миниатюры
Вызов системной JNI-функции из своего приложения  
0
0 / 0 / 0
Регистрация: 27.08.2015
Сообщений: 5
28.08.2015, 13:31  [ТС] 5
Регистрация происходит примерно таким кодом(получил код на основе другой службы у которой есть исходный код на c++):
C++
1
2
3
4
int register_android_server_OledService(JNIEnv *env) {
    return jniRegisterNativeMethods(env, "com/android/server/OledService",
            method_table, NELEM(method_table));
}
в method_table нужные 4 функции
0
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
29.08.2015, 00:25 6
Цитата Сообщение от XTracer Посмотреть сообщение
на втором скрине часть дизассемблинга libandroid_servers.so
Извини что не по теме, но каким инструментом подобное делается?

Не по теме:

Пытаюсь лицензионную защиту своей программы через ключи встроить на уровне С++ и не хотелось бы чтобы получасовое изучение кодов через дизасемблер позволило бы написать свой генератор ключей. Хочу просмотреть свою-же программу через дизасемблер

0
Mobile Software Engineer
Эксперт С++
5381 / 1585 / 956
Регистрация: 23.01.2011
Сообщений: 3,214
29.08.2015, 08:15 7
XTracer, код выкладывается на форум в виде текста, оформленного соответствующим тэгом, а не в виде картинок
0
0 / 0 / 0
Регистрация: 27.08.2015
Сообщений: 5
29.08.2015, 10:08  [ТС] 8
Tester64, это IDA PRO
Ev[G]eN, как мне изменить скрины на код? кнопки Правка уже нет
0
Mobile Software Engineer
Эксперт С++
5381 / 1585 / 956
Регистрация: 23.01.2011
Сообщений: 3,214
29.08.2015, 16:00 9
XTracer, вставляйте код в новое сообщение, я перенесу. на будущее имейте ввиду
0
29.08.2015, 16:00
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.08.2015, 16:00
Помогаю со студенческими работами здесь

Вызов функции из COM+ приложения
В базе хранится (к примеру) BA_BIZLG.clsLogic.CountRests, где BA_BIZLG - имя COM+ компонента,...

Вызов функции из памяти другого приложения
Всем привет есть приложение в которое я пишу свою функцию и аргументы и вызываю я её все работает...

Вызов функции после создания окна приложения
Здравствуйте, есть программа в которой создаються виджеты (QPlaintTextEdit), после их создания,...

Вызов функции при закрытии консольного приложения
Пытаюсь реализовать вызов функции при закрытии консольного приложения(будь то закрытие пользователя...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru