Добавить новость
ВСЕ новости СЕГОДНЯ
RSS.+ — история VIP в новостях News24 с календарным архивом. Все самые быстрые 24/7 новости в ежеминутном тематическом обновлении Life24 — на русском, и не только + Today24, а также тексты с озвучкой — в авторском разделе #123ru.net
Ria.city

Создаем Java обертку для C++ класса в Android приложении, а также реализуем обратные вызовы из нэйтива

Habr.com
7

Кратко расскажу о себе и о том, зачем возникла необходимость в подобном. Я более десяти лет пишу приложения под Android, около 5 лет под IOS, и сейчас переношу свои наработки под десктопы. Приложения мои предназначены для сисадминов, это SSH клиент, сетевые сканеры и тд. В общем, самое сложное — не сам интерфейс, а то, что под капотом. Когда я лишь начинал, я думал, что остановлюсь на платформе Android и стал пилить все на Java. Но затем осознал свою ошибку и исправил ее. На данный момент все мои приложения состоят из двух частей: общего для всех систем ядра на С++ и платформозависимого интерфейса, написанного на Java/Swift/C++ в зависимости от системы.

Оговорюсь сразу, эта статья будет лишь своего рода вступлением. Я покажу, как работать с объектно‑ориентированным кодом на C++ в Java оболочке (в JNI нам доступен экспорт С функций). Инициализировать объект, делать из него вызовы, удалять, при этом имея аналогичный класс в оболочке, будто бы наш код был написан на Java. Задача эта не слишком сложная, но прежде чем опытные прогеры закрыли эту статью, я оговорюсь, что в следующей части мы уже будем работать с каллбэками — вызовами Java листенеров из нашего С++ кода, а вот это уже задача совсем нетривиальная, требующая понимания работы JNI и Dalvik. Но обо всем по порядку.

Итак, у нас есть некий CPP класс и Java оболочка. Через JNI мы можем вызывать только С‑функции, то есть не объектный код. Так как же нам работать с ООП? Главная проблема — не столько вызовы, сколько хранение адреса объекта нативного класса. Лично для себя я нашел решение — хранить его в Java классе, как long. То есть, у нас получается приблизительно такой код:

Читать далее


Все новости по теме на сегодня

Android в новостях



Музыкальные новости


Все новости 24/7






Общество

Все общество

Бизнес

Культура

Спорт

Политика

Авторы

Новости тенниса



Rss.Plus — реально независимые новости по темам (энциклопедический систематизированный навигатор "Википедия новостей 24/7" c ежеминутным тематическим мониторингом интернет-пространства) в форме аполитичного просветительского интернет-журнала на русском языке, без цензуры, на многоязычной международной веб-платформе 103news.com в содружестве с более чем 20 000 источников информации во всём мире, сайтом News-Life.pro, глобальными гео-проектами Ria.City и Moscow.Media под патронажем Russia24.pro с уникальным персонифицированным новостным разделом "Региональная власть РФ" без купюр и модерации, а также "VIP-скандалы" в двух цветовых вариантах "День - Ночь" (кнопка справа вверху). Эти новости увидят Ваши внуки (наша система обеспечивает вечное хранение опубликованной информации 24/7). Будьте честными сегодня, чтобы было не стыдно завтра.

Опубликовать свою новость в любом городе и регионе, а также на любом языке мира можно мгновенно — здесь


Ria.city
Новости России
Экология в России и мире
Спорт в России и мире
Moscow.media
Новости Крыма на Sevpoisk.ru
Губернаторы России

Все города России от А до Я

Персональные новости

BigPot.News — быстрые и самые свежие тематические новости об известных личностях в России, в Украине, в Беларусии, в Казахстане и за их пределами в календарном формате 24/7 на основе авторской технологичной информационно-поисковой системы Smi24.net с элементами искусственного интеллекта, гео-отбора и возможностью мгновенной публикации авторского контента в категориях News и Life в режиме Free Public



Больше новостей СЕГОДНЯ


RSS.plus — СРОЧНЫЕ новости. Неоспоримое преимущество RSS.plus — максимальная скорость публикаций 24/7. Быстрее нас, СЕЙЧАС, лишь только — ВЕТЕР Сайт создан под патронажем Россия24.pro — непрерывные новости из регионов 24/7 на русском + новости Москвы от Moscow.Media и мировые новости от Smi24.net и партнёров в календарном формате (вчера, сегодня и сейчас) совместно с 123ru.net и платформой СМИ24.net по технологии 103 NEWS

Опубликовать свою новость в любом городе и регионе, а также на любом языке мира можно мгновенно — здесь







Rss.plus