Errore Admob in Eclipse per Android: configChanges


131

Eclipse mi sta dando un errore sulla linea android: configChanges nel mio AndroidManifest.xml:

<activity android:name="com.google.ads.AdActivity"
              android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"></activity>

l'errore è:

error: Error: String types not allowed (at 'configChanges' with value 'keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize').

Se lascio solo keyboard|keyboardHidden|orientationnon c'è errore, ma il compilatore chiede i 4 rimanenti quando provo a compilare.

Sto usando GoogleAdMobAdsSDK-4.3.1.

Qualche idea?

EDIT: L' ho fatto funzionare cambiando il mio file project.properties ( default.properties su SDK inferiore a 14) in:

# Project target.
target=android-14

e nel mio SDK Manager con la piattaforma SDK Android 4.0 - Revisione 14 installata.

Dovrebbe funzionare anche per la piattaforma SDK android 3.2 - revisione 13 , quindi devi solo cambiare il target project.properties in android-13, se è così. Fondamentalmente devi solo assicurarti che la revisione dell'SDK sia 13 o superiore e che l'SDK sia installato nel gestore dell'SDK e la destinazione del progetto in default / project.properties che punti ad esso.


quale versione di Android usi?
Heffer Wolf,

Min SDK versione 7 - Android 2.1
Mark Cameron,

Ho provato a cambiare l'obiettivo su 13, ma non funziona .. quale potrebbe essere il motivo?
Anirudh,

@anirudhmaddy hai usato "android: configChanges =" keyboard | keyboardHidden | orientamento | screenLayout | uiMode | screenSize | smallestScreenSize "o uno più corto? Se cambi il tuo target sopra 13 e usi un configChanges più lungo, dovrebbe funzionare.
Gürcan Kavakçı

@ gurcan15 yup funziona ora.
Anirudh,

Risposte:


74

Risposta semplice: le citate modifiche alla configurazione non sono supportate in Android 2.1, dai un'occhiata qui:

http://developer.android.com/guide/topics/manifest/activity-element.html#config

ad es. uiMode richiede API Level 8.

Dalla documentazione ufficiale di AdMob:

Requisiti

L'SDK per gli annunci di Google AdMob per Android richiede Android 1.5 o successivo. Assicurati di disporre dell'ultima copia dell'SDK Android e di compilare almeno Android v3.2 (imposta target in default.properties su android-13).

dai un'occhiata qui: https://developers.google.com/admob/android/quick-start

Quindi penso che la versione dei tuoi strumenti non sia aggiornata almeno alla versione 13.


Ho cambiato <uses-sdk android:minSdkVersion="7"/>alla versione 8, 9, 10, 11, 12 ... ho ancora l'errore ... ho anche provato a rimuovere la linea e mi dà ancora l'errore.
Mark Cameron,

9
screenSize e smallestScreenSize sono supportati solo in API Level 13, che significa Honeycomb, sei sicuro di averne bisogno? Poiché sono abbastanza specifici a nido d'ape.
Heffer Wolf,

1
Bene, se non li dichiaro, ottengo questo in LogCat: The android:configChanges value of the com.google.ads.AdActivity must include screenLayout. The android:configChanges value of the com.google.ads.AdActivity must include uiMode. The android:configChanges value of the com.google.ads.AdActivity must include screenSize. The android:configChanges value of the com.google.ads.AdActivity must include smallestScreenSize. You must have AdActivity declared in AndroidManifest.xml with configChanges.E dove si intende l'annuncio, ottengo una scatola nera con l'ultimo messaggio di errore scritto in rosso.
Mark Cameron,

1
Ho aggiunto una nota abbastanza importante dall'SDK alla mia risposta sopra.
Heffer Wolf,

Ok, il mio target default.properties è android-7, cambio a 13 e dice Unable to resolve target 'android-13'. Ho "Android SDK Tools, revisione 13" installato nel mio gestore SDK però ...
Mark Cameron,

86

Soluzione semplice: (e NO, non è necessario modificare il valore min-sdk !!)

Passaggio 1: modifica il file "project.properties"

# Project target.
target=android-13

Passaggio 2: in Eclipse

Project > Clean... > (select your project) > Clean projects selected below > OK

Per una spiegazione completa con un esempio reale, usa questo tutorial http://www.monkeycoder.co.nz/Community/posts.php?topic=1121

Saluti !


1
Eccellente! Anch'io stavo usando SDK7 anche se la versione di Google API. Quindi ho usato # Progetto target. target = Google Inc.: API di Google: 13 nel mio file delle proprietà.
funzionato il

18

Per coloro che usano Eclipse c'è un modo più semplice: fare clic con il tasto destro del mouse sulla cartella del progetto nel riquadro "Esplora pacchetti" a sinistra e fare clic su Proprietà -> Android -> e nell'elenco "Destinazione build progetto" selezionare API 13 o versioni successive.

Nota: questo è lo stesso effetto della modifica project.propertiesche viene comunque generata automaticamente.

Questo costruirà il tuo progetto contro l'SDK di Android 3.2 che include i termini precedentemente non riconosciuti.

Puoi lasciare il tuo android:minSdkVersione targetSdkVersionvalori uguali nel tuo Manifest.xml.

Tuttavia , se non si imposta targetSdkVersionAPI 12 o versioni precedenti (o non le si imposta affatto), il sistema Android supporrà che i android:configChangesvalori screenSizee smallestScreenSize(che sono stati introdotti in API 13) siano contabilizzati e quindi saranno autorizzato a distruggere-riavviare la tua attività. Se si desidera evitare ciò, è necessario includere tali termini negli altri <activity>tag (che probabilmente avevano solo keyboard|keyboardHidden|orientationfino ad ora).

Tuttavia, se l'applicazione ha come target API livello 12 o inferiore, la tua attività gestisce sempre questa modifica della configurazione stessa (questa modifica della configurazione non riavvia la tua attività, anche quando è in esecuzione su un dispositivo Android 3.2 o versione successiva).

La citazione è da qui .


3

Ho avuto lo stesso problema, quindi sono venuto qui.
Ho scaricato il codice di esempio da https://developers.google.com/admob/android/quick-start , ho ancora avuto il problema con tutte le risposte sopra quindi ho usato lo stesso admob sdk, che offrono nel progetto di esempio. Ripeti l'oggetto build jars, cambia target in android-15e usa la stessa linea che usano:

<activity android:name="com.google.ads.AdActivity" 
              android:configChanges="keyboard|keyboardHidden|orientation"/>

E funziona!


Penso che sia la strada da percorrere. Perché, per quanto mi riguarda, poiché gli Asynctask sono rotti dall'API in qualsiasi momento (usano ora un esecutore sequenziale anziché uno parallelo perché avevano "problemi" con quello parallelo), preferisco usare un vecchio obiettivo piuttosto che dover modificare manualmente il esecutore predefinito ...
Radu,

0

Hai usato android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|‌​screenSize|smallestScreenSize

o più breve? Se cambi il tuo obiettivo sopra 13 e usi più ConfigChanges uno (che ho scritto), dovrebbe funzionare.


0

Soluzione semplice: modificare il file "project.properties" in 21

# Project target.
target=android-21

-4

Tutte le nuove app Android create dopo il 14 ottobre 2011 richiederanno un SDK AdMob rilasciato il 15 marzo 2011 o successivamente. Ciò corrisponde alla versione 4.0.2+ per Android. Se hai scaricato la libreria dal nostro sito di download ufficiale, sei già pronto. Altrimenti potresti avere una vecchia versione dell'SDK di AdMob rilasciata prima del 15 marzo 2011 e la tua nuova app non riceverà alcuna impressione dell'annuncio fino a quando non aggiorni l'SDK.


Hai appena copiato e incollato roba dalla rete dell'Inter senza capirla. Questo non ha rilevanza per il problema reale.
Torben,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.