Создаем Java обертку для C++ класса в Android приложении, а также реализуем обратные вызовы из нэйтива
Кратко расскажу о себе и о том, зачем возникла необходимость в подобном. Я более десяти лет пишу приложения под Android, около 5 лет под IOS, и сейчас переношу свои наработки под десктопы. Приложения мои предназначены для сисадминов, это SSH клиент, сетевые сканеры и тд. В&nbs...
Погода сигнала
Затухает
Внимание снижается, но статья всё ещё помогает увидеть общую картину и продолжение темы.
Кратко расскажу о себе и о том, зачем возникла необходимость в подобном. Я более десяти лет пишу приложения под Android, около 5 лет под IOS, и сейчас переношу свои наработки под десктопы. Приложения мои предназначены для сисадминов, это SSH клиент, сетевые сканеры и тд. В общем, самое сложное — не сам интерфейс, а то, что под капотом. Когда я лишь начинал, я думал, что остановлюсь на платформе Android и стал пилить все на Java. Но затем осознал свою ошибку и исправил ее. На данный момент все мои приложения состоят из двух частей: общего для всех систем ядра на С++ и платформозависимого интерфейса, написанного на Java/Swift/C++ в зависимости от системы. Оговорюсь сразу, эта статья будет лишь своего рода вступлением. Я покажу, как работать с объектно‑ориентированным кодом на C++ в Java оболочке (в JNI нам доступен экспорт С функций). Инициализировать объект, делать из него вызовы, удалять, при этом имея аналогичный класс в оболочке, будто бы наш код был написан на Java. Задача эта не слишком сложная, но прежде чем опытные прогеры закрыли эту статью, я оговорюсь, что в следующей части мы уже будем работать с каллбэками — вызовами Java листенеров из нашего С++ кода, а вот это уже задача совсем нетривиальная, требующая понимания работы JNI и Dalvik. Но обо всем по порядку. Итак, у нас есть некий CPP класс и Java оболочка. Через JNI мы можем вызывать только С‑функции, то есть не объектный код. Так как же нам работать с ООП? Главная проблема — не столько вызовы, сколько хранение адреса объекта нативного класса. Лично для себя я нашел решение — хранить его в Java классе, как long. То есть, у нас получается приблизительно такой код:
Оставайтесь в сигнале
Следить за темой «Создаем Java обертку для C++ класса в Android приложении, а также реализуем обратные вызовы из нэйтива»
Следите не только за этой публикацией, но и за её продолжением: новыми материалами, соседними источниками и развитием сюжета.
Карта темы
Понять тему за минуту
Быстрый вход в историю: почему она важна сейчас, кто в ней участвует и куда идти дальше за контекстом.
Почему это важно сейчас
Карта темы
Открыть живую карту этой истории
Посмотрите, какие сущности, линии сюжета, источники и follow-up материалы формируют эту историю прямо сейчас.
Нажимайте на узлы
Story timeline
Продолжить следить за темой
Короткая линия событий и follow-up материалов, чтобы быстро понять ход темы.
Насколько можно опираться
Сигнал и надёжность Habr
Источник работает в быстрый ритме: 0% последних материалов попадают в горячее окно, а 0% дают выраженный поисковый сигнал.
Надёжность
10
Свежесть
22
Источников в сюжете
3
Похожие статьи
Еще материалы, которые пересекаются по тегам, источнику или категории.
Nothing выпустила последнее обновление для Phone (1) и прекратила поддержку
Nothing официально прекратила выпуск обновлений ПО и поддержку модели Phone (1). Первый смартфон компании получил последнее обновление, включающее патч безопасности Android за и...
Погода сигнала
Импульс быстро усиливается, поэтому это хороший ранний вход в тему.
Почему сейчас
Это один из самых свежих сюжетов, у которого ещё только формируется продолжение.
Google не смогла отбиться от рекордного штрафа в €4,1 млрд в Европе
Google проиграла многолетнюю тяжбу, в которой пыталась снять с себя рекордный антимонопольный штраф, выписанный европейскими чиновниками за злоупотребление доминирующим положени...
Погода сигнала
Импульс быстро усиливается, поэтому это хороший ранний вход в тему.
Почему сейчас
Это один из самых свежих сюжетов, у которого ещё только формируется продолжение.
Samsung закроет свой мессенджер в пользу аналога Google в этом месяце
Как и было объявлено ранее в этом году приложение для работы с сообщениями Samsung Messages перестанет функционировать в этом месяце, хотя точная дата закрытия сервиса не была о...
Погода сигнала
Импульс быстро усиливается, поэтому это хороший ранний вход в тему.
Почему сейчас
Это один из самых свежих сюжетов, у которого ещё только формируется продолжение.
Google радикально усложнила разблокировку смартфонов на Android 17
На майской конференции Google The Android Show: I/O Edition компания сообщила, что усилит защиту экрана блокировки в Android 17, чтобы усложнить задачу злоумышленникам, которые ...
Погода сигнала
Импульс быстро усиливается, поэтому это хороший ранний вход в тему.
Почему сейчас
Это один из самых свежих сюжетов, у которого ещё только формируется продолжение.
Еще материалы от Habr
Свежие публикации и продолжение темы от той же редакции.
Промпты Nano Banana для фото и изображений: Бесплатно для Нано Банана Про
Создание безупречного визуала в Nano Banana — это не вопрос везения, а результат правильной коммуникации с нейросетью. В отличие от простых моделей прошлого, этот инструмент спо...
Погода сигнала
История уже пережила первый всплеск и теперь работает как надёжный контекстный материал.
Почему сейчас
История уже пережила первый заголовок, но всё ещё активно развивается.
Пошаговая инструкция установки MTProto прокси через Service Node + VLESS
Если вы когда-нибудь пытались поднять прокси для Telegram на сервере, то знаете, что такое «мессенджер не грузит». В этой инструкции я предлагаю рассмотреть подробную, пошаговую...
Погода сигнала
История уже пережила первый всплеск и теперь работает как надёжный контекстный материал.
Почему сейчас
История уже пережила первый заголовок, но всё ещё активно развивается.
Накрутка поведенческих факторов для роста позиций — реально ли за день занять топ 1 Яндекса
Знаете, можно много долго спорить о том, что вот там умеют делать, а наши ничего не умеют. Но подход Яндекса к формированию поисковой выдачи мне всегда импонировал больше, нежел...
Погода сигнала
История уже пережила первый всплеск и теперь работает как надёжный контекстный материал.
Почему сейчас
История уже пережила первый заголовок, но всё ещё активно развивается.
Тени истории. Ренессанс – революция, подарившая миру главный инструмент шпионов
Вторая статья цикла о криптографии, в котором мы рассказываем, как человечество училось прятать и расшифровывать секреты — от древних методов до современных алгоритмов. Сегодня ...
Погода сигнала
История уже пережила первый всплеск и теперь работает как надёжный контекстный материал.
Почему сейчас
История уже пережила первый заголовок, но всё ещё активно развивается.