- Как установить Android ndk в Linux?
- 6 ответов
- Install and configure the NDK and CMake
- Install NDK and CMake automatically
- Install the NDK and CMake
- Configure a specific version of CMake
- Groovy
- Kotlin
- Install a specific version of the NDK
- Configure specific versions of the NDK in your project
- Groovy
- Kotlin
- Default NDK version per AGP version
- Как установить android ndk в linux?
- 6 ответов
- Почему стоит использовать Android NDK в вашем следующем проекте
- Для чего и как используется бинарный код
- Использование Android NDK
- Принцип работы Android NDK
- Установка и использование Android NDK в Ubuntu
- Установка с помощью Android Studio
- Создание или импорт проекта с бинарными компонентами
Как установить Android ndk в Linux?
Я скачал Android NDK здесь: http://developer.android.com/tools/sdk /ndk/index.html
для Linux 64-битная (x86) android-ndk-r10c-linux-x86_64.bin. Как мне это установить? Инструкции не работают. Моя ОС
6 ответов
Стандартный путь
Android NDK теперь поставляется как самораспаковывающийся исполняемый файл. Скорее всего, вам нужно установить исполняемый бит:
Вышеуказанное заставит NDK извлечь в текущий рабочий каталог .
Извлечение вручную
Поскольку файл .bin на самом деле представляет собой самораспаковывающийся архив с 7 файлами Zip, при необходимости вы можете извлечь содержимое вручную:
7-Zip доступен в Ubuntu, например, через apt-get:
Обновление
Начиная с версии r14b на странице загрузки NDK мы вернулись к стандартные ZIP-архивы.
Если у вас уже установлена AndroidStudio:
Вы можете установить NDK с помощью SDK Manager из Android Studio
В открытом проекте выберите Инструменты> Android> SDK Manager из строки меню. Нажмите вкладку Инструменты SDK. Установите флажки рядом с LLDB, CMake и NDK. Применить
Перейдите в каталог, где вы его скачали. Затем выполните:
Он должен распаковать прямо здесь. Набор инструментов будет находиться в android-ndk-r10c-linux-x86_64 /toolchains. Корневая папка может иметь немного другое имя.
Я сделал, как показано ниже
Установите 7-Zip через apt-get вот так
перейдите в папку, где находится ваш ndk bin, а затем выполните команду
Ubuntu выдаст ошибку: bash: ./android-ndk-r10c-linux-x86_64.bin: нет такого файла или каталога
SLOVE: apt-get install p7zip-full
У меня есть androidBBQ на основе archlinux, установленный с помощью vmware. Но я думаю, мои инструкции должны быть одинаковыми для любого дистрибутива Linux . Я использовал встроенный менеджер SDK AndroidStudio, чтобы попытаться установить NDK . Загрузка не удалась, потому что в /tmp не было места. Оказывается, в большинстве дистрибутивов Linux есть ramdisk baesd tmpfs (временная файловая система в ОЗУ, которая монтируется в /tmp), и нет отдельного раздела, который можно было бы расширить. /tmp монтируется обычно с использованием 50% доступной оперативной памяти.
Установить NDK с помощью встроенного в Android Studio SDK manager — -> не очень удобно
а) Расширить /tmp
> Я отредактировал свой fstab как root, используя эту команду:
Я добавил эту строку в свой fstab
Примечание. Если такой строки не существует, добавьте строку выше в конце fstab. Если такая строка существует, это означает, что вы уже расширили /tmp, но ее все еще недостаточно. Поэтому измените только значение размера, увеличив его на несколько ГБ.
Затем я перезагрузился. Как только я это сделал, мой /tmp был расширен до размера 8 ГБ. В целях разработки, я думаю, мы должны с готовностью расширить наш /tmp , потому что нам все равно придется это делать через некоторое время. Размер /tmp не зависит от свободного места на нашем жестком диске (виртуальном или физическом).
b) снова запустите установку NDK
Я снова запустил установку NDK из AndroidStudio. Он должен был скачать ZDK Zip заново. Разверните, что нет функции возобновления /перепроверки для восстановления неработающих установок. Моя скорость загрузки была низкой, поэтому я свернул окно виртуального linux и продолжал читать новости. Позже, я думаю, произошла перестановка памяти /страниц. Загрузка не удалась. Я перезапустил Linux и перезапустил установку NDK таким же образом. На этот раз я позволил виртуальной машине Linux остаться на переднем плане. NDK нормально установлен с этим журналом:
Установка NDK вручную в Linux (предпочтительно) Я поражен тем, что официальный раздел разработчиков Android не удосужился указать точное место установки Android NDK. Android Studio ищет NDK по адресу:
Источник
Install and configure the NDK and CMake
To compile and debug native code for your app, you need the following components:
- The Android Native Development Kit (NDK): a set of tools that allows you to use C and C++ code with Android.
- CMake: an external build tool that works alongside Gradle to build your native library. You do not need this component if you only plan to use ndk-build.
- LLDB: the debugger Android Studio uses to debug native code. By default, LLDB will be installed alongside Android Studio.
This page describes how to install these components automatically, or by using Android Studio or the sdkmanager tool to download and install them manually.
Install NDK and CMake automatically
Android Gradle Plugin 4.2.0+ can automatically install the required NDK and CMake the first time you build your project if their licenses have been accepted in advance. If you’ve already read and agree to the license terms, then you can pre-accept the licenses in scripts with the following command:
Install the NDK and CMake
When you install the NDK, Android Studio selects the latest available NDK. For most projects, installing this default version of the NDK is sufficient. If your project needs one or more specific versions of the NDK, though, you can download and configure specific versions. Doing so helps you ensure reproducible builds across projects that each depend on a specific version of the NDK. Android Studio installs all versions of the NDK in the android-sdk /ndk/ directory.
To install CMake and the default NDK in Android Studio, do the following:
With a project open, click Tools > SDK Manager.
Click the SDK Tools tab.
Select the NDK (Side by side) and CMake checkboxes.
Figure 1: The SDK Tools window showing the NDK (Side by side) option
Click OK.
A dialog box tells you how much space the NDK package consumes on disk.
Click OK.
When the installation is complete, click Finish.
Your project automatically syncs the build file and performs a build. Resolve any errors that occur.
Configure a specific version of CMake
The SDK Manager includes the 3.6.0 forked version of CMake and version 3.10.2. Projects that don’t set a specific CMake version are built with CMake 3.10.2. To set the CMake version, add the following to your module’s build.gradle file:
Groovy
Kotlin
If you want to use a CMake version that is not included by the SDK Manager, follow these steps:
- Download and install CMake from the official CMake website.
- Specify the CMake version you want Gradle to use in your module’s build.gradle file.
Either add the path to the CMake installation to your PATH environment variable or include it in your project’s local.properties file, as shown. If Gradle is unable to find the version of CMake you specified in your build.gradle file, you get a build error.
If you don’t already have the Ninja build system installed on your workstation, go to the official Ninja website, and download and install the latest version of Ninja available for your OS. Make sure to also add the path to the Ninja installation to your PATH environment variable.
Install a specific version of the NDK
To install a specific version of the NDK, do the following:
With a project open, click Tools > SDK Manager.
Click the SDK Tools tab.
Select the Show Package Details checkbox.
Select the NDK (Side by side) checkbox and the checkboxes below it that correspond to the NDK versions you want to install. Android Studio installs all versions of the NDK in the android-sdk /ndk/ directory.
Figure 2: The SDK Tools window showing the NDK (Side by side) options
Click OK.
A dialog box tells you how much space the NDK package(s) consumes.
Click OK.
When the installation is complete, click Finish.
Your project automatically syncs the build file and performs a build. Resolve any errors that occur.
Configure each module with the version of the NDK you want it to use. When using Android Studio 3.6 or higher, if you do not specify the version, the Android Gradle plugin chooses a version that it is known to be compatible with.
Configure specific versions of the NDK in your project
You may need to configure the version of the NDK in your project if one of the following is true:
- Your project is inherited and you need to use specific versions of the NDK and the Android Gradle plugin (AGP). For more information, see Configure the NDK for the Android Gradle plugin.
You have multiple versions of the NDK installed and you want to use a specific one. In this case, specify the version using the android.ndkVersion property in the module’s build.gradle file, as shown in the following code sample.
Groovy
Kotlin
Default NDK version per AGP version
Before release, each AGP version is thoroughly tested with the latest stable NDK release at that time. For AGP version 3.6 and above, that NDK version will be used to build your projects if you do NOT specify an NDK version in the build.gradle file. The default NDK version is documented inside the AGP release notes. The current default NDK versions are listed in the following table:
Android Studio/Gradle Plugin Version | |||||||
---|---|---|---|---|---|---|---|
7.0 | 4.2 | 4.1 | 4.0 | 3.6 | 3.5 | 3.4 | |
Default NDK version specified for the version of AGP | 21.4.7075529 | 21.4.7075529 | 21.1.6352462 | 21.0.6113669 | 20.0.5594570 | No default specified |
Content and code samples on this page are subject to the licenses described in the Content License. Java is a registered trademark of Oracle and/or its affiliates.
Источник
Как установить android ndk в linux?
Я загрузил android NDK отсюда:http://developer.android.com/tools/sdk/ndk/index.html
для Linux 64-разрядная версия (x86) android-ndk-r10c-linux-x86_64.бункер. Как я его устанавливаю? Инструкции не работают. Моя ОС
6 ответов
Стандартный Путь
NDK Android теперь поставляется как самораспаковывающийся исполняемый файл. Вероятно, вам нужно установить исполняемый бит:
вышеуказанное приведет к извлечению NDK в текущий рабочий каталог.
Извлечение Инструкцию
Так .bin файл действительно Просто 7-Zip самораспаковывающийся архив, вы можете вручную извлечь содержимое, если нужны:
7-Zip доступен в Ubuntu, например, через apt-get:
обновление
Как минимум r14b на страница загрузки NDK, мы вернулись к стандартным архивам ZIP.
вы можете установить NDK с помощью диспетчера SDK из Android Studio
в открытом проекте выберите инструменты > Android > SDK Manager в строке меню. Перейдите на вкладку Инструменты SDK. Установите флажки рядом с LLDB, CMake и NDK. Применить
перейдите в каталог, в который вы его загрузили. Затем выполните:
Он должен распаковать прямо там. Цепочка инструментов будет находиться в Android-ndk-r10c-linux-x86_64/toolchains. Корневая папка может иметь несколько другое имя.
Я сделал, как показано ниже
установить 7-Zip через apt-get такой
перейдите в папку, где находится ваш NDK bin, а затем выполните команду
Ubuntu будет ошибка:bash: ./андроид-НДК-r10c-ОС Linux-x86_64 с.ОГРН: нет такого файла или каталога
slove: apt-get install p7zip-full
у меня есть androidBBQ, который основан на archlinux, установленный с помощью vmware. Но я думаю мои инструкции должны быть одинаковыми для любого дистрибутива Linux. Я использовал встроенный менеджер SDK AndroidStudio, чтобы попытаться установить NDK. Не удалось загрузить, потому что в /tmp не было места. Оказывается, большинство дистрибутивов Linux имеют ramdisk baesd tmpfs (временная файловая система в ОЗУ, которая монтируется в /tmp) и нет отдельного раздела, который можно было бы расширить. / tmp установлен обычно с помощью 50% доступной оперативной памяти.
установите NDK с помощью встроенного SDK-менеджера Android Studio ->не так удобно
a) расширить / tmp
Я отредактировал свою fstab как root, используя эту команду:
Я добавил эту строку к моей fstab
Примечание: если такой строки не существует, добавьте строку выше в конце fstab. Если такая линия существует, это означает, что вы уже расширил ваш /tmp, и он все еще был недостаточным. Таким образом, измените значение «размер», подняв его на несколько GBs.
Затем я перезагрузился. Как только я это сделал, мой /tmp был расширен до размера 8GB. Для целей развития, я думаю мы должны легко расширить наш / tmp потому что нам все равно придется сделать это через некоторое время. Размер /tmp не зависит от свободного места на нашем жестком диске (виртуальном или физическом).
b) запустите NDK install еще раз
Я побежал NDK снова устанавливается из AndroidStudio. Он должен был загрузить NDK zip заново. Unfrotunate, что нет функции resume/recheck для восстановления сломанных установок. Моя скорость загрузки была медленной, поэтому я свернул окно виртуального linux и продолжил читать новости. Позже, я думаю, произошел обмен памятью / страницей. Ошибка загрузки. Я перезапустил Linux и перезапустил NDK install таким же образом. На этот раз я позволил виртуальной машине Linux остаться на переднем плане. NDK установлен нормально с этим журналом :
ручная установка NDK в Linux (предпочтительно) Я поражен, что официальный раздел Android dev не потрудился указать точное местоположение установки Android NDK. Android Studio ищет NDK по адресу:
Источник
Почему стоит использовать Android NDK в вашем следующем проекте
Оригинал: Why should you need to pick Android NDK for your next project
Автор: Harigovind Thoyakkat
Дата публикации: 28 марта 2017 г.
Перевод: А.Панин
Дата перевода: 28 апреля 2017 г.
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, поэтому вам всегда стоит обращаться к своими знаниям, опыту и интуиции.
Источник