Как объединить C и java?

303
28 апреля 2017, 17:48

Нужно написать мобильное приложение на android, но основная часть кода (так сказать, ядро) должна быть написана на Си. Можно ли как-то объединить эти два языка? Какие есть библиотеки для этого? Если у кого было такое - поделитесь) Нужно для курсача.

Answer 1

Да, это возможно. Для сишной части надо использовать Android NDK, Java часть где и обычный SDK.

NDK это по сути сишный компилятор GNU слегка подрихтованный под Android и обогащенный специфическими либами.

Связка Java-C работает через механизм JNI (Java Native Interface)

Простые примеры вызова из Java Android к сишным функциям можно посмотреть здесь

Стандартный паттерн Java-C для Android следующий:

  1. UI весь пишется под Java
  2. Вычислительно тяжелые вещи на NDK

Необходимо учитывать, что Android работает на нескольких вычислительных платформах/архитектурах, соответственно, чтобы он работал везде сишная часть должна генерировать несколько библиотек. На текущий момент имеется 7 поддерживаемых NDK архитектур:

  • arm64-v8a
  • armeabi
  • armeabi-v7a
  • mips
  • mips64
  • x86
  • x86_64

Подробнее здесь

P.S. Отдельно отмечу, что писать под NDK занятие тяжелое и не очень благодарное. Особенно отладка кода - это жесть. Зато результат великолепен.

READ ALSO
Внезапный crash

Внезапный crash

Удаляю элемент списка, он удаляется, но крэшится приложение

216
Listener для jSpinner - действие по нажатию клавиши Enter

Listener для jSpinner - действие по нажатию клавиши Enter

Есть небольшое оконное приложение на SwingНа форме JFrame form расположены текстовые поля и объект jSpinner spinner

374
Как распарсить такую строку?

Как распарсить такую строку?

У меня есть строка такого типа

452
Семантичная разметка на странице

Семантичная разметка на странице

Делаю сейчас дизайн для сайта и никак не могу определиться с нужными тегами

236