2009-09-07 4 views
8

J'ai mon propre fichier apk de bibliothèque personnalisée (disons lib.apk) & je veux le rendre disponible pour d'autres applications. Comment fournir la uses-library dans le fichier android manifest.xml en d'autres applications afin d'utiliser ma bibliothèque personnalisée.Comment utiliser mon fichier apk de la bibliothèque personnalisée dans d'autres applications

+0

Pourquoi avez-vous besoin d'un fichier APK pour cela? Juste rouler un JAR et vous allez bien. – Matthias

+0

J'ai le même problème. J'ai un logiciel modulaire qui fonctionnera comme multiples activités, et je ne voulais pas répéter les interfaces et le code commun dans tous les modules. Ce serait le cas si j'avais opté pour l'utilisation d'un jar lib. – Spidey

+4

Il est difficile d'inclure des ressources dans les fichiers jar gérés par lib.apk. – phreed

Répondre

7

L'élément <uses-library> est destiné aux modules complémentaires fournis en tant qu'extensions du microprogramme. AFAIK, ce ne sera pas utilisable pour votre scénario. Vous devrez probablement implémenter un service qui expose une API via AIDL ou utilise un ensemble d'actions documentées Intent pour échanger des données avec d'autres applications ou afficher un ContentProvider. Sinon, empaquetez votre code en tant que JAR, pas un fichier APK. Vous pouvez voir de nombreux exemples de ceci dans my github repositories (tous les cwac-ones suivent ce modèle).

0

J'essaie d'utiliser une librairie jar en eclipse (j'ai ajouté une librairie jar externe dans les options Java Build Path de mon projet). L'application compile mais j'ai une exception "Impossible de trouver une classe ..." lors de l'exécution.

0

Vous pouvez créer un projet lié à un autre projet.

Vous devez faire deux choses dans Eclipse:

  • add utilise bibliothèque = nom du package dans le manifest.xml
  • propriétés open projet -> Chemin de génération Java -> Projets et ajouter le projet de la bibliothèque utilisée

Mais je n'ai pas réussi à le faire fonctionner. Le sdk télécharge correcly les deux paquets, mais je reçois une erreur de lien

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 VM ne peut pas charger la classe dans mon application qui relie dans l'application libs.

-1

L'application "lib.apk" doit publier les intentions en utilisant Intent-Filters dans le fichier AndroidManifest.xml.

L'activité qui nécessite d'utiliser l'activité dans le lib.apk, tout doit commencer une intention comme ci-dessous:

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

Lors de la conversion d'une bibliothèque de pot à et bibliothèque apk assurez-vous que la référence à le pot est supprimé de "Java Build Path" -> "Projets" et la bibliothèque est ajoutée à "Android" -> "Bibliothèque".

+2

Merci, cela a fonctionné pour mon cas où l'application liée à ma bibliothèque personnalisée, mais lors de l'installation de l'APK sur l'appareil, j'ai reçu un avertissement disant que la bibliothèque "APK" n'a pas pu être trouvé. En le supprimant du chemin de compilation Java, mais en le conservant comme référence de la bibliothèque, vous l'avez résolu. – fejd

+1

@fejd Exactement mon expérience comme décrit [ici] (http://stackoverflow.com/a/20320105/2930186) – ripopenid

Questions connexes