Cómo crear y usar el SDK de Android por Georgia Garcia Ingeniería ProFUSION | Octubre de 2020

Ya sea que sea un OEM o un desarrollador que personaliza el proyecto de código abierto de Android, es posible que haya encontrado un problema en el que desarrolló la función y desea que los desarrolladores de aplicaciones la usen. Entonces el SDK es útil.

El kit de desarrollo de software de Android (SDK) es una colección de bibliotecas y herramientas que habilita y facilita el desarrollo de aplicaciones de Android. Los SDK permiten a los actores externos ampliar el SDK de Android y agregar interfaces a sus funciones sin cambiar el SDK de Android. Según el Documento de definición de compatibilidad de Android (CDD), los OEM no pueden modificar las API públicas de Android, es decir, en espacios de nombres protegidos: java.*, javax.*, sun.*, android.*, com.android.*. Por lo tanto, los complementos pueden agregar OEM a sus espacios de nombres para proporcionar una funcionalidad que se puede exportar sin violar la CDD. Crear solo un complemento también es una gran ventaja que puede ahorrar mucho tiempo de desarrollo.

En esta publicación, crearemos un complemento de SDK que contiene un servicio de muestra, para el cual cubriremos todos los archivos de configuración necesarios. También aprenderemos a usar el complemento para conectar la aplicación a nuestro servicio de demostración. Aquí asumimos que ya tiene acceso al código fuente de Android y que puede compilar e implementar estos cambios. El código y los archivos de configuración se crearon con Android 10 (API nivel 29) en mente, pero se pueden modificar fácilmente para que funcionen con otras versiones.

Para que sea más fácil entender cómo crear y extraer su propio SDK, crearemos un servicio simple de «hola mundo» para que podamos conectarnos a él más tarde usando la aplicación.

HelloWorldService.java

Un AIDL se requiere una interfaz para conectar la aplicación cliente.

IHelloWorldService.aidl

El servicio también necesita un conjunto de permisos que se instalarán en el servidor. /system/etc directorio. Cuando se instala la aplicación cliente, busca este archivo para ver si existe la biblioteca HelloWorld. La biblioteca de servicios está instalada en /system/framework directorio.

helloworld-permissions.xml

Si helloworld-permissions.xml no existe, entonces la aplicación no está instalada y adb install devuelve un error, como:

Failure [INSTALL_FAILED_MISSING_SHARED_LIBRARY: Package couldn't be installed...]

También, AndroidManifest.xml necesita definir una interfaz de servicio.

AndroidManifest.xml

Desafortunadamente, el SDK no reconoce la biblioteca si está definida en Android.bp archivo, entonces .jar debe estar definido en Android.mk. Todavía tendremos .bp, pero solo define el APK de servicio que se creará y no será parte del complemento.

Android.bp

Android.mk

Si ya tiene un servicio, esta es la parte interesante: necesita un .mk un archivo que define el nombre y las propiedades de su SDK, y varios otros archivos que definen varias propiedades, como el nivel de API utilizado, la versión de revisión y las bibliotecas contenidas en el complemento. Durante la compilación de Android, estos archivos se agrupan en y .zip que contiene un suplemento a la distribución. En las siguientes secciones, trato con más detalle cada uno de los archivos adjuntos.

profusion_sdk_addon.mk

los profusion_sdk_addon.mk proporciona toda la información necesaria para crear el complemento, como los módulos que se incluirán. En este caso, queremos incluir nuestro helloworld.jar, por lo que necesitamos especificar el módulo en el que se integrará PRODUCT_PACKAGES variable y cópiela en el complemento usando PRODUCT_SDK_ADDON_COPY_MODULES variable. los PRODUCT_SDK_ADDON_COPY_FILES Se usa para copiar archivos de configuración que se usarán en Android Studio para crear la aplicación.

manifest.ini

los manifest.ini El archivo contiene propiedades complementarias, incluido el nivel de API de Android, bibliotecas incluidas y números de revisión. Si hay más de una biblioteca, deben estar separadas por un punto y coma (;) y también deben definirse a continuación en una nueva línea que contenga el nombre de la biblioteca y su .jar Nombre del archivo.

source.properties

los source.properties define las propiedades del complemento utilizado para la imagen creada, que se puede distribuir con el complemento SDK.

package.xml

los package.xml file hace que sea fácil para Android Studio importar un complemento.

sdk_addon_stub_defs.txt

los sdk_addon_stub_defs.txt el archivo contiene reglas para la API pública.

Usé para estas pruebas lunch aosp_x86_64-eng, así que decidí agregar un vínculo a profusion_sdk_addon.mk en build/make/target/product/aosp_x86_64.mk, pero puede agregarlo a cualquier dispositivo que use. Simplemente agregue:

El SDK está configurado. Ahora solo tenemos que construirlo. Tenga en cuenta de nuevo que uso aosp_x86_64:

$ make PRODUCT-aosp_x86_64-sdk_addon

Cuando la compilación sea exitosa, agregue el SDK .zip Estará en out/host/linux-x86/sdk_addon/profusion_sdk_addon-eng.user-linux-x86.zip

Cree una ruta para el SDK de Android para complementos y luego extraiga el contenido del complemento .zip expediente. Deberá cambiar el nombre del directorio usando los nombres definidos en la etiqueta «ruta localPackage» en package.xml

$ mkdir -p /path/to/Sdk/add-ons$ unzip out/host/linux-x86/sdk_addon/profusion_sdk_addon-eng.user-linux-x86.zip -d /path/to/Sdk/add-ons/$ mv /path/to/Sdk/add-ons/profusion_sdk_addon-eng.user-linux-x86/ /path/to/Sdk/add-ons/addon-profusionaddon-profusion-29/

Abra Android Studio y vaya a Herramientas -> Administrador de SDK. Marque la casilla «Mostrar detalles del paquete» para ver el SDK configurado para el nivel de API.

El administrador de SDK que contiene el complemento de SDK

Para usar el SDK, primero debe cambiarlo compileSdkVersion en build.gradle al nombre del proveedor junto con el nombre del complemento y el nivel de API, como se define en manifest.ini – todos separados por dos puntos. En su caso, se verá así:

Importe la clase del SDK que desea usar. En nuestro caso si com.profusion.helloworld.IHelloWorldService. A veces, Android Studio no reconoce el paquete, por lo que recomiendo ir al menú Herramientas -> Administrador de SDK y hacer clic en «Ubicación del SDK» Edit y no cambies nada, pero haz clic Next hasta que se acabe. Esto obliga a Android Studio a volver a analizar package.xml del accesorio.

El siguiente es un ejemplo de una aplicación que usa HelloWorldService:

MainActivity.kt

Asegúrese de incluir los siguientes elementos en su archivo AndroidManifest.xml bajo la marca de la aplicación:

¡Y eso es todo!

Si ejecuta la aplicación y luego verifica logcat al buscar «HelloWorldService», verá el servicio que imprime «Hello World».

$ adb shell
# logcat | grep -i HelloWorldService
3261 3279 D HelloWorldService: Hello World.

Esta documentación y todo el código fuente también están disponibles aquí.

Deja una respuesta

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