Android için Eclipse'de Admob Hatası: configChanges


131

Eclipse, AndroidManifest.xml dosyamdaki android: configChanges satırında bana bir hata veriyor:

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

hata şudur:

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

Sadece bırakırsam keyboard|keyboardHidden|orientationhata olmaz, ancak derleyici denediğimde ve oluşturduğumda kalan 4 tanesini sorar.

Kullanıyorum GoogleAdMobAdsSDK-4.3.1.

Herhangi bir fikir?

DÜZENLEME: Bunun benim değiştirerek çalışma var project.properties ( default.properties dosyanın SDK'nın alt ardından 14):

# Project target.
target=android-14

ve SDK Platformu Android 4.0 - Revizyon 14'ün kurulu olduğu SDK Yöneticimde .

Aynı zamanda SDK Platformu android 3.2 - revizyon 13 için de çalışmalıdır , bu nedenle proje.properties hedefini android-13 olarak değiştirmeniz gerekir . Temel olarak, SDK revizyonunun 13 veya üstü olduğundan ve SDK yöneticisine SDK'nın kurulu olduğundan ve buna işaret eden default / project.properties içindeki proje hedefine sahip olduğunuzdan emin olmanız gerekir.


hangi android sürümünü kullanıyorsunuz?
HefferWolf

Min SDK sürüm 7 - Android 2.1
Mark Cameron

Hedefi 13 olarak değiştirmeyi denedim ama işe yaramıyor .. Nedeni ne olabilir?
Anirudh

@anirudhmaddy "android: configChanges =" keyboard | keyboardHidden | orientation | screenLayout | uiMode | screenSize | smallestScreenSize "veya daha kısa olanı mı kullandınız? Hedefinizi 13'ün üzerinde değiştirirseniz ve daha uzun configChanges birini kullanırsanız işe yaramalı.
Gürcan Kavakçı

@ gurcan15 evet şimdi çalışıyor.
Anirudh

Yanıtlar:


74

Basit cevap: Bahsedilen yapılandırma değişiklikleri Android 2.1'de desteklenmemektedir, buraya bir göz atın:

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

Örneğin uiMode, API Seviye 8'e ihtiyaç duyar.

Resmi AdMob Belgelerinden:

Gereksinimler

Android için Google AdMob Ads SDK'sı, Android 1.5 veya sonraki sürümünü gerektirir. Android SDK'nın en son kopyasına sahip olduğunuzdan ve en azından Android v3.2'ye göre derlediğinizden emin olun (default.properties içinde android-13 olarak hedef ayarlayın).

buraya bir göz atın: https://developers.google.com/admob/android/quick-start

Bu yüzden araç sürümünüzün en az Sürüm 13'e güncellenmediğini düşünüyorum.


<uses-sdk android:minSdkVersion="7"/>Sürüm 8, 9, 10, 11, 12'ye geçtim ... hala hatam var ... ayrıca satırı kaldırmayı denedim ve hala bana hata veriyor.
Mark Cameron

9
screenSize ve smallestScreenSize yalnızca API Level 13'te desteklenmektedir, bu da Honeycomb anlamına gelir, onlara ihtiyacınız olduğundan emin misiniz? Honeycomb'a özgü olduklarından.
HefferWolf

1
Eğer onları beyan etmezsem, bunu LogCat'te alıyorum: 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.Ve reklamın olması gerektiği yerde, içinde kırmızı ile yazılmış son hata mesajının bulunduğu bir kara kutu alıyorum.
Mark Cameron

1
Yukarıdaki cevabıma SDK'dan oldukça önemli bir not ekledim.
HefferWolf

Tamam default.properties hedefim android-7, 13 olarak değiştiriyorum ve diyor Unable to resolve target 'android-13'. Yine de SDK yöneticimde "Android SDK Araçları, revizyon 13" yüklü ...
Mark Cameron

86

Kolay çözüm: (HAYIR, min-sdk değerini değiştirmenize gerek yoktur !!)

1. Adım: "project.properties" dosyasını değiştirin

# Project target.
target=android-13

2. Adım: Tutulmada

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

Gerçek örnekle eksiksiz bir açıklama için bu öğreticiyi kullanın http://www.monkeycoder.co.nz/Community/posts.php?topic=1121

Şerefe!


1
Mükemmel! Ben de google api sürümü olsa da sdk7 kullanıyordum. Bu yüzden # Proje hedefi kullandım. target = Google Inc.:Google API'leri: özellikler dosyamda 13.
çalıştı

18

Eclipse kullananlar için daha kolay bir yol var: Soldaki "Paket Gezgini" bölmesinde proje klasörünüzü sağ tıklayın ve Özellikler -> Android -> ve "Proje Oluşturma Hedefi" listesinde API 13 veya üstünü işaretleyin.

Not: Bu, project.propertiesyine de otomatik olarak oluşturulan düzenlemeyle aynı etkidir .

Bu, projenizi daha önce tanınmayan terimleri içeren Android 3.2 SDK'ya göre oluşturacaktır.

Manifest.xml dosyanızda android:minSdkVersionve targetSdkVersiondeğerlerinizi aynı bırakabilirsiniz .

Yine de , targetSdkVersionAPI 12 veya daha düşük bir android:configChangesdeğere ayarlamazsanız (veya hiç ayarlamazsanız), Android sistemi değerlerin screenSizeve smallestScreenSize(API 13'te sunulan) hesaba katılacağını varsayar ve bu nedenle aktivitenizi yok etme-yeniden başlatma izni. Bundan kaçınmak istiyorsanız, bu terimleri diğer <activity>etiketlerinize eklemelisiniz (muhtemelen şimdiye keyboard|keyboardHidden|orientationkadar vardı ).

Bununla birlikte, uygulamanız API düzeyi 12 veya altını hedefliyorsa, etkinliğiniz her zaman bu yapılandırma değişikliğini kendisi ele alır (bu yapılandırma değişikliği, Android 3.2 veya daha yüksek bir cihazda çalışırken bile etkinliğinizi yeniden başlatmaz).

Alıntı buradan .


3

Ben de aynı sorunu yaşadım, bu yüzden buraya geldim.
Örnek kodu https://developers.google.com/admob/android/quick-start adresinden indirdim, yine de yukarıdaki tüm yanıtlarla ilgili sorun yaşadım, bu yüzden örnek projede sundukları aynı admob sdk'yi kullandım. Build jars olayını yeniden yapın, hedefi olarak değiştirdi android-15ve kullandıkları aynı satırı kullandı:

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

Ve çalışıyor!


Sanırım gitmenin yolu bu. Çünkü benim için, Asynctasks API'den itibaren her ne olursa olsun kırıldığından (şimdi paralel olanla 'sorunları' olduğu için paralel yerine sıralı bir yürütücü kullanıyorlar), eski bir hedefi elle değiştirmek yerine eski bir hedefi kullanmayı tercih ediyorum. varsayılan uygulayıcı ...
Radu

0

Kullandın mı android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|‌​screenSize|smallestScreenSize

veya daha kısa mı? Hedefinizi 13'ün üzerinde değiştirirseniz ve daha uzun configChanges kullanırsanız (yazdığım), işe yaramalı.


0

Kolay çözüm: "project.properties" dosyasını 21 olarak değiştirin

# Project target.
target=android-21

-4

14 Ekim 2011'den sonra oluşturulan tüm yeni Android uygulamaları, 15 Mart 2011 tarihinde veya sonrasında piyasaya sürülen bir AdMob SDK'sı gerektirecektir. Bu, Android için 4.0.2+ sürümüne karşılık gelir. Kitaplığı resmi indirme sitemizden indirdiyseniz, zaten hazırsınız demektir. Aksi takdirde, 15 Mart 2011'den önce yayınlanan eski bir AdMob SDK sürümüne sahip olabilirsiniz ve yeni uygulamanız, SDK'nızı güncelleyene kadar herhangi bir reklam gösterimi almayacaktır.


Inter ağındaki şeyleri anlamadan kopyalayıp yapıştırdınız. Bunun gerçek sorunla hiçbir ilgisi yoktur.
Torben
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.