Generalidades

Integración de Rust con el desarrollo de Android | Por Kofi Otto | Febrero de 2022

Integracion de Rust con el desarrollo de Android Por

oxido es un lenguaje de programación de sistemas de propósito general que existe desde hace mucho tiempo.Como lenguaje de programación de sistemas, se puede utilizar para realizar tareas similares a las de un lenguaje, como C y C++ Pero la seguridad de la memoria es mayor. Esto hace que Rust sea útil para escribir programas o scripts en muchos sistemas operativos, incluido Android. Quizás se pregunte cómo es esto posible y si hay una manera fácil de hacerlo. Bueno, ¡de eso se trata este artículo!

Actualmente, no hay mucha información sobre cómo escribir código Rust para aplicaciones de Android.Google proporciona cierta información. aquí Pero es complicado de entender para los principiantes.El objetivo de este tutorial es proporcionar una guía simple pero efectiva para integrar el código Rust con el desarrollo de Android y eventualmente convertirse en Guía preferido. ¡No se requieren conocimientos previos de C o C++ o JNI!

usaremos estudio androidComencemos por configurarlo.

Complementos de óxido ⚙️

Primero, necesitamos el complemento Rust. Abra Android Studio. Se abrirá un cuadro de diálogo similar al que se muestra a continuación. Seleccione la pestaña Complementos, busque «Rust» e instale el complemento Rust oficial de JetBrains. Alternativamente, si ya tiene un proyecto abierto, haga clic en Archivo en la esquina superior izquierda de Android Studio y seleccione Configuración. Haz clic en Complementos.

El complemento Rust requiere que Rust esté instalado en su sistema.puedes seguir esto asociación Instale Rust en su sistema.

Integracion de Rust con el desarrollo de Android Por

Crea una aplicación vacía 📱

Ahora vamos a crear una nueva aplicación vacía. Comience completando la configuración estándar del nuevo proyecto.

1645715513 632 Integracion de Rust con el desarrollo de Android Por

Nombremos nuestro proyecto Rust Application y hagamos clic en Finalizar.

Aparecerá una ventana similar a la imagen de abajo.

1645715513 36 Integracion de Rust con el desarrollo de Android Por

Súmate al proyecto de carga 💼

Ahora agreguemos un artículo de cargasiga el tutorial provisto aquíPara incrustar un proyecto de Rust, simplemente haga clic en Terminal en el estudio de Android y entrar cargo new rust_lib --liby luego presione Entrar.

C:\Users\USER1\AndroidStudioProjects\RustApplication>cargo new rust_lib --lib

Esto creará una nueva biblioteca para que podamos usarla en nuestra aplicación.Nombramos a la biblioteca como rust_libAnote la ubicación donde se creó la carpeta.

Para ver esta carpeta en Android Studio, vaya al panel Proyecto y seleccione Proyecto en lugar de Android en el menú desplegable.

1645715513 164 Integracion de Rust con el desarrollo de Android Por

Luego verás una nueva carpeta llamada rust_libEsta carpeta contiene un nuevo git Por defecto el repositorio, un Cargo.toml archivo y un src la carpeta contiene lib.rsAhora vamos a modificar tipo de biblioteca acabamos de usar Cargo.toml documento. Para el desarrollo de aplicaciones móviles, la biblioteca debe ser dinámica.

Agregue lo siguiente al contenido Cargo.toml documento.

[lib]
name = "rust_lib"
crate-type = ["cdylib"]

Ver destacados aquí.

Agregar dependencias 🧶

Agreguemos las dependencias que crearán los archivos necesarios para que la vinculación de nuestro código de óxido a Android finalice sin problemas.

utilizar»*» para extraer la última versión de las dependencias.

flapigen es la principal dependencia de compilación de nuestro código de óxido para generar el código adecuado para usarlo en nuestra aplicación de Android. flapigen Use un archivo de interfaz, pero tener que modificar el archivo de interfaz cada vez que cambia su código puede volverse tedioso.donde es eso rifgen viniendo. Hace que la creación de archivos de interfaz sea muy sencilla.

Se utilizan dependencias adicionales para el registro.

Crear archivos de compilación 📄

Como se mencionó anteriormente, flapigen y rifgen son dependencias de compilación y funcionan con build.rs documento.Botón derecho del ratón rust_lib carpeta, luego seleccione Nuevo > Archivo Rust.

1645715513 148 Integracion de Rust con el desarrollo de Android Por

nombra el archivo build.rs.

Sigue el tutorial dado flapigen y rifgennuestro build.rs Debe ser similar a lo siguiente:

construir.rs

te estarás preguntando build.rs. flapigen Convierte el contenido del archivo de interfaz a java_glue Archivos de óxido. Así que primero especificamos el archivo fuente del archivo de interfaz (in_src) y luego el archivo de salida (java_glue.rs).El directorio java_glue.rs debe combinarse con OUT_DIR Variables de entorno.Una vez hecho esto, utilice rifgen Genere un archivo de interfaz que especifique nuestras preferencias en función del idioma al que agreguemos el proyecto de óxido.último parámetro Generator::new Especifique el inicio de la carpeta que contiene nuestro código de óxido y generate_interface La función obtiene la ruta del archivo de interfaz. ES DECIR in_scr. Esta java_folder Especifica dónde deben ir los archivos java creados.Llamar swig_gen.expand Decir flapigen Generar los archivos correspondientes. Preste atención a estos parámetros cuando los usemos en compilaciones de Gradle.

Finalmente, crea un archivo llamado java_glue.rs en el interior rust_lib/src carpeta y poner lo siguiente:

y añadir:

mod java_glue;
pub use crate::java_glue::*;

para ti lib.rs documento. Hacer esto conectará su código de óxido con el código generado.

Agregue la cadena de herramientas y el enlazador de Android ⛓

Para compilar Rust para Android, necesitamos agregar la cadena de herramientas de Android a rustupPara hacer esto, simplemente ejecute el siguiente comando en una terminal:

C:\Users\USER1\AndroidStudioProjects\RustApplication>rustup target add aarch64-linux-android armv7-linux-androideabi

Esto agrega la cadena de herramientas de óxido y la biblioteca estándar para las versiones de Android de 64 bits y 32 bits, respectivamente.Ahora, agreguemos enlazador del compiladordebe agregarse a rust_lib/.cargo/config.toml documento.

Botón derecho del ratón rust_lib carpeta, cree un nuevo directorio llamado .cargo entonces en .cargo directorio llamado config.toml.

El enlazador apropiado viene con NDK de Android asi que deberia ser descargado Antes de continuar.

Agregue lo siguiente al archivo de configuración que creó.

reemplazar SDK de Android Use la ruta del SDK de Android (o la carpeta que contiene el paquete NDK).También, reemplace Versión con la versión de su sistema operativo. Por ejemplo, en mi computadora con Windows, la ruta completa es:

[target.aarch64-linux-android]
linker = "C:\\Users\\taimoor\\AppData\\Local\\Android\\Sdk\\ndk-bundle\\toolchains\\llvm\\prebuilt\\windows-x86_64\\bin\\aarch64-linux-android21-clang++.cmd"

Aviso .cmd Y finalmente la versión de Windows.

Automatice compilaciones con Gradle 🐘

Gradle se puede utilizar para automatizar cargo build Siempre que queramos probar la aplicación. Esto hará que los cambios que hagamos en el lado de Rust se actualicen automáticamente en nuestra aplicación.

construir.gradle

Tenga en cuenta que esto es nivel de aplicación o módulo Archivos Gradle en lugar de archivos Gradle a nivel de proyecto.añadir línea 20 a 27 y línea después de los 65 años.line 65 en adelante simplemente le indica a Gradle que ejecute la compilación de carga cuando ejecutamos la aplicación. Después de ejecutar el comando de compilación de carga, crearemos un archivo java y un archivo de biblioteca dinámica (.entonces) y péguelos en un directorio que Android pueda leer y usar en nuestro código Kotlin.

La aplicación ahora debería ejecutarse 😄.Si tiene problemas para ejecutarlo, deje un comentario a continuación o no dude en enviarme un correo electrónico [email protected]!

Sección adicional: Registro 📃

Implementemos rápidamente el registro para ayudar a depurar nuestro código Rust.en el interior lib.rs archivo, agregue lo siguiente:

Usamos android_logger crate se usa para generar registros y luego llamar log_panics::init() Redirigir todos los pánicos al registro en lugar de imprimir al error estándar.propiedades de la nota #[generate_interface]Esto le dice rifgen Llamaremos a esta función desde Kotlin, por lo que debería agregar la llamada al método al archivo de la interfaz.

Carga bibliotecas desde Kotlin 📲

Ahora que tenemos configurado el lado de Rust, pasemos al lado de Kotlin. Ahora cargaremos la biblioteca desde el singleton:

MainActivity.kt

Agregue varias importaciones a la clase de registros que creamos.Tenga en cuenta que aunque nombramos la función como initialise_loggingpodemos usarlo como initialiseLoggingEsto se debe a que especificamos CamelCase durante la instalación. rifgen.

Ejecute el programa para ver la información del código de Rust que se está registrando.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba