Создаем 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
Источников в сюжете
6
Похожие статьи
Еще материалы, которые пересекаются по тегам, источнику или категории.
Защитить себя и других от мошенников поможет обновленный «Определитель номера» в «Сбербанк Онлайн»
Каждому пользователю «Сбербанк Онлайн» (версия приложения от 17.5 на устройстве Android) стало проще защитить себя...
Погода сигнала
Импульс быстро усиливается, поэтому это хороший ранний вход в тему.
Почему сейчас
Это один из самых свежих сюжетов, у которого ещё только формируется продолжение.
Защитить себя и других от мошенников поможет обновленный «Определитель номера» в «Сбербанк Онлайн»
Каждому пользователю «Сбербанк Онлайн» (версия приложения от 17.5 на устройстве Android) стало проще защитить себя...
Погода сигнала
Импульс быстро усиливается, поэтому это хороший ранний вход в тему.
Почему сейчас
Это один из самых свежих сюжетов, у которого ещё только формируется продолжение.
Google назвала лучшие ИИ-модели для разработки Android-приложений — Gemini проиграл GPT
Google в очередной раз обновила свой рейтинг Android Bench, в котором собраны лучшие модели искусственного интеллекта для разработки приложений под Android. В списке появилось м...
Погода сигнала
Импульс быстро усиливается, поэтому это хороший ранний вход в тему.
Почему сейчас
Это один из самых свежих сюжетов, у которого ещё только формируется продолжение.
Фейковые Minecraft и GTA для Android подписывали жертв на платные сервисы
Исследователи из zLabs раскрыли крупную вредоносную кампанию против пользователей Android. Злоумышленники распространяли почти 250 вредоносных приложений, которые тайно подписыв...
Погода сигнала
Импульс быстро усиливается, поэтому это хороший ранний вход в тему.
Почему сейчас
Это один из самых свежих сюжетов, у которого ещё только формируется продолжение.
Еще материалы от Habr
Свежие публикации и продолжение темы от той же редакции.
Промпты Nano Banana для фото и изображений: Бесплатно для Нано Банана Про
Создание безупречного визуала в Nano Banana — это не вопрос везения, а результат правильной коммуникации с нейросетью. В отличие от простых моделей прошлого, этот инструмент спо...
Погода сигнала
История уже пережила первый всплеск и теперь работает как надёжный контекстный материал.
Почему сейчас
История уже пережила первый заголовок, но всё ещё активно развивается.
Пошаговая инструкция установки MTProto прокси через Service Node + VLESS
Если вы когда-нибудь пытались поднять прокси для Telegram на сервере, то знаете, что такое «мессенджер не грузит». В этой инструкции я предлагаю рассмотреть подробную, пошаговую...
Погода сигнала
Сейчас это одна из самых сильных точек сигнала: тема тянет поиск, внимание или редакционный приоритет.
Почему сейчас
Тема уже растёт в поиске: импульс 919 и 27 внешнего сигнала.
Накрутка поведенческих факторов для роста позиций — реально ли за день занять топ 1 Яндекса
Знаете, можно много долго спорить о том, что вот там умеют делать, а наши ничего не умеют. Но подход Яндекса к формированию поисковой выдачи мне всегда импонировал больше, нежел...
Погода сигнала
История уже пережила первый всплеск и теперь работает как надёжный контекстный материал.
Почему сейчас
История уже пережила первый заголовок, но всё ещё активно развивается.
Тени истории. Ренессанс – революция, подарившая миру главный инструмент шпионов
Вторая статья цикла о криптографии, в котором мы рассказываем, как человечество училось прятать и расшифровывать секреты — от древних методов до современных алгоритмов. Сегодня ...
Погода сигнала
История уже пережила первый всплеск и теперь работает как надёжный контекстный материал.
Почему сейчас
История уже пережила первый заголовок, но всё ещё активно развивается.