Desarrollo de bibliotecas de Android: Declaración de recursos (Parte 1) | según gökhan alıcı Octubre de 2020

Después de varios años de experiencia en el desarrollo de aplicaciones, comencé a trabajar en la página de desarrollo de la biblioteca de Android. Este artículo es el primer artículo de mi serie de experiencias de desarrollo de bibliotecas que analiza el uso de conjuntos de recursos que podrían ser útiles para los desarrolladores e integradores de bibliotecas.

TL; DR

  • Agregue un prefijo específico de la biblioteca a los recursos de su biblioteca, es decir, cadenas, nombre de archivo …
  • Utilizar Bibliotecas externas sección para profundizar en bibliotecas externas
  • No defina las funciones de hardware necesarias con utiliza-funciones propiedad en el archivo de manifiesto

El integrador puede sobrescribir intencionalmente o no los recursos de la biblioteca. Supongamos que tenemos una plantilla de cadena que usamos para mostrar algunas instrucciones

Si el integrador sobrescribe session_expire un recurso de cadena con una nueva cadena que no contiene % 1 $ d, provoca una excepción en tiempo de ejecución. Para evitar este problema, podríamos dividir la cadena en dos partes y usar el nombre de la biblioteca como un prefijo antes de la clave de la cadena para dificultar la sobrescritura inadvertida de la cadena.

Para asegurarse de que cada clave de recurso tenga un prefijo de biblioteca, puede definir un prefijo en su propio build.gradle que advierte si hay una fuente que no tiene prefijo.

Si bien la reescritura de recursos parece ser una molestia para los desarrolladores de bibliotecas, hace que sea tremendamente más fácil personalizar la interfaz de usuario para los desarrolladores de bibliotecas sin más esfuerzo en los estilos aplicados correctamente. Por ejemplo, el color del texto utilizado en la biblioteca puede no ser compatible con la aplicación host en términos de accesibilidad o color del texto, momento en el que la documentación de la biblioteca debe ser clara sobre qué estilo / color se utilizó para un elemento de interfaz de usuario en particular. Después de que el integrador sobrescribe un recurso específico en la carpeta de recursos de la aplicación, se aplica la personalización de la interfaz de usuario.

¿Qué pasa si la biblioteca no está documentada, cómo cambiar un elemento específico de la interfaz de usuario? Si bien puede parecer desalentador, podríamos acceder a la fuente de la biblioteca usando Android Studio.

Cuando haces clic en Bibliotecas externas sección, se enumerarán las bibliotecas externas de su proyecto, luego debe encontrar una biblioteca relacionada en la que le gustaría hacer algunos cambios, pero el paso complicado es cómo encontrar el elemento de la interfaz de usuario de los archivos de recursos, sigo estos pasos;
* Seleccione una cadena de la pantalla
* Busque este texto de cadena en res / valores / valores.xml encontrar llave instrumentos de cuerda
* Busque el archivo de diseño a continuación res / diseño carpeta usando una clave de cadena

Una vez que encuentre el archivo de diseño, puede aplicar fácilmente sus cambios acercándose a los recursos de sobrescritura en la carpeta res de su aplicación. Sin embargo, tenga en cuenta que sus cambios pueden no ser válidos en la próxima versión de la biblioteca.

Por esta razón, algunas bibliotecas dependen en gran medida de funciones de hardware como cámara, micrófono, etc. desarrolladores de bibliotecas tienden a declarar estas funciones como funciones requeridas en el archivo de manifiesto.

Pero cuando la función declarada en el archivo de manifiesto, Filtros de Google Play evitar que la aplicación se instale en dispositivos que no incluyen funciones o no son compatibles con las funciones enumeradas en el manifiesto. Entonces los desarrolladores de la biblioteca función de usuario la declaración afectará la descarga de la aplicación, aunque no hay garantía de que la biblioteca sea utilizada por todos los usuarios de la aplicación

En vez de utiliza-funciones declaración, los las funciones requeridas deben verificarse en tiempo de ejecución usando PackageManager hasSystemFeature funciones para comprobar si el dispositivo admite las funciones o no

Gracias por leer, no dude en ponerse en contacto conmigo LinkedIn y Gorjeo.

Deja una respuesta

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