LINUX.ORG.RU

С чего начать C++ разработчику под Android в нашем 2016 году?

 ,


4

7

Пару лет назад накодил одно приложение на Java под андроид, с тех пор всё забыл. Возился с эклипсом и какой-то тулзой, уже не помню. Теперь хочу немного вернуться к этому, но уже на C++. Надо гуглить «NDK» вроде.

А какой есть минималистический набор тулзов для этого дела, сидя под убунтой? В идеале так: на рабочей машине консольные компиляторы + консольная заливалка на девайс, а девайс лежит рядом и позволяет на себе запустить-убить отлаживаемое приложение с рабочего компа из той же консоли, посмотреть на рабочей машине в консоли логи, идущие от девайса.

По поводу самой разработки: хочется, чтобы приложение запустилось с минимумом Java и потом ушло в плюсы, а там отрисовать интерфейс (OpenGL или какие-то примитивы) и жить до смерти приложения, работая с сетью и графикой.

qtcreator c тулчейном.

anonymous
()

С чего начать C++ разработчику под Android в нашем 2016 году?

С изучения Java.

На C/C++ там пишется только требуемый к производительности код (игры, к примеру).

Есть исключения из правил, смотри исходный код PPSSPP, к примеру.

НО у Android всё железо «повешано» на Java API и достучаться из C++ до него весьма трудно. Об этом нужно помнить.

EXL ★★★★★
()

А какой есть минималистический набор тулзов для этого дела, сидя под убунтой?

android-ndk, vim + ycm.

По поводу самой разработки: хочется, чтобы приложение запустилось с минимумом Java и потом ушло в плюсы, а там отрисовать интерфейс (OpenGL или какие-то примитивы) и жить до смерти приложения, работая с сетью и графикой.

NativeActivity и не нужно никакой явы вообще. Но рано или поздно захочется прикрутить гуглосервисы, аналитику, рекламу, мордокнигу, etc, вот тогда придется достать синюю изоленту и вспомнить про jni.

andreyu ★★★★★
()

Зря.

С одной стороны, Android - embedded. ARM. Носимое устройство. Работа от батарейки. Казалось бы, отличное место для плюсОв. Но нет, самое главное, как оказалось - интерфейс: анимации, отрисовка на хреновой туче разрешений и двух ориентациях, поддержка системных тем, менюшки, ListView и все дела. Разновсяческие контролы и валидация.

И предложения вида: а вот если выбрана одна галка, то фон третьей слева надписи сделать зеленым, а если две - то сходить в интернеты, скачать свежую порцию данных и отобразить прогресс.

Сколько у тебя уйдет на это времени на OpenGL - да вся жизнь, только бросишь раньше.

---

Но если ты коммунист, и трудностей не боишься, то ставь NDK - самые настоящие консольные компиляторы, а от Android SDK есть adb - самая консольная из всех управлялок. Можешь ей и apk залить, и запустить его, и логи посмотреть, и файлы с устройства забрать, и, вр

Так что бери Java, грызи туториалы и не выпендривайся.

anonymous
()
Ответ на: комментарий от EXL

native-plasma

Долго пришлось повозиться, чтобы плазма не падала.

i-rinat ★★★★★
()
Ответ на: комментарий от EXL

ну вот на днях мне нужно было перевести FileDescriptor, который вернул UsbAccessory в блокирующий режим. без jni никак. простого аналога select/poll в жабе нет, опять jni. навскидку.

vvviperrr ★★★★★
()

бери тайзен - все на крестах. слмзан с андроида.

vvviperrr ★★★★★
()

с джавы начать, плюсы нужны если тебе нахватает по какой то причине джавы или СДК

пример: делаешь DAW или активно работаешь со звуком

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

правда и тут тебя обскачет libgdx

umren ★★★★★
()

Смотря что тебе надо. Можно использовать NativeActivity, тогда жабы будет ещё меньше.

Но ИМХО, лучше один раз проработать интерфейс JNI, написать некоторое количество жабы и забыть об этом байткодовом кошмаре до следующих серьёзных обновлений.

a1batross ★★★★★
()

QtCreator и qml. Очень удобно девелопить и тестировать, т.к. работает и на десктопе и на таргете.

invy ★★★★★
()
Ответ на: комментарий от CrossFire

Два чая.

недавно узнал, что qml уже не такое гавно на андроиде, как было год-полтора назад. Уже даже вполне можно что-то делать.

anonymous
()
Ответ на: комментарий от invy

QtCreator и qml. Очень удобно девелопить и тестировать, т.к. работает и на десктопе и на таргете.

+1, виджеты глючат, а вот QML вроде норм, и C++ можно прицепить

I-Love-Microsoft ★★★★★
()

А как физически железо повешано на Java API? Вот есть камера в смартфоне, она наверное подключена каким-то модулем ядра v4l... Что дальше? В плюсах я открываю «/dev/video0» и что-то оттуда читаю, управляя камерой через fcntl или что-то такое (выставить разрешение и др.) Под андроидом это сделать не дадут? А как ява-машина это делает? Через свою системную библиотеку, которая работает с правами рута, написана на C и «видит» железо?

2) А можно под андроидом сделать connect, read, write в сокеты? Если нет, то почему?

hlamotron
() автор топика
Ответ на: комментарий от pftBest

Если верить ссылке, которую скинул я, то там просто подгружается .so-шка и java-фреймворк дёргает оттуда функции через JNI. Никаких отдельных процессов.

utf8nowhere ★★★
()
Ответ на: комментарий от utf8nowhere

Читай внимательнее. Системный процесс /system/bin/mediaserver подгружает либы libcameraservice.so и libcamera_client.so, и делает всю работу с камерой (и CPU тоже жрет при этом). А приложение пользователя подгружает либу libcamera_client.so через JNI чтобы общаться через IPC с этим процессом.

pftBest ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.