2013-08-13 9 views
13

Sto provando a ottenere un progetto Android (ereditato) da compilare. Sto usando Ant & command line tools (e IDEA).Come definire correttamente la dipendenza dell'app-app v7?

In styles.xml, ci sono riferimenti che non possono essere risolti come ad esempio:

<style name="AppBaseTheme" parent="@style/Theme.AppCompat.Light"> 

Questo è l'errore originale mi sono imbattuto in:

[...]/res/values/styles.xml:8: error: Error retrieving parent for item: 
No resource found that matches the given name '@style/Theme.AppCompat.Light'. 

Ho poi notato che project.properties ha questa appcompat riferimento che è rotto sulla mia macchina (OS X):

target=android-18 
android.library.reference.1=../../../../adt-bundle-linux-x86_64/sdk/extras/android/support/v7/appcompat 

Ho provato a rimediare facendo il riferimento relativo alla ${sdk.dir}:

android.library.reference.1=${sdk.dir}/extras/android/support/v7/appcompat 

Quindi, ora che il percorso dovrebbe essere corretto. Ma ora quando corro ant debug:

BUILD FAILED 
/opt/android-sdk-macosx/tools/ant/build.xml:573: 
    /opt/android-sdk-macosx/extras/android/support/v7/appcompat resolve to a 
    path with no project.properties file for project /Users/joka/devel/project/ 

Quindi, tutte le idee? Qual è il modo più semplice per realizzare questo progetto?

(Si prega di notare che la consulenza Ecplise-specifica non sarà utile a me.)

Edit: L'installazione SDK di Android si presenta così:

enter image description here

+1

Avete il pacchetto di supporto in '/ opt/android-sdk-MacOSX/extras/android/supporto/'? – Rajesh

+0

@Rajesh: Sì, lo so. E più precisamente '/ opt/android-sdk-macosx/extras/android/support/v7/appcompat /' sembra essere installato bene. – Jonik

risposta

6

Ho incontrato lo stesso problema, così ho provato ad utilizzare un percorso relativo e questo ha risolto il problema per me. Sembra che solo i percorsi relativi funzionino con android.library.reference. Ho fatto una rapida ricerca per verificarlo e ho trovato this stackoverflow link che indica che i percorsi assoluti funzioneranno con android.library.reference su Windows, ma non su Unix o Mac.

Pace.

+0

Ah, davvero. Ho funzionato con 'android.library.reference.1 = ../../../../../../../opt/android-sdk-macosx/extras/android/support/v7/appcompat' Funziona anche in 'local.properties', che ritengo sia un posto migliore in quanto lo stesso percorso non funzionerà per tutti gli sviluppatori. – Jonik

+9

(Inoltre, per far funzionare la build Ant, avevo bisogno di [generare build.xml] (http://stackoverflow.com/a/15718940/56285) per il progetto appcompat, usando '/ opt/android-sdk-macosx/tools/progetto di aggiornamento android -p/opt/android-sdk-macosx-r22.0.1/extras/android/support/v7/appcompat'.) – Jonik

+0

Ho messo un link simbolico nel mio progetto dir 'root => /' e poi Posso avere percorsi assoluti percorsi relativi :) – singpolyma

0

tuo percorso sembra essere sbagliato (ti manca la parte 'compatibilità'). La biblioteca v7-appcompat è a

{sdkpath}/extras/android/compatibility/v7/appcompat 

per me (SDK Tools versione 22.0.5 su Max OS X 10.7.5)

+1

Hmm, per me, '{sdkpath}/extras/android' contiene solo sottodirectory' support' e 'm2repository'. (E '{sdkpath}/extras/android/support/v7/appcompat' sembra essere esattamente quello di cui ho bisogno.) Se mi manca qualche parte dell'SDK, come dovrei installarlo esattamente? Sto anche utilizzando Android SDK Tools 22.0.5. – Jonik

+0

Hai installato la versione corrente delle librerie di supporto? (Siamo alla versione 18 al momento di questo commento) Puoi controllare eseguendo la GUI del gestore di aggiornamento SDK (esegui il programma 'android' nella sottodirectory tools.) La libreria di supporto è per me quasi in fondo alla lista . – Patrick

+0

Sì, [secondo Android SDK Manager] (http://i.stack.imgur.com/adUuX.png) Ho Android Support Library, rev 18 installato. – Jonik

9

As Jay indicated, solo relativi percorsi funzioneranno su Unix/Mac.

Per l'Ant al lavoro, ho anche bisogno di generate build.xmlper il progetto appcompat, utilizzando il comando android update project -p <dir>, nel mio caso:

/opt/android-sdk-macosx/tools/android update project 
    -p /opt/android-sdk-macosx-r22.0.1/extras/android/support/v7/appcompat 

La configurazione esatta per me è stato:

android.library.reference.1=../../../../../../../opt/android-sdk-macosx/extras/‌​android/support/v7/appcompat

(Questo funziona anche in local.properties, che ritengo sia un posto migliore poiché lo stesso percorso non funzionerà per tutti gli sviluppatori.)


Ho semplicemente promosso miei comment da 6 mesi fa in una risposta, come qualcuno ha suggerito.

A proposito, ora che so qualcosa sullo sviluppo di Android, inviterò chiunque abbia la possibilità di abbandonare Ant e guardare nello new Gradle-based build system che è totalmente dolce in comprarison. È compatibile con CI e semplifica l'automatizzazione di cose utili (come l'utilizzo di un nome di pacchetto e di un'icona di app diversi per diversi tipi di build). Stack Overflow will help quando si verificano problemi.

Utilizzando le librerie di supporto con Gradle, devi saltare tutti i problemi di cui sopra e simply do:

dependencies { 
    compile "com.android.support:appcompat-v7:18.0.+" 
} 
+0

Ho anche dovuto cambiare target = android-19 a target = android-21 in /opt/android-sdk-macosx-r22.0.1/extras/android/support/v7/appcompat/project.properties come descritto da http://stackoverflow.com/questions/26457096/appcompat-v7-r21-returning-error-in-values-xml –

Problemi correlati