Создаем 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% последних материалов попадают в горячее окно, а 8% дают выраженный поисковый сигнал.
Надёжность
10
Свежесть
22
Источников в сюжете
5
Похожие статьи
Еще материалы, которые пересекаются по тегам, источнику или категории.
ИИ-функции Google Gemini Intelligence появятся лишь на нескольких производительных Android-смартфонах
На этой неделе Google представила Gemini Intelligence — набор функций на базе искусственного интеллекта, которые будут доступны на производительных смартфонах с Android. Однако ...
Погода сигнала
Импульс быстро усиливается, поэтому это хороший ранний вход в тему.
Почему сейчас
Это один из самых свежих сюжетов, у которого ещё только формируется продолжение.
Google встроит полноценную нейросеть Gemini в браузер Chrome для Android
Google внедряет полноценную интеграцию нейросети Gemini в мобильный браузер Chrome для операционной системы Android. Ранее в январе аналогичная функция автоматического просмотра...
Погода сигнала
Импульс быстро усиливается, поэтому это хороший ранний вход в тему.
Почему сейчас
Это один из самых свежих сюжетов, у которого ещё только формируется продолжение.
OpenAI выпустила мобильную версию приложения Codex
OpenAI расширила доступ к Codex: теперь за ходом работы над проектами можно следить со смартфона через приложение ChatGPT на Android и iOS. Функция открыта для всех пользователе...
Погода сигнала
Сейчас это одна из самых сильных точек сигнала: тема тянет поиск, внимание или редакционный приоритет.
Почему сейчас
Тема уже растёт в поиске: импульс 940 и 28 внешнего сигнала.
Quick Share позволит отправлять файлы с Android на iPhone по QR-коду
Google внедряет в сервис Quick Share возможность обмена файлами с устройствами на базе iOS посредством QR-кодов. Опция была анонсирована в ходе трансляции The Android Show: I/O ...
Погода сигнала
Импульс быстро усиливается, поэтому это хороший ранний вход в тему.
Почему сейчас
Это один из самых свежих сюжетов, у которого ещё только формируется продолжение.
Еще материалы от Habr
Свежие публикации и продолжение темы от той же редакции.
Промпты Nano Banana для фото и изображений: Бесплатно для Нано Банана Про
Создание безупречного визуала в Nano Banana — это не вопрос везения, а результат правильной коммуникации с нейросетью. В отличие от простых моделей прошлого, этот инструмент спо...
Погода сигнала
История уже пережила первый всплеск и теперь работает как надёжный контекстный материал.
Почему сейчас
История уже пережила первый заголовок, но всё ещё активно развивается.
Пошаговая инструкция установки MTProto прокси через Service Node + VLESS
Если вы когда-нибудь пытались поднять прокси для Telegram на сервере, то знаете, что такое «мессенджер не грузит». В этой инструкции я предлагаю рассмотреть подробную, пошаговую...
Погода сигнала
Сейчас это одна из самых сильных точек сигнала: тема тянет поиск, внимание или редакционный приоритет.
Почему сейчас
Тема уже растёт в поиске: импульс 918 и 28 внешнего сигнала.
Накрутка поведенческих факторов для роста позиций — реально ли за день занять топ 1 Яндекса
Знаете, можно много долго спорить о том, что вот там умеют делать, а наши ничего не умеют. Но подход Яндекса к формированию поисковой выдачи мне всегда импонировал больше, нежел...
Погода сигнала
История уже пережила первый всплеск и теперь работает как надёжный контекстный материал.
Почему сейчас
История уже пережила первый заголовок, но всё ещё активно развивается.
Тени истории. Ренессанс – революция, подарившая миру главный инструмент шпионов
Вторая статья цикла о криптографии, в котором мы рассказываем, как человечество училось прятать и расшифровывать секреты — от древних методов до современных алгоритмов. Сегодня ...
Погода сигнала
История уже пережила первый всплеск и теперь работает как надёжный контекстный материал.
Почему сейчас
История уже пережила первый заголовок, но всё ещё активно развивается.