Size: a a a

Android NDK (C++) — русскоговорящее сообщество

2018 October 05

KS

Kuanysh Serikov in Android NDK (C++) — русскоговорящее сообщество
Andrey Panchenko
думаю такой вопрос лучше задать в общем андроидном чате — там новичков больше, вероятность что они поделятся релевантной иформацией — выше
окай
источник

AP

Andrey Panchenko in Android NDK (C++) — русскоговорящее сообщество
NDK покрывает в основном две большие области, которые между собой пересекаются:
1. Использовать существующие, отлаженные библиотеки, которые написаны на C/C++ и которые долго/дорого/тяжело переписать на джаву.
2. Писать код, который делает какие-то тяжёлые вычисления в большом количестве — видео, аудио, игры, что там ещё можно придумать. Вот были бы у тебя десятки/сотни мегабайт данных — можно было бы подумать. В гугл клавиатуре, например, в нативную часть вынесена работа со словарями (чтобы искать слова супер быстро в бинарном словаре) и нейросети. Объёмы данных там небольшие, но нужен очень быстрый, прогнозируемый (относительно) отклик.

Есть ещё области поменьше, но в моей практике встречались довольно редко — шарить код с iOS, прятать какие-то алгоритмы в нативную часть. Что-то такое.
источник

SP

Silvestr Predko in Android NDK (C++) — русскоговорящее сообщество
Alexander Troynin
Понятно, спасибо. А в каких случаях кроме работы с 3d графикой можно смотреть в сторону ndk.
Java OpenGL
источник

SP

Silvestr Predko in Android NDK (C++) — русскоговорящее сообщество
Andrey Panchenko
NDK покрывает в основном две большие области, которые между собой пересекаются:
1. Использовать существующие, отлаженные библиотеки, которые написаны на C/C++ и которые долго/дорого/тяжело переписать на джаву.
2. Писать код, который делает какие-то тяжёлые вычисления в большом количестве — видео, аудио, игры, что там ещё можно придумать. Вот были бы у тебя десятки/сотни мегабайт данных — можно было бы подумать. В гугл клавиатуре, например, в нативную часть вынесена работа со словарями (чтобы искать слова супер быстро в бинарном словаре) и нейросети. Объёмы данных там небольшие, но нужен очень быстрый, прогнозируемый (относительно) отклик.

Есть ещё области поменьше, но в моей практике встречались довольно редко — шарить код с iOS, прятать какие-то алгоритмы в нативную часть. Что-то такое.
Прятать -
источник

SP

Silvestr Predko in Android NDK (C++) — русскоговорящее сообщество
Дебаг в руки и все)
источник

PV

Pavel Vasiliev in Android NDK (C++) — русскоговорящее сообщество
Alexander Troynin
Понятно, спасибо. А в каких случаях кроме работы с 3d графикой можно смотреть в сторону ndk.
Как уже упоминали, нейронки, криптография, графические движки, всякие хитрые обработки графики, видео, аудио.
При этом в даже в этих сферах в 90% случаев задачу можно и лучше действительно решить не трогая нейтив
источник
2018 October 09

S

Sergey in Android NDK (C++) — русскоговорящее сообщество
пытаюсь вкрутить boost для android . Скомпилил это:
https://github.com/moritz-wundke/Boost-for-Android
в каталоге out появились подкаталоги:
arm64-v8a / armeabi-v7a / x86 / x86_64

в сумме  1,6 Гб. если мне нужны все архитектуры, мне нужно затащить все эти 1,6 Гб в проект?
источник

SL

Sergei Loskutnikov in Android NDK (C++) — русскоговорящее сообщество
источник

IP

Ivan Ponomarev in Android NDK (C++) — русскоговорящее сообщество
@zzzaaaqqq судя по всему, ты собрал с отладочными символами. Собрались статические библиотеки, верно?
источник

S

Sergey in Android NDK (C++) — русскоговорящее сообщество
Ivan Ponomarev
@zzzaaaqqq судя по всему, ты собрал с отладочными символами. Собрались статические библиотеки, верно?
как понять что они статические?(с ndk работаю первую неделю)
собирал так:
./build-android.sh /home/sergey/Android/Sdk/ndk-bundle
источник

IP

Ivan Ponomarev in Android NDK (C++) — русскоговорящее сообщество
по расширению файла, .a - статические, .so - динамические
источник

S

Sergey in Android NDK (C++) — русскоговорящее сообщество
Ivan Ponomarev
по расширению файла, .a - статические, .so - динамические
значит статические
источник

IP

Ivan Ponomarev in Android NDK (C++) — русскоговорящее сообщество
Значит нет причин для беспокойства, вся дебаг информация стрипнется на этапе сборки и в apk это не попадёт. А вот для отладки крэш репортов отладочная информация будет очень полезна.
источник

IP

Ivan Ponomarev in Android NDK (C++) — русскоговорящее сообщество
на случай если крэш произойдёт внутри буста - можно будет посмотреть, в каком файле и в какой строке
источник

S

Sergey in Android NDK (C++) — русскоговорящее сообщество
Ivan Ponomarev
Значит нет причин для беспокойства, вся дебаг информация стрипнется на этапе сборки и в apk это не попадёт. А вот для отладки крэш репортов отладочная информация будет очень полезна.
т.е. я прав что нужно затащить все эти 1.6гб в проект что появились после компиляции в дире out?
источник

IP

Ivan Ponomarev in Android NDK (C++) — русскоговорящее сообщество
по идее да, нужно слинковать их с проектом
источник

IP

Ivan Ponomarev in Android NDK (C++) — русскоговорящее сообщество
но я ещё подозреваю, что ты собрал полный буст, а это обычно неоптимально
источник

IP

Ivan Ponomarev in Android NDK (C++) — русскоговорящее сообщество
нужно посмотреть какие модули используешь и собрать только их
источник

IP

Ivan Ponomarev in Android NDK (C++) — русскоговорящее сообщество
+ некоторые модули - header only и вообще не требуют линковки
источник

S

Sergey in Android NDK (C++) — русскоговорящее сообщество
Ivan Ponomarev
нужно посмотреть какие модули используешь и собрать только их
спасибо. пойду ещё почитаю
источник