@savchby
Java Core, Google Android

Программирование для Android на С/С++?

Добрый день. Заинтересовался подобной темой. До этого программировал исключительно для Windows на С/С++ + DirectX для разработки простых 3D игр. Опыт разработки есть, мат. часть тоже. Но хотелось бы найти себя в чем-то новом, например, в разработке под Android. Сам Android мне близок, ибо девайс под этой ОС, но не писал под него ничего подобного. Java мне чужд, не перевариваю его (джависты, не надо сразу кидаться помидорами). Так вот, главный вопрос, который мне интересен: можно ли писать под Android не прибегая к коду Java (тот же Android NDK)? Если да, то какую посоветуете литературу (английский / русский)? И что я получу от использования исключительно С/С++, кроме сложностей реализации? Для меня важно, в целом, это скорость работы приложения и минимизация использования системных ресурсов.

Разрабатывать планирую приложения с большим вычислительным функционалом: научные приложения, сложные 3D игры с огромным кол-вом математических и физических вычислений.
  • Вопрос задан
  • 84107 просмотров
Решения вопроса 1
profesor08
@profesor08
Не прибегая к коду Java не выйдет. Android NDK позволит писать на С++ только некоторые части приложения, например библиотеки. Там прям на главной странице написано: The Android NDK is a toolset that lets you implement parts of your app using native-code languages such as C and C++. For certain types of apps, this can help you reuse code libraries written in those languages.
Ответ написан
Пригласить эксперта
Ответы на вопрос 4
orcDamnar
@orcDamnar
Java, C/C++, Android SDK
Склонен считать, что программист, который не переносит тот, или иной язык программирования - пока еще недостаточно программист. Язык - это инструмент. Вообще, приложения на NDK сделать можно, смотрите в строрну NativeActivity - получаете точку входа, а дальше делайте что хотите на C/C++. Но я бы не стал забивать гвозди микроскопом. При разработке на чистом С/C++ для андроид - вам придется сделать весь ЮИ, который уже есть в стандартном SDK, своими руками... Может быть вы сможете сделать лучше, но всегда станет вопрос кому это было нужно?
Ответ написан
jamakasi666
@jamakasi666
Просто IT'шник.
Android NDK очень плохо документирован. Надо брать в расчет что процессоры разные (armeabi armeabi-v7a x86) и есть небольшие расхождения (небольшая информация тут). Так же необходимо учесть что нормально писать и компилить NDK лучше на линуксах. Так же стоит учитывать что NDK богатством функционала тоже разнится от версии к версии, так же это зависит и от конкретного девайса(производители очень любят залезть в ядро и стандартные либы и переиначивать их). Без JAV'ы совсем не получится, хотя бы минимально она будет. С GUI тоже все печально, нужна java или NativeActivity который опять же труба через JNI.
В общем литературы по NDK катастрофически мало, сюрпризов очень много, без java кода максимум можно сделать что то консольное, что в чем то даже удобно.
Мельком глянул сейчас, вроде бы появились фреймворки с нативными UI для NDK, к примеру juce.com.
Ответ написан
@sitev_ru
sitev.ru - мой блог ...
Сейчас засыплю цитатами из интернета ))

От привычных мобильных приложений до программного обеспечения высокотехнологичного промышленного оборудования – Qt лежит в основе миллионов устройств и программ, используемых по всему миру.


Язык C++ сохраняет высокий уровень совместимости на разных платформах и устройствах.
Вы можете переносить существующие библиотеки C++ для платформ Android и Windows...


C++Builder - это отмеченный наградами набор инструментов быстрой разработки приложений на C++ для нативной разработки под Windows, Mac и для мобильных устройств, с расширенной поддержкой облаков и IoT.


... ну и т.д...
Ответ написан
Комментировать
@HolyBlackCat
Если взять хороший кроссплатформенный фреймворк, то писать на джаве не придется.
Например, в комплекте с SDL идет шаблон проекта для Android NDK с уже готовой оберткой на джаве, которая выполняет кое-какую инициализацию и вызывает нативный main().
Подключение каких-то еще библиотек требует плясок с бубном, но в итоге код с десктопных платформ работает почти без изменений. Даже OpenGL ES из нативного кода работает.

какую посоветуете литературу

Мануала к выбранному фреймворку и гугла должно хватить.

что я получу от использования исключительно С/С++

Прирост в производительности, но это и так понятно.
Размер бинарников больше: Код и все нативные библиотеки компилируется отдельно под разные архитектуры (в моем случае было 4) и собирается в одно приложение.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы