Разное

Разработка на c под андроид: Программирование для Android на С/С++? — Хабр Q&A

Программирование для Android на С/С++? — Хабр Q&A

Склонен считать, что программист, который не переносит тот, или иной язык программирования — пока еще недостаточно программист. Язык — это инструмент. Вообще, приложения на NDK сделать можно, смотрите в строрну NativeActivity — получаете точку входа, а дальше делайте что хотите на C/C++. Но я бы не стал забивать гвозди микроскопом. При разработке на чистом С/C++ для андроид — вам придется сделать весь ЮИ, который уже есть в стандартном SDK, своими руками… Может быть вы сможете сделать лучше, но всегда станет вопрос кому это было нужно?

Ответ написан

Android NDK очень плохо документирован. Надо брать в расчет что процессоры разные (armeabi armeabi-v7a x86) и есть небольшие расхождения (небольшая информация тут). Так же необходимо учесть что нормально писать и компилить NDK лучше на линуксах.

Так же стоит учитывать что NDK богатством функционала тоже разнится от версии к версии, так же это зависит и от конкретного девайса(производители очень любят залезть в ядро и стандартные либы и переиначивать их). Без JAV’ы совсем не получится, хотя бы минимально она будет. С GUI тоже все печально, нужна java или NativeActivity который опять же труба через JNI.
В общем литературы по NDK катастрофически мало, сюрпризов очень много, без java кода максимум можно сделать что то консольное, что в чем то даже удобно.
Мельком глянул сейчас, вроде бы появились фреймворки с нативными UI для NDK, к примеру juce.com.

Ответ написан

Сейчас засыплю цитатами из интернета ))

От привычных мобильных приложений до программного обеспечения высокотехнологичного промышленного оборудования – Qt лежит в основе миллионов устройств и программ, используемых по всему миру.
Язык C++ сохраняет высокий уровень совместимости на разных платформах и устройствах.
Вы можете переносить существующие библиотеки C++ для платформ Android и Windows…
C++Builder — это отмеченный наградами набор инструментов быстрой разработки приложений на C++ для нативной разработки под Windows, Mac и для мобильных устройств, с расширенной поддержкой облаков и IoT.

… ну и т.д…

Ответ написан

Комментировать

Если взять хороший кроссплатформенный фреймворк, то писать на джаве не придется.

Например, в комплекте с SDL идет шаблон проекта для Android NDK с уже готовой оберткой на джаве, которая выполняет кое-какую инициализацию и вызывает нативный main().
Подключение каких-то еще библиотек требует плясок с бубном, но в итоге код с десктопных платформ работает почти без изменений. Даже OpenGL ES из нативного кода работает.

какую посоветуете литературу

Мануала к выбранному фреймворку и гугла должно хватить.

что я получу от использования исключительно С/С++

Прирост в производительности, но это и так понятно.
Размер бинарников больше: Код и все нативные библиотеки компилируется отдельно под разные архитектуры (в моем случае было 4) и собирается в одно приложение.

Ответ написан

более трёх лет назад

Комментировать

Разработка кроссплатформенных мобильных приложений на языке C++

Twitter LinkedIn Facebook Адрес электронной почты

  • Статья
  • Чтение занимает 4 мин

Вы можете создавать собственные приложения на языке C++ для iOS, Android и Windows устройств, используя кроссплатформенные инструменты, доступные в Visual Studio. Разработка мобильных приложений на языке C++ — это рабочая нагрузка, доступная в программе установки Visual Studio. Она устанавливает пакеты SDK и средства, необходимые для кроссплатформенной разработки общих библиотек и собственных приложений. После ее установки язык C++ можно использовать для создания кода, выполняющегося на устройствах и платформах с iOS и Android, Windows, Windows Store, и Xbox.

Написание кода для различных платформ может часто быть утомительным. Основные языки и средства разработки для iOS, Android и Windows для каждой платформы различны. Однако все платформы поддерживают написание кода на языке C++. Это общий знаменатель, который обеспечивает использование основной части кода на разных платформах. Машинный код, написанный на языке C++, может быть более производительным и устойчивым к реконструированию. Повторное использование кода позволяет сэкономить время и силы при создании приложений для разных платформ.

Использование языка C++ для разработки кроссплатформенных мобильных приложений имеет несколько преимуществ.

  • Простая установка. Установщик Visual Studio получает и устанавливает средства и пакеты SDK сторонних разработчиков, необходимые для создания приложений или библиотек для Android и iOS. Установка и настройка просты и в основном производятся автоматически.

  • Эффективная и привычная среда сборки. Шаблоны Visual Studio позволяют легко создавать общие кроссплатформенные решения и проекты. Управлять свойствами для всех проектов можно с помощью единого интерфейса. Редактируйте весь код в редакторе Visual Studio и используйте встроенную кроссплатформенную функцию IntelliSense для автозавершения и выделения ошибок.

  • Унифицированный процесс отладки. используйте средства отладки мирового класса в Visual Studio для просмотра и пошагового перехода по коду C++ на всех платформах: устройства и эмуляторы Android, симуляторы и устройства iOS, а также Windows или Windows устройства и эмуляторы магазина.

Получить инструменты

Разработка мобильных приложений с помощью C++ — это устанавливаемая рабочая нагрузка, поставляемая с Visual Studio. Сведения о необходимых компонентах и инструкции по установке см. в статье Установка Visual C++ для разработки кроссплатформенных мобильных приложений на языке C++. Для создания кода для iOS также требуются компьютер Mac и учетная запись разработчика Apple iOS. Дополнительные сведения см. в статье Установка и настройка средств для разработки с помощью iOS.

Быстрое начало работы

Если у вас есть опыт разработки для Android или iOS, мы можем предложить вам отличные материалы, которые помогут вам приступить к работе. Visual Studio — это выразительная среда разработки с широкими возможностями. Чтобы научиться использовать ее, попробуйте обратиться к руководству по началу работы для разработчиков решений Android или руководству по началу работы для разработчиков решений iOS. В этих статьях вы получите общие сведения о Visual Studio и ознакомитесь с понятиями, которые нужно знать для разработки кроссплатформенных приложений для Windows и Windows Store. Чтобы приступить к написанию первого кросс-платформенного приложения для iOS и Android, см.

статью Создание приложения OpenGL ES в Android и iOS.

Рабочая нагрузка Visual C++ для разработки кроссплатформенных мобильных приложений включает несколько шаблонов, которые помогут вам приступить к созданию приложений:

  • Нативное приложение (Android)

    Создает полнофункциональное приложение C++ OpenGL в форме проекта Android Native Activity.

  • Приложение OpenGLES (Android, iOS)

    Создает решение с набором проектов для приложения Android Native Activity и приложения iOS. Эти приложения используют библиотеки для конкретных платформ, созданные с помощью общего кода C++ OpenGL ES, с целью отрисовки одинакового вращающегося куба.

  • Общая библиотека (Android, iOS)

    Создает решение с проектами, предназначенными для создания файлов динамической библиотеки Android (SO) и статической библиотеки iOS (A) с помощью общего кода C++ в общем проекте.

  • Простое приложение (Android, Ant)

    Создает проект приложения Hello, World для Android, в котором используется только исходный код Java и система сборки Ant.

  • Простое приложение (Android, Gradle)

    Создает проект приложения Hello, World для Android, в котором используется только исходный код Java и система сборки Gradle.

  • Простая библиотека (Android, Ant)

    Создает проект библиотеки Hello, World для Android, в котором используется только исходный код Java и система сборки Ant.

  • Простая библиотека (Android, Gradle)

    Создает проект библиотеки Hello, World для Android, в котором используется только исходный код Java и система сборки Gradle.

  • Динамическая общая библиотека (Android)

    Создает файл динамической библиотеки Android (SO) с помощью кода C++.

  • Приложение OpenGLES 2 (iOS)

    Создает решение с набором проектов для сборки приложения iOS OpenGL ES 2. Приложение использует библиотеку кода C++ OpenGL ES для рисования вращающегося куба в приложении iOS. Это приложение может стать хорошей отправной точкой для ознакомления с импортом библиотек C++ в приложение iOS.

  • Статическая библиотека (Android)

    Создает проект для сборки статической библиотеки для Android. Приложение Android может быть связано только с одной динамической библиотекой, но с любым количеством статических библиотек.

  • Статичная библиотека (iOS)

    Создает проект для сборки статической библиотеки для iOS.

  • Проект Makefile (Android)

    Создает оболочку проекта для ваших собственных проектов Android, использующих файл makefile.

Испытайте образец кода

Скачайте образцы, демонстрирующие создание библиотек общего кода, которые можно использовать в приложениях Windows, Android и iOS. См. примеры создания готовых приложений для Android. Чтобы приступить к работе, см. раздел Примеры разработки кроссплатформенных мобильных приложений.

См. также

Установка Visual C++ для разработки кроссплатформенных мобильных приложений на языке C++

Установка и настройка средств для разработки с помощью iOS
Создание приложения Android Native Activity
Создание приложения OpenGL ES в Android и iOS
Примеры разработки кроссплатформенных мобильных приложений

Добавьте код C и C++ в свой проект

Вы можете добавить код C и C++ в свой проект Android, поместив код в каталог cpp в вашем модуле проекта. Когда вы строите свой проект, это код компилируется в нативную библиотеку, которую Gradle может упаковать с вашим приложением. Затем ваш код Java или Kotlin может вызывать функции в вашей родной библиотеке. через собственный интерфейс Java (JNI). Чтобы узнать больше об использовании JNI Framework, прочитайте советы JNI для Андроид.

Android Studio поддерживает CMake, что хорошо для кроссплатформенных проектов, и ndk-build, который может быть быстрее, чем CMake, но только поддерживает Андроид. Использование CMake и ndk-build в одном модуле недопустимо. в настоящее время поддерживается.

Если вы хотите импортировать существующую библиотеку ndk-build в вашу Android Studio проект, научитесь свяжите Gradle с вашим родным проектом библиотеки.

На этой странице показано, как настроить Android Studio с помощью необходимые инструменты сборки, создайте новый проект на C/C++ поддержки и добавляйте в проект новые файлы C/C++.

Если вместо этого вы хотите добавить собственный код в существующий проект, вам необходимо Следуй этим шагам:

  1. Создайте новые собственные исходные файлы и добавьте их в ваш проект Android Studio.
    • Вы можете пропустить этот шаг, если у вас уже есть нативный код или вы хотите импортировать предварительно созданную нативную библиотеку.
  2. Настройте CMake для встройте свой собственный исходный код в библиотеку. Вам также требуется эта сборка script, если вы импортируете и связываете с готовым или платформой библиотеки.
    • Если у вас есть собственная библиотека, для которой уже CMakeLists.txt скрипт сборки или использует ndk-build и включает Android.mk построить скрипт, вы можете пропустить этот шаг.
  3. Настроить Gradle, указав путь к файлу сценария CMake или ndk-build. Gradle использует скрипт сборки для импорта исходного кода в ваш Android Studio и упакуйте свою родную библиотеку (файл SO) в приложение.

После того, как вы настроите свой проект, вы можете получить доступ к своим собственным функциям из Код Java или Kotlin с использованием фреймворка JNI. Чтобы создать и запустить приложение, просто нажмите Выполнить .

Примечание: Если в вашем существующем проекте используется ndkCompile , вам следует перейти на использование CMake или ndk-сборка. Чтобы узнать больше, перейдите в раздел о том, как Миграция с ndkCompile.

Внимание экспериментальных пользователей Gradle: Рассмотрим переход на плагин версии 2.2.0 или выше и использование CMake или ndk-build для создания собственных библиотек, если к вам относится любое из следующих условий: нативный проект уже использует CMake или ndk-build; вы бы предпочли использовать стабильную версия системы сборки Gradle; или вам нужна поддержка дополнительных инструментов, например CCache. В противном случае вы можете продолжать использовать экспериментальная версия Gradle и плагин для Android.

Загрузка NDK и инструментов сборки

Чтобы скомпилировать и отладить собственный код для вашего приложения, вам потребуется следующее составные части:

  • Родной комплект для разработки Android (NDK) : набор инструментов, позволяющий использовать код C и C++ с Android, а также предоставляет библиотеки платформ, которые позволяют вам управлять собственными действий и доступа к физическим компонентам устройства, таким как датчики и сенсорные вход.
  • CMake : внешний инструмент сборки, который работает вместе с Gradle для создания собственного библиотека. Вам не нужен этот компонент, если вы планируете использовать только ndk-build.
  • LLDB : отладчик, который Android Studio использует для отладки машинного кода.

Сведения об установке этих компонентов см. в разделе Установка и настройка NDK, CMake и LLDB.

Создать новый проект с поддержкой C/C++

Создание нового проекта с поддержкой нативного кода аналогично создание любого другого Android Студийный проект, но есть дополнительный шаг:

  1. В разделе мастера выберите свой проект , выберите Тип проекта Native C++ .
  2. Щелкните Далее .
  3. Заполните все остальные поля в следующем разделе мастера.
  4. Щелкните Далее .
  5. В разделе мастера Customize C++ Support можно настроить ваш проект с полем C++ Standard . Используйте раскрывающийся список, чтобы выберите, какую стандартизацию C++ вы хотите использовать. Выбор цепочки инструментов По умолчанию использует настройку CMake по умолчанию.
  6. Нажмите Готово .

После того, как Android Studio завершит создание нового проекта, откройте Панель проекта в левой части IDE и выберите Android вид. Как показано на рисунке 2, Android Studio добавляет cpp группа:

Рисунок 2. группы представлений Android для собственных источников и внешние скрипты сборки.

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

В группе cpp вы можете найти все родные исходные файлы, заголовки, сценарии сборки для CMake или ndk-build, а также готовые библиотеки, которые являются частью вашего проекта. Для новых проектов Android Studio создает образец исходного файла C++, native-lib.cpp , и помещает его в src/main/cpp/ вашего модуля приложения. Этот образец код предоставляет простую функцию C++, stringFromJNI() , которая возвращает строку «Привет с C++». Вы можете узнать, как добавить дополнительные исходные файлы в ваш проект в разделе о том, как Создайте новые собственные исходные файлы.

Подобно тому, как файлы build.gradle сообщают Gradle, как собрать app, CMake и ndk-build требуют скрипта сборки, чтобы знать, как собрать родная библиотека. Для новых проектов Android Studio создает скрипт сборки CMake, CMakeLists.txt и помещает его в корневой каталог вашего модуля. Чтобы узнать больше о содержимом этого скрипта сборки, прочитайте Настройте CMake.

Сборка и запуск примера приложения

Когда вы нажимаете Run , Android Studio создает и запускает приложение, которое отображает текст «Привет с C++» на вашем Android-устройство или эмулятор. В следующем обзоре описаны события, которые происходят для сборки и запуска примера приложения:

  1. Gradle вызывает ваш внешний скрипт сборки, CMakeLists.txt .
  2. CMake выполняет команды в сценарии сборки для компиляции исходного кода C++. файл native-lib.cpp в общую библиотеку объектов и имена это libnative-lib.so , который Gradle затем упаковывает в приложение.
  3. Во время выполнения приложение MainActivity загружает собственный библиотека с использованием System.loadLibrary() . Родная функция библиотеки, stringFromJNI() , теперь доступно для приложения.
  4. MainActivity.onCreate() вызовов stringFromJNI() , который возвращает «Hello from C++» и использует его для обновления TextView .

Примечание: Мгновенно Run не совместим с компонентами вашего проекта, написанными на родном языке. код.

Если вы хотите убедиться, что Gradle упаковывает нативную библиотеку в приложение, вам можно использовать анализатор APK:

  1. Выберите Build > Build Bundle(s) / APK(s) > Build APK(s)
  2. Выберите «Сборка » > «Анализ APK ».
  3. Выберите APK или AAB из каталога app/build/outputs/. и нажмите OK .
  4. Как показано на рисунке 3, вы можете увидеть libnative-lib.so в Окно APK Analyzer под lib// .

    Рисунок 3. Поиск собственной библиотеки с помощью APK Анализатор.

Совет: Если вы хотите поэкспериментировать с другими приложениями Android, использовать нативный код, нажмите Файл > Создать > Импорт образца и выберите образец проекта из списка Ndk .

Создание новых исходных файлов C/C++

Чтобы добавить новые исходные файлы C/C++ в существующий проект, выполните следующие действия:

  1. Если у вас еще нет каталога cpp/ в основном источнике набор вашего приложения, создайте его следующим образом:
    1. Откройте панель Project с левой стороны IDE и выберите проект вид из выпадающего меню.
    2. Перейдите к your-module > src , щелкните правой кнопкой мыши в главном каталоге и выберите New > Справочник .
    3. Введите cpp в качестве имени каталога и нажмите ОК .
  2. Щелкните правой кнопкой мыши каталог cpp/ и выберите New > Исходный файл C/C++ .
  3. Введите имя исходного файла, например родная библиотека .
  4. В раскрывающемся меню введите выберите расширение файла для исходного файла, например .cpp .
    • В раскрывающееся меню можно добавить файлы других типов, например .cxx или .hxx , нажав Изменить типы файлов . В появившемся диалоговом окне C/C++ введите выберите другое расширение файла из исходного расширения и Расширение заголовка раскрывающихся меню и нажмите ОК .
  5. Если вы также хотите создать заголовочный файл, установите флажок Создать связанный заголовок флажок.
  6. Щелкните OK .

После добавления в проект новых файлов C/C++ вам все равно необходимо настройте CMake, чтобы включить их в ваша родная библиотека.

Дополнительные ресурсы

Чтобы узнать больше о поддержке кода C/C++ в вашем приложении, попробуйте следующее ресурс.

Codelabs

  • Создайте Hello-CMake с помощью Android Studio, лаборатория кода, которая показывает, как использовать шаблон Android Studio CMake для запуска Разработка проекта Android NDK

Могу ли я программировать Android на C++, C?

спросил

Изменено 1 год, 11 месяцев назад

Просмотрено 116 тысяч раз

57

Новинка! Сохраняйте вопросы или ответы и организуйте свой любимый контент.
Узнать больше.

Могу ли я программировать Android на C++, C? Если ответ «да», то подскажите как? И какова процедура настройки?

Не знаю Obj-C, Java, но хорошо разбираюсь в C, C++, Flash AS3, SDK от Google.

Пожалуйста, не говорите о NVDIA SDK, он не полностью разработан 🙂

  • c++
  • android

ОБРАТИТЕ ВНИМАНИЕ: ОТВЕТ НИЖЕ УЖАСНО УСТАРЕЛ И МОЖЕТ БЫТЬ НЕ ПОЛНОСТЬЮ ПРАВИЛЬНЫМ.

Вы можете программировать на C/C++ с помощью Android NDK. Вам нужно будет обернуть свою кодовую базу С++ в статическую библиотеку и загрузить ее через оболочку Java и JNI.

Стандартный NDK не поддерживает RTTI, а также недоступны многие функции стандартного C++, такие как std::string и т. д. Чтобы решить эту проблему, вы можете перекомпилировать NDK. Дмитрий Москальчук предоставляет модифицированную версию NDK, поддерживающую это, по адресу http://www.crystax.net/android/ndk-r3.php. Эта модифицированная версия работает на всех телефонах Android, работающих на процессоре ARM.

В зависимости от типа приложения вы должны решить использовать Java или C/C++. Я бы использовал C/C++ для всего, что требует вычислительной мощности выше среднего и игр — Java для всего остального.

Просто выберите один язык и напишите большую часть своего приложения на этом языке; Вызовы JNI могут значительно снизить производительность. Однако Java не так уж сложна — если вы знаете, как программировать на C/C++. Преимущество Java в том, что приложение может работать на любом устройстве под управлением Android, тогда как приложения NDK зависят от архитектуры, для которой они были скомпилированы.

1

Вы должны использовать Android NDK для разработки важных для производительности частей ваших приложений в собственном коде. См. Android NDK.

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

Да, вы можете программировать приложения Android на C++ (по большей части), используя Native Development Kit (NDK), хотя Java является основным/предпочтительным языком для программирования Android, и ваш код C++, скорее всего, должен будет взаимодействовать с Java компоненты, и вам, вероятно, также потребуется прочитать и понять документацию по компонентам Java. Поэтому я бы посоветовал вам использовать Java, если только у вас нет существующей кодовой базы C++, которую необходимо портировать и которую нецелесообразно переписывать на Java.

Java очень похож на C++, я не думаю, что у вас возникнут проблемы с его освоением… переход от C++ к Java невероятно прост; перейти с Java на C++ немного сложнее, хотя и не страшно. Java для программистов на C++ довольно хорошо объясняет различия. Написание кода Android на Java будет более идиоматичным, а также облегчит вам процесс разработки (поскольку инструментарий для Java Android SDK значительно лучше, чем соответствующий инструментарий NDK)

Что касается настройки, Google предоставляет Android Studio IDE для разработки как Java, так и C++ для Android (с Gradle в качестве системы сборки), но вы можете использовать любую IDE или систему сборки по своему усмотрению, если под капотом вы используете Android SDK/NDK для получения окончательных результатов.

8

Вам также следует обратить внимание на MoSync, MoSync предоставляет стандартные C/C++, простые в использовании хорошо документированные API и полнофункциональную IDE на основе Eclipse. Теперь это IDE с открытым исходным кодом, все еще довольно крутая, но больше не поддерживаемая.

0

Вы также можете взглянуть на C++ Builder XE6, а XE7 поддерживает Android в коде C++ и с библиотекой Firemonkey.

http://www.embarcadero.com/products/cbuilder

Довольно простой способ начать работу и собственный код. Но бинарники имеют большой размер.

0

Вы можете использовать Android NDK, но в ответах следует учитывать, что приложение Android NDK не является бесплатным для использования, и нет четкого пути к программированию Android 9 с открытым исходным кодом.0054 на Android на рынке, который все больше ориентируется на Android, который начинался как открытый исходный код, с поддержкой разработчиков Android или обширным приложением NDK, а это означает, что вы рассматриваете отказ от Android как любой платформы для программирования первых шагов без платежей.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *