The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Для платформы Android реализована поддержка разработки программ на языках Си и Си++

26.06.2009 13:11

Компания Google представила пакет Android NDK (Native Development Kit), позволяющий организовать сборку и выполнение программ, написанных с включением блоков кода на таких языках программирования, как Си и Си++. NDK не поддерживает выполнение целиком нативных приложений, программы по прежнему выполняются под управлением виртуальной машины Dalvik.

Пакет NDK включает в себя:

  • Набор утилит и сборочных файлов для генерации специальных нативных библиотек на основе исходных текстов на языках Си и Си++. Поддерживается набор инструкций ARMv5TE;
  • Инструменты для встраивания сгенерированных нативных библиотек в APK пакеты с приложениями, пригодные для установки на мобильных устройствах на базе платформы Android;
  • Коллекцию системных заголовочных файлов и библиотек, поддерживаемых платформой Android. Например:
    • libc - стандартная Си библиотека;
    • libm - стандартный набор математических функций;
    • JNI (Java Native Interface) интерфейс;
    • libz - библиотека для сжатия данных;
    • liblog - библиотека для ведения логов;
    • библиотеки для поддержки языка C++.
  • Документацию и примеры кода.

Разработчики Google предостерегают от необдуманного использования NDK в программах, советуя взвешивать его преимущества и многочисленные недостатки, такие как: усложнение кода, повышение трудоемкости отладки и недоступность функций Java API платформы Android из нативных блоков кода. Рекомендуется использовать NDK для оптимизации операций, требующих интенсивных вычислений или сложной обработки большого объема данных. В будущем планируется добавить в NDK поддержку графических (OpenGL ES) и звуковых библиотек, что должно способствовать созданию для платформы новых высокопроизводительных игр.

  1. Главная ссылка к новости (http://android-developers.blog...)
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/22340-google
Ключевые слова: google, android, gcc, cpp
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (34) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Серж (??), 13:34, 26/06/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Совесть проснулась у большого брата
     
     
  • 2.13, User294 (ok), 03:50, 27/06/2009 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Она так, как-то сильно местами проснулась :).В лучших традициях гугеля - как всегда, предлагается вырезать гланды, через жопу, автогеном.Ну посмотрим как гугель запоет когда интель с нокией ему хвост прищемят.При том у этих интерфейсы будут нормальными.Ну там Qt например :)
     
     
  • 3.25, Банзай (??), 20:22, 28/06/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >Она так, как-то сильно местами проснулась :).В лучших традициях гугеля - как
    >всегда, предлагается вырезать гланды, через жопу, автогеном.Ну посмотрим как гугель запоет
    >когда интель с нокией ему хвост прищемят.При том у этих интерфейсы
    >будут нормальными.Ну там Qt например :)

    А чем Qt "нормальнее" Android'a?

     
     
  • 4.32, nickelodeon (?), 17:34, 29/06/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Используя Qt можно сразу писать высокопроизводительное приложение на C++, которое будет работать на Symbian S60 и Windows Mobile, т.е. сразу быстрый код + две платформы. Benefit-ы очевидны.
     
  • 4.33, User294 (??), 18:55, 29/06/2009 [^] [^^] [^^^] [ответить]  
  • +/
    > А чем Qt "нормальнее" Android'a?

    Например тем что программа писанная на Qt без всяких левых выгибонов и сраных эмуляторов запускается на Windows, MacOS, Linux и почти любой иной полноценной платформе с UI под которую портанули Qt, а таковых все больше и больше.

    А андроид... он ни с чем не совместим и как максимум юзабелен через тормознутый эмулятор.Который есть далеко не везде.

    В итоге по части кроссплатформенности: тот же QutIM или Psi я могу поставить и в Windows, и в Linux (и в макоси наверное...).Кстати Linux проверял как i386, так и AMD64 (который актуальнее в свете цен на оперативку) и даже специфичный вариант пингвина на N800 с ее ARM процессором.И все это без особого секаса.Вот это - да, переносимость.Благо у винды на i386 крайне мало общего с пингвином работающем на ARMовском процессоре.

    А вот с программами для андроида так не катит.Запустить их без особого секаса на перечисленных платформах?Ха-ха, ну да, мечтать не вредно.А чтобы системными средствами поставить программу и просто работать с ней, не грея мозг?Ну да, сие не про андроид и его приложения :)

     

  • 1.2, Daniel (??), 13:34, 26/06/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Толку от этого мало, JNI-тормоз все испортит. Не много задач требующих активных фоновых вычислений на смарте...
     
     
  • 2.9, armsargis (?), 18:13, 26/06/2009 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Did you use Android, is it slow? For me for sure not slower than IPhone application written on Objective C
     
     
  • 3.11, Vladyslav Lazarenko (?), 21:16, 26/06/2009 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Родной язык забыли, уважаемый?
     
  • 3.16, User294 (ok), 06:16, 27/06/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Для ифона серьезные геймдевы уже объявили планы насчет гамез.Для андроида - гы-гы, ага, как же.Ну понятно что нормальные геймдевы думают о таких "интерфейсах" :)
     
     
  • 4.21, Ivan (??), 04:03, 28/06/2009 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Нормальные геймдевы думают о том с какого стада они больше бабла начешут.

    Человек, купивший iPhone по определению гойтов тратить деньги.

    Человек, купивший Android - вероятно либо ищет доступных альтернатив либо просто строит из себя гика.

     
     
  • 5.34, mma (?), 05:32, 30/06/2009 [^] [^^] [^^^] [ответить]  
  • –1 +/
    По большей степени человек купивший ифон ничего другого не купит - ему не надо, для него ифон это просто понтовый телефон. А вот как раз те кто покупает андройды они знают что покупают и продать им качественную прогу проще
     
  • 3.17, Alexey (??), 19:05, 27/06/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Не, ну конечно C с расширениями гораздо медленнее, чем эмуляция C++ через Java.
     

  • 1.3, Nexor (?), 14:19, 26/06/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Забыли тогда уж добавить asm
     
     
  • 2.6, pavlinux (ok), 15:19, 26/06/2009 [^] [^^] [^^^] [ответить]  
  • +4 +/
    main() {
    asm(...);
    }
     

  • 1.4, _Vitaly_ (ok), 14:21, 26/06/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    А как же защищенность данных? Вдруг такой библиотекой украдут все мои пароли от порносайтов?

    Интересно, на JIT для далвика забили или нет? Далвик ведь медленный не потому что джава плохая.

     
     
  • 2.5, quququ (?), 15:17, 26/06/2009 [^] [^^] [^^^] [ответить]  
  • +1 +/
    В Андроиде у каждого приложения свой id. А файлы создаються с правами на чтение только для владельца. Соответственно, натив вам не поможет.
     
     
  • 3.10, _Vitaly_ (ok), 18:55, 26/06/2009 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Можно память сканировать. А код прямого доступа к файловой системе можно и с собой притащить.

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

     
     
  • 4.14, User294 (ok), 03:55, 27/06/2009 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >Можно память сканировать.

    Паазвольте?А какие-это современные операционки+процы позволяют программам вот так запросто в чужой памяти шариться?Как минимум без рутовых прав?Ничего что программы в режиме юзера работают а не в ядре (у современных ARM деление на кернел и юзер - есть) и потому могут только в своей памяти копаться.А чуть шаг в сторону как то обращение за пределы адресов которые выделены проге - бумс.Прога характерно так падает.Со всем известным сообщением по этому поводу прога расстреливается на месте за левые поползновения ;).Грубо говоря - хоть это и телефон, но ядро там от все той же многопользовательской и многозадачной системы.И права оно энфорсит как и раньше.И по чужой памяти шариться из user-mode там наверняка нельзя, как и в обычном линухе(как минимум, покуда вы не рут и не в ядре - вам положена жирная фига на этот счет).

    >А код прямого доступа к файловой системе можно и с собой притащить.

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

    > Короче, без аппаратного разграничения доступа веселых делов можно
    > натворить песец как много.

    А что, деление на кернель и юзерь режимы у ARM уже отменили?Или линуксное ядро у гугля перестало права доступа энфорсить и разделять программы друг от друга?Вообще-то пингвин на армах, как минимум, тех которые с MMU (а в современных мобилах все ARM именно такие) - точно такой же как и везде в этом плане.И дележка прав там есть.Чем гугл и воспользовался для создания их извращенной системы прав :).

     
     
  • 5.27, ptr (??), 10:24, 29/06/2009 [^] [^^] [^^^] [ответить]  
  • +/
    При чем тут *nix? В Android он типа хост системы для Xen. Все выполняется на Java VM. А как там обеспечивается защита памяти не для Java скриптов, а для функций скомпилированных в _любые_ машинные команды, мне не ведомо.
     
     
  • 6.36, quququ (?), 17:22, 30/06/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >При чем тут *nix? В Android он типа хост системы для Xen.
    >Все выполняется на Java VM. А как там обеспечивается защита памяти
    >не для Java скриптов, а для функций скомпилированных в _любые_ машинные
    >команды, мне не ведомо.

    Версия специально для таких как вы: "Этим занимаються маленькие гномики."
    Соответственно, некий "*nix" тут совершенно ни при чем. :)

     
  • 6.37, User294 (??), 18:10, 06/07/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >Все выполняется на Java VM.

    Нативный код по определению выполняется на железячном процессоре.Иначе фигли с нативного кода толку? :)

    >А как там обеспечивается защита памяти не для Java скриптов, а для функций
    >скомпилированных в _любые_ машинные команды, мне не ведомо.

    Процессор заэнфорсит это как обычно.Как минимум - половины ужасов скорее всего невозможно(всякие там прямые доступы к ФС и прочая).Как максимум гугл мог ступить и устроить общую помойку в адресспейсе явы куда догружаются такие модули(как оно сделано - не разбирался, пусть на этот счет у гугля башка болит в плане выбора между эффективностью по жрачу RAM vs защищенность :P).Это с их стороны было бы покладание большого болта на имеющиеся аппаратные средства защиты памяти процессов друг от друга.Положили ли (ради оптимищации пожирания памяти многочисленными жава-тормозилками например) - а вот хз.Ну их там нахрен, пусть в своих горбылях сами копаются.А мне влом - на свете полно более нормальных платформ, где не требуется вырезать гланды через то самое место и к тому же автогеном.

     

  • 1.8, Аноним (-), 18:04, 26/06/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Ничего не пойму. Если "под управлением виртуальной машины Dalvik" - это байт-код. Си/плюсы должны компилироваться в натив, если хотим их использовать для повышения производительности.
     
     
  • 2.12, gogo (?), 23:29, 26/06/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Чего непонятного? Писать можно только либы. А вызывать функции из этих либ программой на яве или т.п.
    Маразм, конечно...

    А OpenGL - это то, с чего нужно было начинать. Кому нужен дорогой гаджет без игрушек?

     
     
  • 3.15, User294 (ok), 03:58, 27/06/2009 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >А OpenGL - это то, с чего нужно было начинать. Кому нужен
    >дорогой гаджет без игрушек?

    Ну, до гугля понемногу начнет доходить.Особенно когда нокия и интель ему дадут понять что они могут и получше штукенции за сравнимые бабки изобразить.С 3D ускорением и всеми делами.А гугля будет пыжиться с своей "не тормозной" ява-виртуалкой, которая ни с чем не совместима и к которой где-то сбоку как-то можно прикрутить немного нативного кода.

     
  • 3.19, polymorphm (??), 00:18, 28/06/2009 [^] [^^] [^^^] [ответить]  
  • +/
    > Чего непонятного? Писать можно только либы. А вызывать функции из этих либ программой на яве или т.п.
    > Маразм, конечно...

    писать можно только либы, конечно.. вот только чем либа отличается от не либы [от обычных исполняемых файлов] (?)

    ответ: тем то у либы нет ГЛАВНОЙ точки входа. вот и всё основное отличие.

    другими словами -- всё что нада сделать -- это лишь только миниатюрный java-код, который запускает либу. вот и нет никаких проблем :-)

    использовать модель когда основной цикл-программы написан на java, а на native только маленькие фрагменты -- вовсе не обезательно. никто не заставляет.

    Java-API (тоесть и Android-API) из native-C++-библиотек -- ДОСТУПЕН(!).. причём штатно..

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

     
     
  • 4.28, SKeeper (?), 14:28, 29/06/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Первый нормальный коммент


     
  • 4.38, User294 (??), 18:13, 06/07/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >такчто написать всю программу в C++ (и двухстрочный фрагмент на java, для
    >запуска) -- всегда можно... :-)

    Да.А можно вырезать гланды через жопу автогеном.Подумаешь, никто кроме гугла так не делает а потому - будет несовместимо ни с кем и наработки остальных не подойдут для андроида без модификации, равно как и наоборот - код для андроида не подойдет для других окружений без модификации.Изобретатели велосипедов, в хучшем виде (синдром "not invented here" в исполнении Гугла?).

     
  • 3.30, thevery (??), 15:03, 29/06/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >А OpenGL - это то, с чего нужно было начинать.

    он там всегда был


     
  • 2.18, polymorphm (??), 23:58, 27/06/2009 [^] [^^] [^^^] [ответить]  
  • +/
    > Ничего не пойму. Если "под управлением виртуальной машины Dalvik" - это байт-код. Си/плюсы должны компилироваться в натив, если хотим их использовать для повышения производительности.

    никакой это не байт код..

    просто java-приложение запустит бинарный-C++-файл (библиотеку)..[а не так что библиотека запуститься сама собой].. вот и всё отличие..

    в этомже нативном-C++-приложениие -- также как и в java-приложениие -- можно будет вызывать Java-API
    (в ОТЛИЧИИ от того что сказано автором новости: "недоступность функций Java API платформы Android из нативных блоков кода." -- бред собачий)

    ....всё это доступно прямо из нативного-C++-кода, посредством java-native-interface...

    (тоесть -- единственынй минус нативного-C++-кода только в том -- что он кросплатформен только на уровне своих исходных кодов)

    другими словами сказать фразу
    "под управлением виртуальной машины Dalvik"
    -- тоже самое что если например есть файл run-mc.sh (в котором код bash-а), который запускает миднайт-командер -- то сказать фразу что
    "миднайт-командер работает под управлением bash"

     
  • 2.22, Ivan (??), 04:06, 28/06/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >Си/плюсы должны...

    Когда же вы наконец поймёте, никто никому ничего не должен...


     
     
  • 3.23, Ivan (??), 04:09, 28/06/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Забудьте это слово вообще. Мышление с его учётом малоэффективно, если Вы не держите в руке пистолет и не готовы из него выстрелить.
     

  • 1.26, sluge (??), 09:34, 29/06/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    а просвятите пожалуста, до этого приложения для андроида на чем писали-то, а то как то оказался не в курсе, думал там линукс без извращений стоит
     
     
  • 2.29, thevery (??), 15:02, 29/06/2009 [^] [^^] [^^^] [ответить]  
  • +/
    java
     
  • 2.31, User294 (??), 16:25, 29/06/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Линух там лишь запускач для самопальной жаба-виртуалки от гугля.Библиотек - минимум.Ну а потому писать на чем-то кроме жабы вы запаритесь.Такая вот платформа.Чем это принципиально лучше чем проприетарная система с j2me виртуалкой - а гугль его знает :)
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру