2009-09-07 6 views
8

Ho il mio file apk della libreria personalizzata (ad esempio lib.apk) & voglio renderlo disponibile alle altre applicazioni . Come fornire la libreria uses nel file manifest.xml di android in altre app in modo da utilizzare la mia libreria personalizzata.Come utilizzare il file apk della libreria personalizzata in altre applicazioni

+0

Perché hai bisogno di un APK per questo? Basta tirare un barattolo e stai bene. – Matthias

+0

Ho lo stesso problema. Ho un software modulare che funzionerà come attività multiple e non ho voluto ripetere le interfacce e il codice comune in tutti i moduli. Questo sarebbe il caso se avessi optato per usare una jar lib. – Spidey

+4

È difficile includere le risorse nei file jar, che gestisce un file lib.apk. – phreed

risposta

7

L'elemento <uses-library> è per i componenti aggiuntivi forniti come estensioni del firmware. AFAIK, non sarà utilizzabile per il tuo scenario.

Molto probabilmente, è necessario implementare un servizio che espone un'API tramite AIDL o utilizza un set di azioni documentate Intent per scambiare dati con altre applicazioni o espone uno ContentProvider.

In caso contrario, impacchettare il codice come JAR, non come APK. Potete vedere molti esempi di questo in my github repositories (tutti i cwac- seguono questo modello).

0

Provo ad usare una libreria jar in eclissi (ho aggiunto una libreria jar esterna nelle opzioni del percorso di costruzione Java del mio progetto). L'applicazione si compila ma ho un'eccezione "Impossibile trovare la classe ..." in fase di esecuzione.

0

In realtà è possibile creare un progetto che si collega a un altro progetto.

devi fare due cose in Eclipse:

  • add usa-library = nome del pacchetto nella manifest.xml
  • aperti proprietà del progetto -> Java Build Path -> Progetti e aggiungere il progetto di la libreria usata

Ma non sono riuscito a farlo funzionare. L'SDK carica correcly entrambi i pacchetti, ma ottengo un errore di collegamento

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 non può caricare la classe nella mia app che collega in app librerie.

-1

L'"applicazione" lib.apk dovrebbe pubblicare intenti utilizzando Intent-Filters nel file AndroidManifest.xml.

L'attività che richiede di utilizzare l'attività all'interno del lib.apk, ha solo bisogno di avviare un intento come di seguito:

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

Durante la conversione da una libreria vaso per e biblioteca apk assicurarsi che il riferimento alla il vaso viene rimosso da "Percorso build Java" -> "Progetti" e la libreria viene aggiunta a "Android" -> "Libreria".

+2

Grazie, questo ha funzionato per il mio caso in cui l'applicazione si collegava alla mia libreria personalizzata ma quando ho installato l'APK sul dispositivo ho ricevuto un avviso che diceva che la libreria "APK" non è stata trovata. Rimuovendolo dal percorso di costruzione Java ma conservandolo come riferimento di libreria risolto. – fejd

+1

@fejd Esattamente la mia esperienza come descritto [qui] (http://stackoverflow.com/a/20320105/2930186) – ripopenid

Problemi correlati