2012-01-13 4 views
6

mi sono imbattuto in un commento this answer in cui si afferma che un progetto di libreria:Perché un .aidl non può essere inserito in un progetto di libreria?

  1. non può tenere .aidl file,
  2. non può dipendere da un altro progetto biblioteca,
  3. non può detenere attività

Bene , quel commento è stato fatto circa un anno e mezzo fa, e posso dirvi con la massima certezza che l'articolo 2 non è più vero (September 2010?), perché ho un progetto perfettamente funzionante, fatto di un progetto di libreria che dipende da un altro progetto di libreria.

Quindi, le mie domande sono due:

  1. È ancora vero che un progetto di libreria non può tenere .aidl file?
  2. Se la risposta al n. 1 è sì, qual è la ragione di ciò?

BTW, come un esperimento, ho cercato di mettere IMarketBillingService.aidl (dalla fatturazione del campione in-app) in un progetto di libreria (senza nulla che lo utilizza ancora), e il progetto si basa e funziona come prima. Quindi, se non è ancora possibile che un progetto di libreria contenga un numero .aidl, questo deve essere qualcosa di più profondo ...

risposta

6

La risposta è "No". È possibile utilizzare un file AIDL nei progetti di libreria bene. Io uso una tale configurazione in tre diversi progetti. Non ricordo esattamente quando, ma lo hanno risolto un po 'di tempo fa (probabilmente quando hanno aggiunto il supporto di libreria-libreria ad ADT). Il motivo per cui non funzionava prima era che il builder ADT non riconosceva il file AIDL e non generava gli stub Java necessari.

+0

Grazie! Si scopre che un'altra limitazione è stata recentemente rimossa: [Generare un progetto di libreria nel proprio file JAR] (http://developer.android.com/guide/developing/projects/index.html#LibraryProjects). Si noti che la documentazione sulla stessa pagina si contraddice, ma ho appena testato questa nuova funzione e si può generare un JAR da un progetto di libreria ** indipendentemente **, senza dipendere da un progetto di applicazione. –

+2

Sì, è possibile generare un JAR. Tuttavia, il jar non contiene alcuna risorsa, quindi se nel progetto della libreria sono presenti layout, stringhe e così via, non è possibile rilasciare il jar nel progetto dell'app. Seguire direttamente il sito ADT per le informazioni più aggiornate, a volte la documentazione è obsoleta. https://sites.google.com/a/android.com/tools/recent/ –

+0

Un altro +1 per il link a https://sites.google.com/a/android.com/tools/recent/ - I non sapevo di quella pagina. Questo è molto utile. Grazie! –