2009-09-07 6 views
8

Tengo mi propio archivo apk de biblioteca personalizada (say lib.apk) & quiero que sea disponible para otras aplicaciones. Cómo proporcionar la biblioteca de usos en el archivo android manifest.xml en otras aplicaciones para usar mi biblioteca personalizada.Cómo usar mi archivo apk de biblioteca personalizado en otras aplicaciones

+0

¿Por qué necesita una APK para eso? Solo tira un JAR y estarás bien. – Matthias

+0

Tengo el mismo problema. Tengo un software modular que funcionará como actividades múltiples, y no quería repetir las interfaces y el código común en todos los módulos. Ese sería el caso si opto por usar una lib lib. – Spidey

+4

Es difícil incluir recursos en archivos jar, que maneja lib.apk. – phreed

Respuesta

7

El elemento <uses-library> es para complementos suministrados como extensiones del firmware. AFAIK, no será utilizable para su escenario.

Es muy probable que necesite implementar un servicio que exhiba una API a través de AIDL, o utilice un conjunto de acciones Intent documentadas para intercambiar datos con otras aplicaciones, o exponga un ContentProvider.

De lo contrario, empaquete su código como un JAR, no como un APK. Puede ver muchos ejemplos de esto en my github repositories (todas las teclas siguen este patrón).

0

Intento utilizar una biblioteca jar en eclipse (agregué una biblioteca jar externa en las opciones Java Build Path de mi proyecto). La aplicación compila pero tengo una excepción "No se pudo encontrar la clase ..." en tiempo de ejecución.

0

En realidad, puede crear un proyecto que enlace a otro proyecto.

que tiene que hacer dos cosas en Eclipse:

  • add-utiliza la biblioteca = nombre del paquete en el manifest.xml
  • propiedades del proyecto abiertas -> Java Build Path -> Proyectos y añadir el proyecto de la biblioteca usada

Pero no he logrado que funcione. El SDK sube correcly ambos paquetes, pero me sale un error de enlace

WARN/dalvikvm(444): Link of class 'Lme/guillaumin/android/osmtracker/activity/DisplayTrackMap;' failed 
ERROR/dalvikvm(444): Could not find class 'me.guillaumin.android.osmtracker.activity.DisplayTrackMap', referenced from method me.guillaumin.android.osmtracker.activity.TrackLogger.onOptionsItemSelected 
WARN/dalvikvm(444): VFY: unable to resolve const-class 154 (Lme/guillaumin/android/osmtracker/activity/DisplayTrackMap;) in Lme/guillaumin/android/osmtracker/activity/TrackLogger; 

la máquina virtual no puede cargar la clase en mi aplicación que enlaza en la aplicación de libs.

-1

La "aplicación" lib.apk debe publicar intentos utilizando Intent-Filters en el archivo AndroidManifest.xml.

La actividad que requiere el uso de la actividad dentro del lib.apk, sólo tiene que iniciar un intento, como a continuación:

Intent i = new Intent(); 
    i.setClass(this, libAPKActivity.class); 
3

Al pasar de una biblioteca frasco para la biblioteca y apk asegurarse de que la referencia a el archivo jar se elimina de "Java Build Path" -> "Proyectos" y la biblioteca se agrega a "Android" -> "Biblioteca".

+2

Gracias, esto funcionó para mi caso en que la aplicación se vinculó a mi biblioteca personalizada, pero cuando instalé la APK en el dispositivo, recibí una advertencia que decía que no se podía encontrar la biblioteca "APK". Quitarlo de la ruta de compilación de Java pero mantenerlo como referencia de biblioteca lo resolvió. – fejd

+1

@fejd Exactamente mi experiencia como se describe [aquí] (http://stackoverflow.com/a/20320105/2930186) – ripopenid

Cuestiones relacionadas