Как установить android ndk

Обновлено: 18.05.2024

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

Самым прямым способом создания собственного приложения Android является использование Android Studio с Java или Котлин, хотя можно использовать C или C++ для разработки Android , если у вас есть конкретная цель. Средства Android Studio SDK компилируют файлы кода, данных и ресурсов в архивный пакет Android с расширением apk. Один файл APK содержит все содержимое приложения Android, а — файл, с помощью которого устройства на платформе Android используют для установки приложения.

Установка Android Studio

Android Studio является официальной интегрированной средой разработки для операционной системы Android под управлением Google. Скачайте последнюю версию Android Studio для Windows.

  • Если вы скачали файл .exe (рекомендуется), дважды щелкните его, чтобы запустить.
  • Если вы скачали файл .zip, распакуйте его в папку "Program Files", а затем откройте папку "Android-Studio > bin" и запустите studio64.exe (для 64-разрядных компьютеров) или studio.exe (для 32-разрядных компьютеров).

Следуйте указаниям мастера установки в Android Studio и установите все рекомендуемые пакеты SDK. По мере того как становятся доступными новые средства и другие API-интерфейсы, Android Studio уведомляет вас о наличии всплывающего окна или проверку наличия обновлений, выбрав пункт Справка > Проверка обновления.

Создание проекта

выберите файл > создать > новый Project.

В окне Выбор проекта вы сможете выбрать один из следующих шаблонов:

Основные действия: создает простое приложение с панелью приложений, плавающей кнопкой действия и двумя файлами макета: один для действия и один для разделения текстового содержимого.

Пустое действие: создает пустое действие и один файл макета с примером текстового содержимого.

Действие "Нижняя область навигации": создает стандартную нижнюю панель навигации для действия. Дополнительные сведения об этом см. в разделе, посвященном нижним компонентам навигации, руководства по проектированию материалов в Google.

Шаблоны обычно используются для добавления действий в новые и существующие модули приложений. Например, чтобы создать экран входа для пользователей приложения, добавьте действие с шаблоном действия входа. Дополнительные сведения о выборе действия и добавлении кода из шаблона см. в статье Руководство разработчика Android по Google.

Операционная система Android основана на идее компонентов и использует термины действие и назначение для определения взаимодействий. Действие представляет отдельную задачу, которая может быть сделана пользователем. Действие предоставляет окно для создания пользовательского интерфейса с помощью классов, основанных на классе представления . Существует жизненный цикл действий в операционной системе Android, определяемый шестью обратными вызовами: onCreate() ,, onStart() ,, onResume() onPause() onStop() и onDestroy() . Компоненты действия взаимодействуют друг с другом с помощью объектов намерения . Намерение определяет, какое действие следует запустить, или описывает тип выполняемого действия (и система выбирает подходящее действие, которое может быть даже из другого приложения). Дополнительные сведения о действиях, жизненном цикле действий и способах их получения см. в статье о программе Android в Google.

Java или Котлин

Java стал языком в 1991, разработанным корпорацией Sun Microsystems, но который теперь принадлежит Oracle. Она стала одним из самых популярных и мощных языков программирования с одним из самых крупных сообществ поддержки в мире. Язык Java основан на классах и объектно-ориентированной среде, предназначенный для того, чтобы иметь как можно меньше зависимостей реализации. Синтаксис похож на C и C++, но он имеет меньше низкоуровневых средств, чем любой из них.

Котлин был впервые объявлен как новый язык с открытым кодом JetBrains в 2011 и был включен в качестве альтернативы Java в Android Studio с 2017. В 2019 мая, Google объявил о Котлин в качестве предпочтительного языка для разработчиков приложений Android, поэтому, несмотря на более новый язык, он также имеет сообщество поддержки и был идентифицирован как один из самых быстрых растущех языков программирования. Котлин является межплатформенным, статически типизированным и предназначен для полноценного взаимодействия с Java.

Java более широко используется для более широкого спектра приложений и предлагает некоторые функции, которые не Котлин, такие как проверенные исключения, простые типы, не являющиеся классами, статические элементы, незакрытые поля, подстановочные знаки и операторы ternary. Котлин специально разработана для и рекомендуется для Android. Он также предлагает некоторые функции, которые не поддерживаются в Java, такие как ссылки null, контролируемые системой типов, необработанные типы, инвариантные массивы, правильные типы функций (в отличие от SAM-преобразований Java), Использование вариативности сайта без подстановочных знаков, смарт-приведение и многое другое. Более подробные сведения о сравнении с Java см. в документации по Котлин.

Минимальный уровень API

Вам потребуется выбрать минимальный уровень API для приложения. Это определяет версию Android, которую будет поддерживать ваше приложение. Более низкие уровни API устарели и, следовательно, поддерживают больше устройств, но более высокие уровни API более новые и таким образом предоставляют больше возможностей.

Экран выбора минимального Android Studio API

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

Экран Android Studio минимального сравнения API

Мгновенная поддержка приложений и артефакты Андроидкс

Можно заметить, что флажок для поддержки мгновенных приложений и другой для использования артефактов андроидкс в параметрах создания проекта. Поддержка мгновенных приложений не проверяется, и андроидкс проверяется как рекомендуемое по умолчанию.

Google Play мгновенные приложения предоставляют пользователям возможность опробовать приложение или игру, не устанавливая их первыми. Эти мгновенные приложения могут быть распределены по Магазин Google Play, поиску Google, социальным сетям и в любом месте, где вы делитесь ссылкой. Установив флажок поддерживать мгновенные приложения , вы запрашиваете Android Studio включить в проект пакет SDK для мгновенной разработки Google Play. Дополнительные сведения о Google Play мгновенных приложений см. в разделе с руководством разработчика для Android.

Артефакты андроидкс представляют новую версию библиотеки поддержки Android и обеспечивает обратную совместимость между выпусками Android. Андроидкс предоставляет соответствующее пространство имен, начиная со строки андроидкс для всех доступных пакетов.

Андроидкс теперь является библиотекой по умолчанию. Чтобы снять этот флажок и использовать предыдущую библиотеку поддержки, необходимо удалить последний пакет SDK для Android Q. Инструкции см. в разделе использование артефактов андроидкс в StackOverflow для получения инструкций, но сначала обратите внимание, что самые старые пакеты библиотек поддержки были сопоставлены с соответствующими пакетами андроидкс. *. Полное сопоставление всех старых классов и создание артефактов для новых версий см. в разделе Миграция в андроидкс.

Файлы проекта

окно Android Studio Project содержит следующие файлы (убедитесь, что в раскрывающемся меню выбрано представление Android):

приложение > Java > com. example. мифирстапп > MainActivity

Основное действие и точка входа для приложения. При сборке и запуске приложения система запускает экземпляр этого действия и загружает его макет.

> макета > > приложений activity_main.xml

XML-файл, определяющий макет пользовательского интерфейса действия. Он содержит элемент TextView с текстом "Hello World"

манифесты > приложений > AndroidManifest.xml

Файл манифеста, описывающий фундаментальные характеристики приложения и всех его компонентов.

Gradle скрипты > сборка. Gradle

существует два файла с таким именем: "Project: мое первое приложение", для всего проекта и "модуль: приложение" для каждого модуля приложения. В новом проекте изначально будет только один модуль. Используйте файл build. File модуля, чтобы управлять тем, как подключаемый модуль Gradle создает приложение. Дополнительные сведения о настройке сборки см. в разделе Руководство разработчика для Android.

Использование C или C++ для разработки игр Android

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

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

когда Android Studio создаст новый проект, на панели Project можно найти папку cpp , которая содержит собственные исходные файлы, заголовки, скрипты сборки для cmak или ndk-build, а также предварительно созданные библиотеки, которые являются частью проекта. Вы также можете найти образец исходного файла C++, native-lib.cpp в src/main/cpp/ папке, предоставляющей простую функцию, stringFromJNI() возвращающую строку "Hello from C++". Кроме того, вы увидите сценарий сборки CMak, CMakeLists.txt в корневом каталоге модуля, необходимый для создания собственной библиотеки.

Дополнительные сведения о добавлении кода C и C++ в проект см. в разделе с руководством для разработчиков Android. Чтобы найти примеры Android NDK с интеграцией C++, см. репозиторий примеров Android NDK на GitHub. Чтобы скомпилировать и запустить игру на C++ в Android, используйте API Google Play Game Services.

Рекомендации по проектированию

Пользователи устройств хотят, чтобы приложения выглядели и обвели себя определенным образом. будь то прокрутка или касание или использование элементов управления голоса, пользователи будут иметь определенные ожидания для того, как должно выглядеть приложение и как его использовать. Эти ожидания должны оставаться согласованными, чтобы сократить путаницу и недовольство. Android предлагает руководство по этим платформам и ожиданиям устройств, объединяющее конструкцию Google материала для визуальных элементов и шаблонов навигации, а также рекомендации по качеству совместимости, производительности и безопасности.

система Fluent Design для Android

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

система Fluent Design для разработки android и создания собственных приложений android, которые по-прежнему являются уникальными Fluent.

Оригинал: Why should you need to pick Android NDK for your next project
Автор: Harigovind Thoyakkat
Дата публикации: 28 марта 2017 г.
Перевод: А.Панин
Дата перевода: 28 апреля 2017 г.

Почему стоит использовать Android NDK в вашем следующем проекте

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

Для чего и как используется бинарный код

Мы все знаем о том, что процесс разработки приложений для Android тесно связан с использованием языка программирования Java, а также о том, что использование данного языка программирования значительно упрощает жизнь разработчиков, ведь они могут использовать элегантную объектно-ориентированную модель Java. Приложения или алгоритмы, реализованные на языке Java, преобразуются в специальный байткод, который выполняется аналогичным образом на всех поддерживаемых платформах. При этом виртуальная машина Java или JVM (Java Virtual Machine) ответственная за JIT-компиляцию и исполнение байткода Java, доступна практически для всех существующих платформ, начиная с мэйнфреймами и заканчивая мобильными телефонами.

Однако, в случае системы Android, которая используется главным образом на смартфонах и планшетных компьютерах, ключевым фактором становится достижение максимальной производительности приложения на используемом аппаратном обеспечении. Исходный код Java, как говорилось выше, предварительно преобразуется в байткод. Это именно тот байткод, который исполняется с небольшими отличиями на платформах, для которых доступна виртуальная машина Java. В конце концов все приложение исполняется в рамках виртуальной машины на устройстве, работающем под управлением Android.

Что касается разработки приложений для Android, описанный выше фактор является незначительным недостатком. Но программирование на языке Java может оказаться достаточно сложным ввиду постоянного усложнения кода и затруднения его понимания. Более того, использование мультиплатформенного байткода и виртуальной машины обуславливает значительные затраты вычислительных ресурсов устройства.

Другим важным фактором, который требует внимания, является мультиплатформенный код. Если нам нужно создать программу для множества аппаратных платформ, мы можем переписать большую часть кода, относящегося к контроллеру и отображению, для каждой из платформ, что является не самым разумным решением. Но весь код, относящийся к контроллеру, должен быть обязательно портирован на языки C и C++, так, как практически все мобильные платформы поддерживают их; таким образом, если нам удастся реализовать логику в рамках библиотек на языках C и C++ и впоследствии использовать ее на нескольких платформах, нам удастся максимально сократить потери производительности приложения. В подобных случаях мы будем использовать код на языках C и C++ вместе с привычным кодом на языке Java или "мультиплатформенным кодом".

При использовании компилируемого языка программирования исходный код компилируется непосредственно в машинный код для центрального процессора, а не в промежуточное представление, такое, как в языке Java. Таким образом разработчики приложений могут создавать приложения с оптимальной производительностью для различных Android-устройств. Фрагменты компилируемого кода могут быть структурированы в рамках одной разделяемой библиотеки, функции из которой могут вызываться из кода на языке Java. Отдельная разделяемая библиотека должна создаваться для каждой из поддерживаемых архитектур центральных процессоров. Большая часть ее исходного кода при этом может оставаться неизменной. Скомпилированные разделяемые библиотеки должны быть добавлены в файл .apk вашего приложения. С учетом всего вышесказанного, фундаментальная модель приложений Android не изменится.

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

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

Android NDK интегрирован с инструментами из набора компонентов для разработки программного обеспечения (Android SDK), а также с интегрированной средой разработки Android Studio или устаревшей средой разработки Eclipse ADT. Однако, NDK не может использоваться отдельно.

Принцип работы Android NDK

Сердцем пакета Android NDK является сценарий ndk-build , который отвечает за автоматический обход файлов проекта Android (разработка каждого нового приложения для Android с помощью интегрированной среды разработки, такой, как Android Studio или Eclipse начинается с создания файлов нового проекта) и собирает информацию о том, какие компоненты нужно компилировать. Данный сценарий также ответственен за генерацию бинарных файлов и копирование этих бинарных файлов в директорию файлов проекта приложения.

Мы можем использовать ключевое слово native для того, чтобы компилятор знал, что данный фрагмент реализован в рамках компилируемого кода. Например:

Также в процессе сборки проекта создаются разделяемые библиотеки (Native Shared Libraries, с расширением .so ) и статические библиотеки (Native Shared Libraries, с расширением .a ), которые могут связываться с другими библиотеками. Бинарный интерфейс приложения (Application Binary Interface, ABI) использует разделяемые библиотеки с расширением .so для исполнения машинного кода в системе в процессе работы приложения.

Весь компилируемый код исполняется посредством интерфейса под названием Java Native Interface (JNI), который позволяет связать друг с другом компоненты на языках Java и C/C++.

Для сборки проекта с помощью сценария ndk-build нам придется создать два файла: Android.mk и Application.mk . Оба этих файла должны размещаться в директории JNI . Файл Android.mk описывает модуль и его имя, флаги сборки, используемые библиотеки файлы исходного кода, которые должны компилироваться, а файл Application.mk - бинарные модули, необходимые для работы приложения.

Установка и использование Android NDK в Ubuntu

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

В результате компоненты NDK будут сохранены в текущей рабочей директории.

Распаковка в ручном режиме

Ввиду того, что файл с расширением .bin является ничем иным, как самораспаковывающимся архивом формата 7-Zip, мы можем извлечь его содержимое вручную с помощью следующей команды:

Пакет с компонентами архиватора 7-Zip доступен из официального репозитория Ubuntu и может быть установлен, к примеру, с помощью команды apt-get:

Установка с помощью Android Studio

Мы можем установить Android NDK с помощью компонента SDK Manager непосредственно из Android Studio.

Для этого после открытия проекта следует осуществить переход в рамках главного меню окна Tools > Android > SDK Manager . После этого нужно установить флажки напротив названий компонентов LLDB , CMake и NDK . Далее нужно просто применить изменения с помощью соответствующей кнопки.

Создание или импорт проекта с бинарными компонентами

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

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

Сценарий сборки CMake позволяет сообщить одноименной системе сборки о том, как нужно осуществлять компиляцию файлов исходного кода и сборку результирующей бинарной библиотеки. Этот файл также необходим для импорта и связывания с нашей библиотекой существующих или поставляемых в комплекте NDK библиотек. Мы также можем без каких-либо последствий пропустить данный шаг в том случае, если в комплекте поставки нашей существующей бинарной библиотеки уже содержится файл сценария сборки CMakeLists.txt или она использует компонент ndk-build и в ее комплекте поставки содержится файл сценария сборки Android.mk .

Далее следует сообщить Gradle о существовании нашей бинарной библиотеки путем указания пути к файлу сценария сборки CMake или ndk-build . Gradle использует указанный сценарий сборки для импорта исходного кода в проект Android Studio и упаковки результирующей бинарной библиотеки (файла с расширением .so ) в файл пакета формата APK.

Важное замечание: если в рамках проекта используется устаревший инструмент ndkCompile , нам придется открыть файл build.poperties и удалить из него следующую строку кода перед настройкой Gradle с целью использования CMake или ndk-build:

Теперь мы можем собрать и выполнить наше приложение путем нажатия на кнопку Run . Gradle будет рассматривать процесс CMake или ndk-build в качестве зависимости, которая должна быть собрана, осуществлять сборку бинарной библиотеки и упаковывать ее в файл пакета формата APK.

После запуска приложения на устройстве или в эмуляторе мы сможем использовать функции различных интегрированных сред разработки, таких, как Android Studio, для его отладки.

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

Процесс создания простого приложения на основе Android NDK не связан с какими-либо сложностями. Однако, каждому разработчику следует уяснить один важный момент: набор программных компонентов Android NDK разрабатывался для использования в определенных случаях и не должен применяться при разработке любых приложений.

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

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


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

NDK предоставляет все инструменты (компиляторы, библиотеки и заголовочные файлы) для создания приложений, которые получают доступ к устройству нативно. Нативный код обеспечит высокую производительность там, где Java имеет ограничения. С помощью NDK также можно управлять нативными процессами и физическими компонентами устройства, такими как датчики и сенсорный ввод. Кроме того, NDK может быть полезен в следующих случаях:

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

При сборке APK-файла, Gradle компилирует код на C/C++ в нативную библиотеку, после чего добавляет в APK-файл. Затем ваш код на Java сможет обращаться к библиотеке и её методам через инфраструктуру JNI (Java Native Interface).

Поддержка NDK осуществляется, начиная с версии Android Studio 2.2 и выше. Чтобы использовать NDK в своём приложении, нужно установить его. Для этого в Android Studio нужно открыть Configure и выбрать SDK Manager.


В открывшемся окне на вкладке SDK Tools нужно поставить галочки напротив выделенных элементов. После этого достаточно будет нажать Apply и Android Studio начнёт загрузку и установку.


Теперь можно перейти к созданию нового проекта. В Configure your new project поставьте галочку Include C++ Support.


Затем идёт стандартная процедура создания проекта, заполняем все поля так, как хотим, после чего попадаем на экран Customize C++ Support.


В этом окне можно настроить следующие параметры:

После настройки Android Studio соберёт проект. Перейдя в список файлов, можно увидеть новые файлы, созданные для нативной библиотеки.


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

В External Build Files можно увидеть скрипт сборки CMake или ndk-build. Аналогично тому, как build.gradle сообщает Gradle о том, как собрать приложение, CMake и ndk-build требуют, чтобы скрипт сборки знал, как создать свою нативную библиотеку. Для новых проектов Android Studio создаёт файл CMakeList.txt и помещает его в корневой каталог модуля. В данном случае, по умолчанию он выглядит следующим образом:

Чтобы к нативному коду можно было обращаться из приложения, в MainActivity.java нужно выполнить несколько операций, перечисленных ниже.

  1. С помощью метода System.loadLibrary() мы загружаем библиотеку из папки cpp.
  2. Объявляем нативный метод загруженной библиотеки.
  3. Вызываем нативный метод библиотеки.

Запустим приложение и увидим строчку из нативного кода в TextView.

Вот так выглядит процесс запуска приложения с нативным кодом:

Примечание: Instant Run несовместим с компонентами проекта, написанными на нативном коде.



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


Здесь можно увидеть, что собранный APK имеет следующие характеристики:

Характеристика Значение
Размер APK в несжатом виде 1.7 MB
Размер APK в сжатом виде 1.4 MB
Количество классов 1269
Количество методов 10359

Однако нас интересует наличие нативной библиотеки. Если раскрыть папку lib, занимающую 18,7% от размера APK, то можно увидеть там файл libnative-lib.so под разные архитектуры. Это и есть скомплиированная нативная библиотека.


Характеристика Значение
Размер APK в несжатом виде 1.4 MB
Размер APK в сжатом виде 1.2 MB
Количество классов 1269
Количество методов 10357

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

Рассмотрим, как можно добавить свой нативный код в приложение.

Чтобы добавить в cpp свои файлы, нужно нажать правой кнопкой мыши на папку cpp и выбрать C/C++ Source File.


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


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

Если есть необходимость в создании заголовочного файла, можно поставить флажок на Create an associated header.

Применение нативного кода не ограничивается возвратом захардкоженных строк. Например, можно написать нативный код, который принимает от Java объект, работает с ним и возвращает результат работы.

Создадим Java-класс MeshData, который будет служить для хранения данных объекта.

Добавим созданный исходный файл test-lib.cpp в метод System.loadLibrary() активности и объявим метод getMemberFieldFromNative(), с помощью которого мы будем передавать объект из Java в нативный код.

Откроем test-lib.cpp и добавим в него JNI-метод, который будет принимать объект MeshData и получать доступ к полю VertexCoords.

Не забудьте в начале файла подключить библиотеку jni.h.

Следующий JNI-метод возвращает значение.

После этого создаем объект Java в следующем JNI-методе чтобы вернуть его.

Поскольку мы не можем передавать список или объекты в нативный код, мы должны передавать в него массив. Для этого объявим в коде активности метод processObjectArrayFromNative().

Добавим JNI-метод, который будет считывать этот массив.

В результате код test-lib.cpp выглядит следующим образом:

Теперь в коде активности объявим оставшиеся методы и вызовем их. Результат работы выведем в TextView.

Теперь, когда мы написали нативный код, нужно добавить test-lib.cpp в CMakeLists.txt, чтобы CMake скомпилировал его в библиотеку. По факту, в файле из примера уже есть весь нужный код, однако там нужно добавить созданный выше исходный файл.

Откроем CMakeLists.txt и найдем там команду add_library().

Здесь в параметры передаётся название, которое будет дано скомпилированной библиотеке. После этого нужно указать тип создаваемой библиотеки (STATIC, SHARED или MODULE). Затем идет перечисление файлов, которые нужно скомпилировать.

В списке файлов нужно добавим путь до test-lib.cpp и синхронизируем проект, после чего CMake скомпилирует указанные файлы в библиотеку.

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

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

В случае, если вы добавляете NDK в проект вручную, в build.gradle модуля приложения нужно прописать некоторые команды.

Откроем build.gradle. В defaultConfig нужно добавить externalNativeBuild и указать внутри него флаги следующим образом.

Здесь перечисляются флаги, о которых мы говорили в начале статьи (поддержка исключений, RTTI). Если никакие флаги не нужны, просто оставляем поле пустым.

Затем нужно передать в Gradle скрипт, по которому CMake будет собирать нативную библиотеку. Для этого внутри android нужно добавить externalNativeBuild и передать в него имя файла скрипта сборки.

На этом конфигурация Gradle завершается и можно собирать приложение.

Использование NDK в своих приложениях : 4 комментария

Коллеги, что вы можете сказать про новшество в NDK 17?

Убрана поддeржка armeabi, из-за чего получаем ошибку:

ABIs [armeabi] are not supported for platform. Supported ABIs are [armeabi-v7a, arm64-v8a, x86, x86_64].

И что странно, из-за этого перестало поддреживаться множество современных девайсов, среди которых Moto G5, которому всего год

Для чего убрали поддержку armeabi и есть ли смысл возвращаться на предыдущий NDK?

Чтобы стать успешным Android-разработчиком нужно хорошее понимание языка Java , API Android и архитектуры приложений Android .

Также важно использовать эффективную среду разработки. В течение многих лет Eclipse IDE с плагином ADT была наиболее популярной платформой для разработки под Android . Но сегодня лидерство принадлежит Android Studio :

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

Начало работы с Android Studio

Android Studio является официально поддерживаемой Google IDE для разработки Android-приложений . Основанная на IntelliJ IDEA , Android Studio доступна под лицензией Apache 2.0 . Актуальная стабильная версия 2.1.1 включает в себя следующие функции:

  • Единая среда, в которой можно разрабатывать приложения для всех Android-устройств ;
  • Возможность создания приложений под Android TV и Android Wear ;
  • « Мастера » для создания общих макетов и компонентов Android , работающие на основе шаблонов;
  • Функциональный редактор макетов, который позволяет перетаскивать компоненты пользовательского интерфейса и включает в себя возможность предварительного просмотра макетов на нескольких экранах;
  • Рефакторинг для Android и быстрые исправления;
  • Поддержка разработки на основе Gradle ;
  • Инструменты Lint для повышения производительности, юзабилити, устранения проблем связанных с совместимостью версий и другие;
  • Интеграция с ProGuard и возможность подписки на приложения;
  • Быстрый и многофункциональный эмулятор;
  • Instant Run для внесения изменений в запущенное приложение без создания нового файла APK ( Application PacKage Zip );
  • Встроенная поддержка облачной платформы Google для интеграции с Google Cloud Messaging и App Engine ;
  • C++ и NDK ;
  • Расширение возможностей Android Studio с помощью плагинов.

Загрузите Android Studio

Google предоставляет Android Studio для Windows , Mac OS X и Linux . Загрузить это программное обеспечение можно с официальной страницы приложения. Перед установкой Android Studio убедитесь, что операционная система и ваш компьютер соответствует следующим требованиям:

Windows

  • Microsoft Windows 7/8/10 ( 32-разрядная или 64-разрядная версия );
  • 2 ГБ оперативной памяти, рекомендуется 8 ГБ оперативной памяти;
  • 2 ГБ свободного места на диске, рекомендуется 4 ГБ ( 500 МБ для IDE + 1,5 ГБ для SDK Android и образа эмулятора );
  • Минимальное разрешение экрана 1280 на 800 пикселей;
  • JDK 8 ;
  • Для ускоренного эмулятора: 64-разрядная операционная система и процессор Intel с поддержкой функций Intel VT-x , Intel EM64T ( Intel 64 ) и Execute Disable ( XD ).

Android Studio Mac OS

  • Mac OS X 10.8.5 или выше, вплоть до 10.11.4 ( El Capitan );
  • 2 ГБ оперативной памяти, рекомендуется 8 ГБ оперативной памяти;
  • 2 ГБ свободного места на диске, рекомендуется 4 ГБ ( 500 МБ для IDE + 1,5 ГБ для Android SDK и образа эмулятора );
  • Для Android Studio минимальное разрешение экрана должно составлять 1280 на 800 пикселей;
  • JDK 6 .

Linux

  • Стационарный компьютер с GNOME или KDE : протестированный на Ubuntu 12.04 , Precise Pangolin ( 64-разрядное распределение, поддерживающее 32-разрядные приложения );
  • 64-разрядное распределение, позволяющее запускать 32-разрядные приложения;
  • Библиотека GNU C ( glibc ) версии 2.11 или новее;
  • 2 ГБ оперативной памяти, рекомендуется 8 ГБ оперативной памяти;
  • 2 ГБ свободного места на диске, рекомендуется 4 ГБ ( 500 МБ для IDE + 1,5 ГБ для Android SDK и образа эмулятора );
  • Минимальное разрешение экрана 1280 на 800 пикселей;
  • JDK 8 ;
  • Для ускоренного эмулятора: процессор Intel с поддержкой функций Intel VT-x , Intel EM64T ( Intel 64 ) и Execute Disable ( XD ) или процессор AMD с поддержкой технологии виртуализации AMD ( AMD-V ).

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

Пакетная установка и Android Studio SDK

android-studio-bundle-143.2821654-windows.exe включает в себя установщик и Android Studio SDK . В качестве альтернативы можно загрузить файл дистрибутива без установщика и SDK .

Установка Android Studio на 64-разрядную Windows 8.1

Я запустил android-studio-bundle-143.2821654-windows.exe , чтобы началась установка Android Studio. Установщик выводит диалоговое окно установки Android Studio , показанное на рисунке 1:

Установка Android Studio на 64-разрядную Windows 8.1

Нажав кнопку « Далее », я перехожу к следующему диалоговому окну, в котором можно отказаться от установки Android SDK ( входит в комплект установки ) и Android Virtual Device ( AVD ):

Установка Android Studio на 64-разрядную Windows 8.1 - 2

Я решил сохранить настройки по умолчанию. После нажатия кнопки « Далее » вы попадете в диалоговое окно лицензионного соглашения. Примите его условия, чтобы продолжить установку:


Рисунок 3. Примите условия лицензионного соглашения для продолжения установки

В следующем диалоговом окне предлагается изменить папку в которую осуществляется установка Android Studio и Android Studio SDK :


Рисунок 4. Укажите место, в которое будет осуществлена установка Android Studio и Android Studio SDK

Измените место установки или используйте настройки по умолчанию и нажмите кнопку « Далее ».

По умолчанию установщик создает ярлык для запуска программы. Затем нажмите кнопку « Установить », чтобы начать установку:


В появившемся диалоговом окне отображается ход установки Android Studio и Android Studio SDK . Нажав кнопку « Показать детали », можно просмотреть подробную информацию о ходе установки.


Чтобы завершить установку и приступить к Android Studio уроку, нажмите кнопку « Готово ».

Запуск Android Studio

Android Studio при своем запуске выводит следующую заставку:

Запуск Android Studio

При первом запуске вам будет предложено установить в диалоговых окнах несколько параметров конфигурации. В первом диалоговом окне основное внимание уделяется импорту настроек из ранее установленной версии Android Studio :

Можно принять настройки по умолчанию и нажать на кнопку « ОК ». После этого Android Studio выведет диалоговое окно « Мастера установки »:


Рисунок 9. Проверка настроек Android SDK и среды разработки

После нажатия кнопки « Далее », « Мастер установки » предложит выбрать тип установки компонентов SDK . На данный момент я рекомендую использовать стандартную конфигурацию:




Рисунок 12. «Мастер установки» загружает и распаковывает компоненты Android Studio

Перед тем, как установить Android Studio , еще раз проверьте параметры своей системы. Если ваш компьютер собран не на базе процессора Intel , может возникнуть неприятный сюрприз после того, как компоненты будут полностью загружены и распакованы:


Рисунок 13. Аппаратное ускорение на базе Intel недоступно

Возможные варианты решения проблемы – использовать медленный эмулятор или Android-устройство для ускорения разработки.


Оно используется для запуска нового проекта Android Studio , работы с существующим проектом и т. д.

Ваше первое мобильное приложение в Android Studio

Создание нового проекта

Создание нового проекта

Создание нового проекта - 2

Android Studio позволяет выбирать форм-факторы или категории целевых устройств для каждого приложения. Я использую минимальные параметры SDK API 15: Android 4.0.3 ( IceCreamSandwich ) ( в разделе «Смартфоны и планшетные ПК» ), которые поддерживается моим планшетом Amazon Kindle Fire HD . Поскольку Android Studio в настоящее время не поддерживает этот уровень API ( даже при добавлении образа системы 4.0.3 через SDK Manager ), я изменил этот параметр на API 14: Android 4.0 ( IceCreamSandwich ), который также поддерживается моим планшетом.


Затем настройте направление:

Сначала вы увидите приветственное диалоговое окно « Совет дня », которое при желании можно отключить в Android Studio :


Рабочее пространство проекта состоит из панели меню, панели инструментов, рабочей области, дополнительных компонентов, с помощью которых можно открыть другие окна ( например, окно консоли Gradle ), и строки состояния.

Окна проекта и редактора

Когда вы попадаете в рабочую область проекта, W2A идентифицируется как текущий проект. Через несколько минут данные о нем появятся в двух новых окнах:

Окна проекта и редактора

Окно проекта представляет собой дерево, основными ветвями которого являются « Приложения » и « Скрипты Gradle ». Приложения разбиты на разделы manifests , java и res :

В разделе настроек Android Studio « Gradle Scripts » определены различные файлы .gradle и .properties , которые используются системой сборки на основе Gradle .

Каждое ответвление / раздел соответствует имени каталога или имени файла. Например, res соответствует каталогу res , а strings.xml соответствует файлу strings.xml .

Заключение

Мы установили, настроили Android Studio и создали проект своего первого мобильного приложения. Теперь вы готовы создать свое Android –приложение . В Android Studio это означает заполнение нового проекта Java-кодом и файлами ресурсов.

Дайте знать, что вы думаете по данной теме в комментариях. Мы крайне благодарны вам за ваши комментарии, дизлайки, подписки, отклики, лайки!

Пожалуйста, оставьте ваши мнения по текущей теме материала. За комментарии, дизлайки, отклики, лайки, подписки огромное вам спасибо!

Читайте также: