Biblioteca .jar de Android dentro de la biblioteca .jar – Dependencias anidadas
Recientemente hice una pregunta muy similar, pero no estaba seguro de cómo expresarlo. Después de haber recibido algunos comentarios e investigado algunas de las posibles soluciones, ahora estoy preguntando de nuevo con lo que creo que es una mejor explicación de la cuestión.
Mi aplicación de Android utiliza mi biblioteca (parentLib), esta biblioteca se construye métodos de referencia de otra biblioteca (childLib). Por lo tanto, la propia aplicación utiliza parentLib (biblioteca .jar), que a su vez utiliza childLib (otra biblioteca .jar).
- Java / Android obtener matriz de xml
- Android Studio - con Junit 4.12 "!!! JUnit versión 3.8 o posterior esperado: "
- Android JNI nativo C función llamada mata actividad
- ¿Hay alguna práctica recomendada para empaquetar capas MVP?
- Android: ¿Cómo escribir una nueva línea en un archivo CSV?
El problema aquí es que cuando la aplicación intenta utilizar cualquier cosa que involucre la biblioteca anidada (childLib), recibe un NoClassDefFoundError, que bloquea la aplicación. Creo que este problema se debe a que la aplicación no puede resolver la dependencia anidada.
Realmente no puedo usar proyectos de la biblioteca de Android, ya que necesito que el código fuente sea tan ofuscado y difícil de entender como sea posible. También he intentado crear estas bibliotecas con Android Studio, sólo para tristemente no reciben mejores resultados.
Mis opciones (creo) son:
Combinar las bibliotecas
Podría combinar childLib y parentLib en una única biblioteca .jar, separándolos en paquetes diferentes. Esto sería difícil sin embargo, ya que en la práctica hay alrededor de 6 bibliotecas anidadas para mi pretendida App.
Insista en que el Cliente use varias bibliotecas
En lugar de decirle al cliente: "Aquí hay una biblioteca simple (parentLib) que puedes usar", podría decir: "Aquí hay 7 diferentes bibliotecas para importar (parentLib, childLib, etc.), de lo contrario nada funcionará". No exactamente profesional!
Otras opciones
¡Daría la bienvenida a cualquier otra sugerencia que alguien tenga!
Gracias por adelantado.
- Llame a actvity después de que el viewpager haya terminado
- Java.lang.OutOfMemoryError al intentar cargar un mapa de bits en imageView
- PreferenciaNo se encuentra la clase Screen
- Mono.AndroidTools.InstallFailedException: Fallo
- ¿Cómo obtener el primer día de la semana y mes actuales?
- Javadoc en Android (Eclipse)
- Android: no se puede llamar a setOnItemClickListener desde un ListView
- Cumpleaños de amigos de Facebook en Android
El NoClassDefFoundError significa que la clase estuvo presente durante la compilación, pero no está disponible en el classpath al intentar ejecutarlo.
Por lo tanto, necesita decir gradle para compilar esas bibliotecas y empaquetarlas dentro del apk.
Copie todos los frascos de biblioteca que necesita en la carpeta libs de la raíz de su proyecto. A continuación, edite el archivo gradle.build y añada lo siguiente:
dependencies { compile fileTree(dir: 'libs', include: '*.jar') }
Esto hará que todas las bibliotecas necesarias se agreguen a su apk. De esta forma, las clases que necesitas estarán presentes en el classpath cuando ejecutes el código que las necesita.
- ¿Por qué Travis CI descarga todo lo que construye cada vez?
- Cómo configurar mi gradle para la versión final de apk