Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518

Использование NDK

03.06.2014, 07:24. Показов 2139. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пытаюсь освоить NDK... И как всегда не хватает ЗАДАНИЙ! Не могу придумать где можно использовать (для новичка в с++)...
Писать еще один игровой движок (на фоне десятка готовых профессиональных) не хочу...
Дополнительную систему безопасности - рано...
То что видел в примерах - поражает! Хочу написать свои либы, которые будут быстрее и круче явовских...

Где Вы использовали NDK в работе??? Не для лаб или курсовых, а для реальных проектов??? Причем самописные, а не готовые либы(игры, криптографию, OpenCV)?

И были ли проблемы при распространении на чужих устройствах - "не работали" на каких-нибудь новых, старых или "китайских" процессорах?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.06.2014, 07:24
Ответы с готовыми решениями:

Использование библиотеки (so) в исходниках на с++ с ndk
Добрый день. Недавно разбираюсь с NDK. И возник вопрос. У меня есть библиотека (1)(*.so), могу ли я ее подключить к NDK и...

Android Studio использование NDK
Разобрался с простеньким примером на NDK. Теперь, чтобы двигаться дальше, мне необходимо подключить в моём c++ коде <windows.h> и...

Использование boost::asio через NDK
Всем привет. Можно ли использовать asio для реализации сетевых взаимодействий в android? Или нужно использовать только то что предоставляет...

5
510 / 272 / 60
Регистрация: 14.12.2010
Сообщений: 548
03.06.2014, 17:05
Цитата Сообщение от Tester64 Посмотреть сообщение
Пытаюсь освоить NDK... И как всегда не хватает ЗАДАНИЙ! Не могу придумать где можно использовать (для новичка в с++)...
КО: если не можешь придумать, где применить C++ в программе для андроида, значит Java тебе вполне достаточно и не нужно ничего менять.
Если появились требования с которыми Java не справляется, тогда надо думать чего менять и в какую сторону двигаться.
Цитата Сообщение от Tester64 Посмотреть сообщение
Писать еще один игровой движок (на фоне десятка готовых профессиональных) не хочу...
Собственно, кроме игровых проектов ndk, вряд ли где-то понадобится..
NDK и нужен-то для портов с других платформ, т.к. C++, внезапно, оказался более пригодным для кроссплатформенной разработки, чем Java
0
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
03.06.2014, 21:33  [ТС]
У с++ много бонусов!

1) Скорость выполенения выше раза в 2 (минимум - говорят и в 10). А значит еще и экономия батареи при низких требованиях. MoreTeapots рисует 8х8х8=512 цветных вращающихся чайников и потребляет не больше 35% проца, когда любое активити открываясь требует 90-100%.

2) Взломо-устойчивость. Код моих либ и компонент останется только моим! Сравните - копаться в дизасемблере или обфуцироваом коде явы... Да через час я уже по яве представляю как подобное было сделано. Доп-защита для программы через ключи. Защищенные протоколы с сервером. Защита файлов шифрованием. Ява даже зип не шифрует! Защитив полезную библиотеку, я защищаю весь проект. ИМХО ява - это скорее серверная технология - когда защищать сервер не обязательно(админы позаботятся), а клиент бесполезно(кроме пароля к серверу там только интерфейс) - гугл всегда шел по такому принципу.

3) Как оказалось... компиляция и тестирование сишных кодов без графики (чистая математика) НАМНОГО быстрее чем тестирование на устройстве или эмуляторе! У меня занимает 3-4 секунды компиляция простого кода на с++ в консоли с выводом результата. Против 25-35 секунд на андроиде. Возможно (не тестировал, но слышал) что ява отладка без андроида тоже быстрая(1:1).

4) Возможно показалось, но конечный файл компиляции кода у с++ меньше чем у явы.

5) Никакого сборщика мусора - Убить класс - это освободить память для другого, а не ждать когда до него доберется сборщик. А значит экономия памяти. Для дешевых устройств - это критично! У меня после перепеолнения происходит горячий рестарт.

6) Легко подключать к старым проектам. Перекинул *.o и java класс-подключение-обвертку и используй. Не нужно "подключать" в проект как библиотеки на яве.

7) Все серьезные(сложные) проекты на маркете явно написаны на с++ или имеют вставки. Почему? Ведь вряд-ли ексель подгоняя под мобилку не писали с нуля. Даже будильник нашел с игровым(с++) интерфейсом. У меня ощущение что даже если использовать наработки из винды и переписать интерфейс на с++, то он будет во много раз быстрее работать (как в iPhone) даже на слабых устройствах.

МИНУС - не знаю как ведет себя на НЕ стандартных устройствах! Китайских, часах, медиаплерах, холодильниках, кофемашинах...

Мечтаю написать свой формат работы с базой данных - переписать старинный проект из делфей. Чем-то напоминает SQLite по структуре, но... таблицы однотипные, но завязаны в дерево. Поддержка разных уровней шифрования на каждую таблицу. Короче... высокая скорость, высокая защита, ноу-хау структура (не должны догадаться как храниться). В свое время писал(изобретал) 3 года на Делфи. С++ знаю плохо, значит переписывать(учиться) буду еще года 1.5-2 (когда/если серьезно возьмусь)... Основа для своего языка программирования. УЖЕ могу (умею) начать писать на яве, но ЭТИ коды не должен видеть никто! Как исходники протокола скайпа! Пользоваться - пожалуста - десяток-сотня команд. Но как оно внутри работает - это мое!

Но это слишком тяжелый проект для новичка!!! Нужно потренироваться на 2-5ти более простых задачах! Написать пару не слишком тяжелых либ и потестить их пол-годика на десятке устройств...

Например я пишу свою либу мультитача. Пока в яве. Довольно сложную. А значит позднее (возможно) и медленную в расчетах! Довольно уникальную - в опенсорсы ее выкладывать не собираюсь... особенно случайно, приклеив ее к мелкому проекту-образцу(или на фрилансе). Можно конечно вынести отладку в отдельный проект, оформить как либу и надеятся на надежность обсфуктора... А можно зашить в *.о и больше не парится. Можно даже ограничить функционал либы наличием файла-ключа на устройстве разработчика... Переписать на с++ займет неделю-две... Но немного страшно! Убить 2 недели и получить глюки, несовместимости, критические ошибки(проект тупо закрывается при ошибке в с++, даже обработчик ошибки не вызывает)...

Кто-нибудь из Вас писал на с++ что-нибудь кроме игрушек?

Помню... Во времена турбо-паскаля было модно делать вставки на асемблере. Это ускоряло выполнение любой подобной процедуры в несколько раз(иногда и в 10). Код становился менее читабельным, но... кнопки нажимались быстрее, картинки быстрее отрисовывались, код быстрее считался... для медленных устройств это было полезно!
У некоторых моих знакомых до сих пор тормознутый андроид2.3. А с++ их бы ускорил! А мне кажется андроид никогда не уйдет из рынка дешевых но медленных устройств - начнутся микрочипы со встроенной ос для игрушек, роутеры с ос, розетки для умного дома, женские часики с мониторчиком, брелок на ключи, смыватель для унитаза и наклейки на портфель! И быстрые алгоритмы будут нужны... Явы всегда будет не хватать...
0
510 / 272 / 60
Регистрация: 14.12.2010
Сообщений: 548
04.06.2014, 20:03
Цитата Сообщение от Tester64 Посмотреть сообщение
У с++ много бонусов!
Только надо учитывать, что собирать эти бонусы придётся на поле, усеянном граблями различной формы и величины.
Новичку эти грабли могут отбить желание собирать бонусы.

Цитата Сообщение от Tester64 Посмотреть сообщение
Мечтаю написать свой формат работы с базой данных - переписать старинный проект из делфей... Основа для своего языка программирования.
Компилятор своего языка.
Чем тебе не задание, о котором ты сам же и спрашиваешь?)
На мой взгляд, теоретически и практически очень полезное, но потребует затрат ресурсов приличных.

Много инструментов пригодных: генераторы парсеров, LLVM...
Но настоящего программиста готовые инструменты не привлекают.
Настоящий программист - это спортсмен-велосипедист.
Он свои инструменты создаёт, как же иначе?

Кликните здесь для просмотра всего текста

Поясню свою мысль, высказанную ранее.

Речь не про (C++ vs Java).
Речь про ((C++ на Android'е) vs (Java на Android'е)).

Android это всего лишь ещё одна платформа для программ.
Поэтому два подхода в разработке:
- программа исключительно для Android'а.
- кроссплатформенная программа в том числе и для Android'а.

В первом случае, надо очень сильно задуматься о необходимости C++.
Во втором случае, у C++ конкурентов почти нет.

По игровым проектам.
Например такие вещи как PowerVR SDK и Project Anarchy - кроссплатформенные решения для разработки.
Есть возможность, разрабатывать и отлаживаешь всё, не касаясь андроида.
Никто не запрещает самому написать свой кроссплатформенный SDK.
Поэтому, чаще всего, портируют приложение на Android, а не разрабатывают на Android'е.
Но это всё игрушки, там рулит C++.

Да и про мультитач либу ты загнул: например, у Марио Цехнера это класс в 150 строчек.


Успехов!
0
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
04.06.2014, 22:41  [ТС]
Цитата Сообщение от EVP Посмотреть сообщение
Чем тебе не задание, о котором ты сам же и спрашиваешь?)
Это слишком тяжелое задание для новичка. И очень много моментов, когда от от начала написания блока до попытки его скомпилировать без ошибок пройдет неделя. На делфи могу выдержать и месяц. На яве неделю.. На си - час! Например сложные парсеры строк с занесением результатов в таблицы (понятия не имею как это сделать на с++, но знаю как по инструкциям собрать подобное на яве и по памяти напишу на делфи).

Нужно что-то простое! И НЕ игровое! И ОЧЕНЬ хочу получить положительный отзыв о технологии (применение NDK в андроиде) от того кто написал на нем что-нибудь свое (а не воспользовался готовыми либами вроде игровых движков)

Цитата Сообщение от EVP Посмотреть сообщение
про мультитач либу ты загнул: например, у Марио Цехнера это класс в 150 строчек
Это Марио сильно упростил! У меня готово 3 вида зума(в разработке еще 2) и вращения плоских фигур 1м, 2мя и 3мя пальцами, дблклик с управляемой схемой задержек(хоть морзянку отбивай), лонг клик с 5ю управляемыми длительностями удержания, прострой драг. И мне пока не приходилось полноценно использовать драг, физическое торможение-разгон фигур после отпускания, распознавать простые жесты... Потенциал большой! Проделано уйма работы по вычислениям векторов. Но стоит выложить программу где нужно использовать лишь один раз дблклик и все - исходники можно изучать и целиком использовть(обсфуктор либо не спасет, либо замедлит работу)!

Цитата Сообщение от EVP Посмотреть сообщение
На мой взгляд, теоретически и практически очень полезное, но потребует затрат ресурсов приличных.
Не особо - очень узкоспециализированый транслятор, скриптовый язык. Тормознутее явы, но не требующий компиляции... Перекинул скрипт на устройство и пользуйся. Пока для простых число-строковых расчетов для одной моей программы... Я не псих, мечтающий заменить яву (и с++) на устройстве. Вроде кривых бейсиков... Но нужна надежность выполненя не ниже явы и защищенность кода транслятора на уровне с++... Сложная только своя схема хранения скриптов и базы в одном файле!
0
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
08.06.2014, 07:30  [ТС]
Ну-же! Специалисты! Отзовитесь! Кто реально использовал NDK? И у кого NDK успешно работает? И не написание игры на чужом движке, а что-нибудь свое??? Меня НЕ интересуют Ваши тайны. Мне НЕ важны даже направления Ваших проектов. Обещаю даже не приставать с вопросами по самому NDK!

Просто сообщите насколько надежна технология NDK по Вашему мнению после ее активного применения!!!

1) Были ли глюки, которые исправлялись только заменой устройства?
2) Были ли глюки, из-за которых возвращались назад на яву или закрывали проект?


Если я возьмусь за свой проект (написание скриптового языка), то этот займет не меньше года! И отнимет кучу свободного времени. Не охота через пол-года-год закрыть проект из-за его глючности или не полной совместимости... И начать переписывать его еще и на яву... Не хочу тратить СТОЛЬКО времени в пустую!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.06.2014, 07:30
Помогаю со студенческими работами здесь

Подключить стороннюю NDK-библиотеку к своему NDK-проекту
Пытаюсь подключить к своему (на самом деле не совсем своему) NDK-проекту стороннюю библиотеку libpng (http://www.libpng.org). Содержимое...

AS и Ndk
Здравствуйте На официальном сайте в разделе ndk почему- то описывается eclipse Предполагается что с AS по аналогии и типа сами...

Android NDK
Здравствуйте. Хотелось бы написать пару программок на андроид, но джаву вообще не знаю. Нагуглил, что можно писать на С++, но толком как...

NDK и SDK
есть класс на яве который использует массив, который с течением времени увеличивается ( то есть массив динамический) в массиве находятся...

Android NDK
Здравствуйте, форумчане. Появилось пара вопросов относительно Android NDK... С NDK можно программировать только вставками нативного...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru