Создаем 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. То есть, у нас получается приблизительно такой код:
Связанные теги
Компании и люди
Линия сюжета
Android
Последние материалы и связанный контекст по теме Android.
Habr
Последние материалы и связанный контекст по теме Habr.
Habr
Последние материалы и связанные ссылки по теме Habr.
iOS
Последние материалы и связанный контекст по теме iOS.
Java
Последние материалы и связанные ссылки по теме Java.
SSH
Последние материалы и связанные ссылки по теме SSH.
Продолжить следить за темой
Переходите к связанным материалам, страницам сущностей и активным линиям сюжета.
Развёртывание сети на базе Meshtastic
Mesh‑сети в целом, и, в частности Meshtastic, уже давно не новая история. Почти все, кто называет себя радиолюбителем имеет одну‑две ноды в ящике своего рабочего стола. А с неда...
Лучшие YouTube-каналы по Data и Product Analytics, которые прокачивают английский (и мышление)
Привет, меня зовут Янина. Днем я управляю продуктами и проектами. Вечером — сижу в Jitsi с ребятами из IT и обсуждаю, почему у кого-то не полетел A/B-тест, как считать retention...
Продвинутый RBAC: роли, статусы, теги без боли и страданий
Сегодня детально расскажу про сердце JMatrixPlatform - статусно-ролевой доступ к данным. Это основа платформы, доступная сразу "из коробки", которая реализует продвинутый RBAC с...
Вышла российская операционная система «Альт Мобильный» 11, независимая от Android
«Базальт СПО» объявила о выходе операционной системы для мобильных устройств «Альт Мобильный» на одиннадцатой платформе, предназначенной для использования предприятиями и органи...
Документальное сопровождение создания ИТ-продуктов в рамках выполнения ИТ-проектов
В статье представлены результаты анализа национальных стандартов, закрепляющих требования к последовательности работ по созданию ИТ-продуктов, составу, видам, наименованию, комп...
Как я детей вайбкодингу учил
Привет, Хабр.Я продолжаю свою педагогическую вахту. В прошлый раз я рассказывал о том, как боролся с костылями в генераторе судоку, а сегодня хочу поднять тему, которая вызывает...
Рекламный слот
Встроенный блок в статье
Зарезервированный партнерский слот для релевантных инструментов, сервисов и аккуратных редакционных интеграций.
Похожие статьи
Еще материалы, которые пересекаются по тегам, источнику или категории.
Развёртывание сети на базе Meshtastic
Mesh‑сети в целом, и, в частности Meshtastic, уже давно не новая история. Почти все, кто называет себя радиолюбителем имеет одну‑две ноды в ящике своего рабочего стола. А с неда...
Лучшие YouTube-каналы по Data и Product Analytics, которые прокачивают английский (и мышление)
Привет, меня зовут Янина. Днем я управляю продуктами и проектами. Вечером — сижу в Jitsi с ребятами из IT и обсуждаю, почему у кого-то не полетел A/B-тест, как считать retention...
Продвинутый RBAC: роли, статусы, теги без боли и страданий
Сегодня детально расскажу про сердце JMatrixPlatform - статусно-ролевой доступ к данным. Это основа платформы, доступная сразу "из коробки", которая реализует продвинутый RBAC с...
Вышла российская операционная система «Альт Мобильный» 11, независимая от Android
«Базальт СПО» объявила о выходе операционной системы для мобильных устройств «Альт Мобильный» на одиннадцатой платформе, предназначенной для использования предприятиями и органи...
Еще материалы от Habr
Свежие публикации и продолжение темы от той же редакции.
Развёртывание сети на базе Meshtastic
Mesh‑сети в целом, и, в частности Meshtastic, уже давно не новая история. Почти все, кто называет себя радиолюбителем имеет одну‑две ноды в ящике своего рабочего стола. А с неда...
Лучшие YouTube-каналы по Data и Product Analytics, которые прокачивают английский (и мышление)
Привет, меня зовут Янина. Днем я управляю продуктами и проектами. Вечером — сижу в Jitsi с ребятами из IT и обсуждаю, почему у кого-то не полетел A/B-тест, как считать retention...
Продвинутый RBAC: роли, статусы, теги без боли и страданий
Сегодня детально расскажу про сердце JMatrixPlatform - статусно-ролевой доступ к данным. Это основа платформы, доступная сразу "из коробки", которая реализует продвинутый RBAC с...
Документальное сопровождение создания ИТ-продуктов в рамках выполнения ИТ-проектов
В статье представлены результаты анализа национальных стандартов, закрепляющих требования к последовательности работ по созданию ИТ-продуктов, составу, видам, наименованию, комп...