Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 8, средняя оценка - 4.63
Tester64
395 / 356 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
#1

Использование NDK - Программирование Android

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

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

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

И были ли проблемы при распространении на чужих устройствах - "не работали" на каких-нибудь новых, старых или "китайских" процессорах?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.06.2014, 07:24     Использование NDK
Посмотрите здесь:

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

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

Чтение файла из ndk - Программирование Android
Пытаюсь прочитать файл с assets/myfolder/test.txt FILE * pFile = fopen ("myfolder/test.txt" , "r" ); if (pFile==NULL) { ...

Где скачать NDK? - Программирование Android
Подскажите пожалуйста где скачать NDK, ну что б более менее безопасно? Ссылка на офф сайте developer.android.com не работает, на трекере...

NDK под Android Studio - Программирование Android
Возможно ли это? Задача такая: Есть проект использующий простую (пока) библиотеку написаную на Си. Проект пишется на Студии и...

Eclipse ndk странные ошибки - Программирование Android
Здравствуйте! Вот мой код: com_contedevel_tests_SpeedTest.h /* DO NOT EDIT THIS FILE - it is machine generated */ #include...

LiveWallpaper на NDK без JAVA - Программирование Android
Возможно ли написать живые обои не используя яву? Только на С++ с использованием NDK? Как это сделать?

Разбор примера teapot из NDK - Программирование Android
Здравствуйте. Разбирая пример Teapot из примеров NDK столкнулся с непониманием определенных вещей. Информации тоже не могу толком...

NDK ошибка сборки проекта - Программирование Android
Здравствуйте! Пытаюсь настроить сборку C++ библиотеки в Android Studio. Делал по примерам, в итоге получил такой build.gradle: apply...

Нужен ли NDK начинающему разработчику? - Программирование Android
Добрый день! Интенсивно занимаюсь уже четвёртый месяц изучением Андроид, переделал сотни полторы интернет-уроков, купил много литературы,...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
EVP
321 / 243 / 43
Регистрация: 14.12.2010
Сообщений: 462
03.06.2014, 17:05     Использование NDK #2
Цитата Сообщение от Tester64 Посмотреть сообщение
Пытаюсь освоить NDK... И как всегда не хватает ЗАДАНИЙ! Не могу придумать где можно использовать (для новичка в с++)...
КО: если не можешь придумать, где применить C++ в программе для андроида, значит Java тебе вполне достаточно и не нужно ничего менять.
Если появились требования с которыми Java не справляется, тогда надо думать чего менять и в какую сторону двигаться.
Цитата Сообщение от Tester64 Посмотреть сообщение
Писать еще один игровой движок (на фоне десятка готовых профессиональных) не хочу...
Собственно, кроме игровых проектов ndk, вряд ли где-то понадобится..
NDK и нужен-то для портов с других платформ, т.к. C++, внезапно, оказался более пригодным для кроссплатформенной разработки, чем Java
Tester64
395 / 356 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
03.06.2014, 21:33  [ТС]     Использование NDK #3
У с++ много бонусов!

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. А с++ их бы ускорил! А мне кажется андроид никогда не уйдет из рынка дешевых но медленных устройств - начнутся микрочипы со встроенной ос для игрушек, роутеры с ос, розетки для умного дома, женские часики с мониторчиком, брелок на ключи, смыватель для унитаза и наклейки на портфель! И быстрые алгоритмы будут нужны... Явы всегда будет не хватать...
EVP
321 / 243 / 43
Регистрация: 14.12.2010
Сообщений: 462
04.06.2014, 20:03     Использование NDK #4
Цитата Сообщение от 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 строчек.


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

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

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

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

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

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


Если я возьмусь за свой проект (написание скриптового языка), то этот займет не меньше года! И отнимет кучу свободного времени. Не охота через пол-года-год закрыть проект из-за его глючности или не полной совместимости... И начать переписывать его еще и на яву... Не хочу тратить СТОЛЬКО времени в пустую!
Yandex
Объявления
08.06.2014, 07:30     Использование NDK
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru