Cómo comenzar a usar el NDK

El kit de desarrollo nativo (NDK) es un conjunto de herramientas que te permite usar código C y C++ con Android, y proporciona bibliotecas de plataforma que puedes usar para controlar actividades nativas y acceder a componentes de dispositivos físicos, como sensores y entrada táctil. Es posible que el NDK no sea adecuado para la mayoría de los programadores principiantes de Android que solamente necesitan utilizar código Java y API de marco de trabajo para desarrollar sus apps. Sin embargo, el NDK puede resultar útil en los casos en los que necesites realizar una o más de las siguientes acciones:

  • Lograr rendimiento adicional de un dispositivo para lograr una latencia baja o ejecutar aplicaciones intensivas a nivel computacional, como juegos o simulaciones físicas
  • Volver a usar tus propias bibliotecas C o C++, o las de otros desarrolladores

Con Android Studio 2.2 y posteriores, puedes utilizar el NDK para compilar código C y C++ en una biblioteca nativa y empaquetarlo en tu APK con Gradle, el sistema de compilación integrado de IDE. Tu código Java puede llamar a funciones en tu biblioteca nativa a través del marco de trabajo de la interfaz nativa de Java (JNI). Para obtener más información sobre Gradle y el sistema de compilación Android, lee Configurar tu compilación.

La herramienta de compilación predeterminada de Android Studio para compilar bibliotecas nativas es CMake. Android Studio también es compatible con ndk-build debido al gran número de proyectos existentes que usan el paquete de herramientas de compilación. Sin embargo, si creas una biblioteca nativa nueva, debes usar CMake.

En esta guía, encontrarás la información que necesitas para comenzar a usar el NDK en Android Studio. Si no tienes la versión más reciente de Android Studio, descárgala e instálala ahora.

Atención, usuarios experimentales de Gradle: consideren realizar la migración a la versión 2.2.0, o una posterior, del complemento y usar de CMake o ndk-build para compilar sus bibliotecas nativas si algo de lo siguiente se aplica en sus casos: en su proyecto nativo ya se usa CMake o ndk-build; tal vez prefieran usar una versión estable del sistema de compilación de Gradle; o tal vez deseen admitir herramientas de complemento, como CCache. De lo contrario, pueden continuar usando la versión experimental de Gradle y el complemento de Android.

Descarga de NDK y herramientas

Para compilar y depurar el código nativo para tu app, necesitas los siguientes componentes:

  • El kit de desarrollo nativo (NDK) de Android: conjunto de herramientas que te permite utilizar código C y C++ con Android.
  • CMake: herramienta de compilación externa que funciona junto con Gradle para compilar tu biblioteca nativa. No necesitas este componente si solo planeas usar ndk-build.
  • LLDB: depurador que Android Studio usa para depurar código nativo.

Puedes instalar estos componentes usando SDK Manager:

  1. Desde un proyecto abierto, selecciona Tools > Android > SDK Manager en el menú principal.
  2. Haz clic en la pestaña SDK Tools.
  3. Marca los casilleros junto a LLDB, CMake y NDK, como se muestra en la Figura 1.

    Figura 1: Instalación de LLDB, CMake y el NDK desde SDK Manager.

  4. Haz clic en Apply y después en OK en el cuadro de diálogo siguiente.
  5. Cuando se complete la instalación, haz clic en Finish y luego en OK.

Cómo crear o importar un proyecto nativo

Una vez que hayas configurado Android Studio, simplemente puedes Crear un proyecto nuevo compatible con C y C++. Sin embargo, si deseas agregar o importar código nativo en un proyecto de Android Studio existente, debes seguir este proceso básico:

  1. Crea archivos de origen nativos nuevos y agrégalos a tu proyecto de Android Studio.
    • Puedes omitir este paso si ya dispones de código nativo o si deseas importar una biblioteca nativa compilada previamente.
  2. Crea una secuencia de comandos de compilación de Cmake para indicarle a CMake cómo compilar tus fuentes nativas en una biblioteca. También necesitas esta secuencia de comandos de compilación si realizas importaciones y vinculaciones en bibliotecas de plataforma o compiladas previamente.
    • Puedes omitir este paso si tu biblioteca nativa existente ya tiene una secuencia de comandos de compilación CMakeLists.txt o utiliza ndk-build e incluye una secuencia de comandos de compilación Android.mk.
  3. Vincula Gradle con tu biblioteca nativa proporcionando una ruta de acceso a tu archivo de secuencia de comandos de CMake o ndk-build. Gradle usa la secuencia de comandos para importar el código fuente en tu proyecto de Android Studio y empaquetar tu biblioteca nativa (el archivo SO) en el APK.

    Nota: Si tu proyecto existente utiliza la herramienta ndkCompile obsoleta, debes abrir el archivo build.properties y eliminar la siguiente línea de código antes de configurar Gradle para utilizar CMake o ndk-build:

    // Remove this line
    android.useDeprecatedNdk = true
    
  4. Para compilar y ejecutar tu app, haz clic en Run ejecutar y luego ejecutar la app desde el menú principal. Gradle agrega el proceso CMake o ndk-build como una dependencia para compilar, generar y empaquetar la biblioteca nativa con tu APK.

Una vez que tu app está en ejecución en un dispositivo físico o en el emulador, puedes utilizar Android Studio para Depurar tu app. De lo contrario, lee la página Conceptos para obtener más información sobre el NDK y sus componentes.