Помилка Admob у Eclipse для android: configChanges


131

Eclipse видає мені помилку в рядку android: configChanges в моєму AndroidManifest.xml:

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

помилка:

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

Якщо я залишаю лише keyboard|keyboardHidden|orientationпомилки немає, але компілятор запитує 4 решти, коли я намагаюся скласти.

Я використовую GoogleAdMobAdsSDK-4.3.1.

Будь-які ідеї?

EDIT: У мене це працює, змінивши мій файл project.properties ( default.properties на SDK нижче 14) на:

# Project target.
target=android-14

і в моєму SDK Manager , що має SDK Platform Android 4.0 - Revision 14 встановлений.

Він також повинен працювати для платформи SDK для android 3.2 - версія 13 , тому вам просто потрібно змінити націлену projekt.properties на android-13, якщо це так. В основному ви просто повинні переконатися, що версія SDK дорівнює 13 або вище, і що у вас встановлений SDK в диспетчері SDK, а ціль проекту за замовчуванням / project.properties, що вказує на нього.


яку версію Android ви використовуєте?
HefferWolf

Мінімум SDK версія 7 - Android 2.1
Марк Камерон

Я спробував змінити ціль на 13, але це не працює .. що може бути причиною?
Аніруд

@anirudhmaddy ви використовували "android: configChanges =" клавіатура | клавіатура прихована | орієнтація | screenLayout | uiMode | screenSize | najmanjiScreenSize "чи менша? Якщо ви зміните ціль вище 13 і використовуєте довший configChanges один, він повинен працювати.
Gürcan Kavakçı

@ gurcan15 yup працює зараз.
Аніруд

Відповіді:


74

Проста відповідь: згадані зміни конфігурації не підтримуються в Android 2.1, дивіться тут:

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

наприклад, uiMode потребує API рівня 8.

З офіційної документації AdMob:

Вимоги

Пакет SDK для реклами Google AdMob для Android вимагає Android 1.5 або новішої версії. Переконайтеся, що у вас є остання копія пакета SDK для Android, і ви компілюєте принаймні Android v3.2 (встановіть ціль у програмі default.properties для android-13).

подивіться тут: https://developers.google.com/admob/android/quick-start

Тому я думаю, що версія ваших інструментів не оновлюється принаймні до версії 13.


Я змінив <uses-sdk android:minSdkVersion="7"/>версію 8, 9, 10, 11, 12 ... все ще є помилка ... також спробував видалити рядок, і вона все ще видає мені помилку.
Марк Камерон

9
screenSize та najmanjiScreenSize підтримуються лише в API рівня 13, що означає Honeycomb, ви впевнені, що вони вам потрібні? Оскільки вони досить специфічні для соти.
HefferWolf

1
Добре, якщо я їх не декларую, я отримую це в 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.І там, де призначена реклама, я отримую чорну скриньку з останнім повідомленням про помилку, написаним червоним кольором.
Марк Камерон

1
До моєї відповіді вище я додав досить важливу примітку від SDK.
HefferWolf

Гаразд, моя ціль default.properties - android-7, я змінюю 13, і він говорить Unable to resolve target 'android-13'. У мене в Менеджері SDK встановлено "Інструменти Android SDK, версія 13" ...
Марк Камерон,

86

Просте рішення: (і НІ вам не потрібно змінювати значення min-sdk !!)

Крок 1: Змініть файл "project.properties"

# Project target.
target=android-13

Крок 2: У затемненні

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

Для повного пояснення з реальним прикладом використовуйте цей підручник http://www.monkeycoder.co.nz/Community/posts.php?topic=1121

Ура!


1
Відмінно! Я теж використовував sdk7, хоча версію goigle api. Тому я використав # ціль проекту. target = Google Inc.: API Google: 13 у моєму файлі властивостей.
працював

18

Для тих, хто використовує Eclipse, є більш простий спосіб: Клацніть правою кнопкою миші папку проекту в лівій панелі «Провідник пакунків» і натисніть Властивості -> Android -> і в списку «Ціль побудови проекту» виберіть API 13 або вище.

Примітка. Це такий же ефект, як і редагування project.properties яке автоматично створюється автоматично.

Це створить ваш проект на основі Android 3.2 SDK, який включає умови, які раніше не було визнано.

Ви можете залишити своє android:minSdkVersionіtargetSdkVersion значення однаковими у вашому Manifest.xml.

Але будьте попереджені , якщо ви не встановите targetSdkVersionAPI 12 або нижче (або взагалі не встановите його), система Android вважатиме, що android:configChangesзначення screenSizeта smallestScreenSize(які були введені в API 13) враховуються, і таким чином будуть дозволено знищити-перезапустити вашу діяльність. Якщо ви хотіли цього уникнути, ви повинні включити ці терміни у свої інші <activity>теги (які, мабуть, мали keyboard|keyboardHidden|orientationлише дотепер).

Однак якщо ваша програма націлена на рівень API 12 або нижчий, ваша діяльність завжди обробляє цю зміну конфігурації (ця зміна конфігурації не перезапускає вашу активність, навіть коли ви працюєте на пристрої Android 3.2 або новішої версії).

Цитата звідси .


3

У мене була така ж проблема, тому я прийшов сюди.
Я завантажив зразок коду з https://developers.google.com/admob/android/quick-start , у мене все ще була проблема зі всіма відповідями вище, тому я використовував той самий SDK admob, який вони пропонують у зразковому проекті. Повторіть річ для складання банок, змінив ціль android-15і використовував той самий рядок, який вони використовують:

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

І це працює!


Я думаю, що це шлях. Тому що для мене, оскільки Asynctasks відірвані від API будь-що далі (вони тепер використовують послідовний виконавець замість паралельного, тому що у них були "проблеми" з паралельним), я скоріше використовую стару ціль, ніж змінювати вручну Виконавець за замовчуванням ...
Раду

0

Ти користувався android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|‌​screenSize|smallestScreenSize

чи коротший? Якщо ви зміните ціль вище 13 і використовуєте довший configChanges (який я написав), він повинен працювати.



-4

Усі нові додатки для Android, створені після 14 жовтня 2011 року, потребуватимуть SDK AdMob, який вийшов 15 березня 2011 року або пізніше. Це відповідає версії 4.0.2+ для Android. Якщо ви завантажили бібліотеку з нашого офіційного сайту завантажень, тоді ви вже налаштовані. В іншому випадку у вас може бути стара версія версії SDK AdMob, яка вийшла до 15 березня 2011 року, і ваш новий додаток не отримає показів оголошень, поки ви не оновите пакет SDK.


Ви просто копіюєте вклеєні речі з Інтернету, не розуміючи цього. Це не має відношення до фактичної проблеми.
Торбен
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.