Kesalahan Admob di Eclipse untuk android: configChanges

131

Eclipse memberi saya kesalahan di baris android: configChanges di AndroidManifest.xml saya:

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

kesalahannya adalah:

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

Jika saya hanya meninggalkan keyboard|keyboardHidden|orientationtidak ada kesalahan, tetapi kompiler meminta 4 yang tersisa ketika saya mencoba dan membangun.

Saya menggunakan GoogleAdMobAdsSDK-4.3.1.

Ada ide?

EDIT: Saya membuatnya bekerja dengan mengubah project.properties saya ( default.properties pada SDK yang lebih rendah dari 14) file ke:

# Project target.
target=android-14

dan di SDK Manager saya memiliki SDK Platform Android 4.0 - Revisi 14 diinstal.

Ini juga harus bekerja untuk SDK Platform android 3.2 - revisi 13 , jadi Anda hanya perlu mengubah target project.properties menjadi android-13 jika itu masalahnya. Pada dasarnya Anda hanya perlu memastikan bahwa revisi SDK adalah 13 atau di atas, dan bahwa Anda memiliki SDK yang diinstal pada manajer SDK dan target proyek secara default / project.properti menunjuk ke sana.

Mark Cameron
sumber
versi android mana yang Anda gunakan?
HefferWolf
Min SDK versi 7 - Android 2.1
Mark Cameron
Saya mencoba mengubah target menjadi 13, tetapi tidak berhasil .. apa yang bisa menjadi alasannya?
Anirudh
@anirudhmaddy apakah Anda menggunakan "android: configChanges =" keyboard | keyboardHidden | orientasi | screenLayout | uiMode | screenSize | smallestScreenSize "atau lebih pendek? Jika Anda mengubah target di atas 13 dan menggunakan konfigurasi yang lebih panjang, itu harus bekerja.
Gürcan Kavakçı
@ gurcan15 ya itu berfungsi sekarang.
Anirudh

Jawaban:

74

Jawaban sederhana: perubahan konfigurasi yang disebutkan tidak mendukung di Android 2.1, lihat di sini:

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

mis. uiMode membutuhkan API Level 8.

Dari Dokumentasi AdMob resmi:

Persyaratan

Google AdMob Ads SDK untuk Android membutuhkan Android 1.5 atau lebih baru. Pastikan Anda memiliki salinan Android SDK terbaru dan Anda mengkompilasi terhadap setidaknya Android v3.2 (tetapkan target di default.properties ke android-13).

lihat di sini: https://developers.google.com/admob/android/quick-start

Jadi saya pikir versi alat Anda tidak diperbarui ke setidaknya Versi 13.

HefferWolf
sumber
Saya mengubah <uses-sdk android:minSdkVersion="7"/>ke versi 8, 9, 10, 11, 12 ... masih memiliki kesalahan ... juga mencoba menghapus garis dan masih memberi saya kesalahan.
Mark Cameron
9
screenSize dan smallestScreenSize hanya didukung di API Level 13, yang berarti Honeycomb, apakah Anda yakin Anda membutuhkannya? Karena mereka sangat spesifik Honeycomb.
HefferWolf
1
Nah jika saya tidak mendeklarasikannya, saya mendapatkan ini di 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.Dan di mana iklan itu dimaksudkan, saya mendapatkan kotak hitam dengan pesan kesalahan terakhir yang ditulis dengan warna merah di dalamnya.
Mark Cameron
1
Saya telah menambahkan catatan yang cukup penting dari SDK untuk tanggapan saya di atas.
HefferWolf
Oke target default.properties saya adalah android-7, saya ubah ke 13, dan katanya Unable to resolve target 'android-13'. Saya memiliki "Android SDK Tools, revisi 13" yang terpasang di manajer SDK saya ...
Mark Cameron
86

Solusi mudah: (dan TIDAK Anda tidak perlu mengubah nilai min-sdk !!)

Langkah 1: Ubah file "project.properties"

# Project target.
target=android-13

Langkah 2: Di Eclipse

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

Untuk penjelasan lengkap dengan contoh nyata, gunakan tutorial ini http://www.monkeycoder.co.nz/Community/posts.php?topic=1121

Bersulang !

Dax
sumber
1
Luar biasa! Saya juga menggunakan sdk7 meskipun versi google api. Jadi saya menggunakan target # Proyek. target = Google Inc.:Google APIs: 13 di file properti saya.
bekerja
18

Bagi mereka yang menggunakan Eclipse ada cara yang lebih mudah: Klik kanan folder proyek Anda di sebelah kiri "Package Explorer" dan klik Properties -> Android -> dan di daftar "Project Build Target" centang API 13 atau lebih tinggi.

Catatan: ini adalah efek yang sama dengan pengeditan project.propertiesyang dibuat secara otomatis.

Ini akan membangun proyek Anda terhadap Android 3.2 SDK yang mencakup persyaratan yang sebelumnya tidak dikenali.

Anda dapat membiarkan android:minSdkVersiondan targetSdkVersionmenghargai nilai yang sama di Manifest.xml Anda.

Berhati-hatilah , jika Anda tidak menyetel targetSdkVersionke API 12 atau lebih rendah (atau tidak menyetelnya sama sekali) sistem Android akan menganggap bahwa android:configChangesnilai - nilai screenSizedan smallestScreenSize(yang diperkenalkan dalam API 13) diperhitungkan dan dengan demikian akan menjadi diizinkan untuk menghancurkan-memulai kembali aktivitas Anda. Jika Anda ingin menghindari ini, Anda harus memasukkan istilah-istilah itu dalam <activity>tag Anda yang lain (yang mungkin hanya dimiliki keyboard|keyboardHidden|orientationsampai sekarang).

Namun, jika aplikasi Anda menargetkan API level 12 atau lebih rendah, maka aktivitas Anda selalu menangani perubahan konfigurasi itu sendiri (perubahan konfigurasi ini tidak memulai kembali aktivitas Anda, bahkan ketika berjalan pada perangkat Android 3.2 atau lebih tinggi).

Kutipan dari sini .

Tony Chan
sumber
3

Saya memiliki masalah yang sama jadi saya datang ke sini.
Saya telah mengunduh kode sampel dari https://developers.google.com/admob/android/quick-start , saya masih memiliki masalah dengan semua jawaban di atas sehingga saya menggunakan sdk admob yang sama, yang mereka tawarkan di proyek sampel. Ulangi pembuatan toples, ubah target menjadi android-15, dan gunakan baris yang sama yang mereka gunakan:

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

Dan itu berhasil!

Ahmad Dwaik 'Warlock'
sumber
Saya pikir itulah cara untuk pergi. Karena, bagi saya, karena Asynctasks dipecah dari API apa pun dan seterusnya (mereka menggunakan sekarang pelaksana berurutan daripada yang paralel karena mereka memiliki 'masalah' dengan yang paralel), saya lebih suka menggunakan target lama daripada harus memodifikasi dengan tangan. eksekutor default ...
Radu
0

Apakah kamu menggunakan android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|‌​screenSize|smallestScreenSize

atau lebih pendek? Jika Anda mengubah target Anda di atas 13 dan menggunakan konfigurasi yang lebih lama (yang saya tulis), itu akan berhasil.

Gürcan Kavakçı
sumber
0

Solusi mudah: Ubah file "project.properties" menjadi 21

# Project target.
target=android-21
Kata Erraoudy
sumber
-4

Semua aplikasi Android baru yang dibuat setelah 14 Oktober 2011 akan memerlukan AdMob SDK yang dirilis pada atau setelah 15 Maret 2011. Ini sesuai dengan versi 4.0.2+ untuk Android. Jika Anda mengunduh perpustakaan dari situs unduhan resmi kami, maka Anda sudah siap. Kalau tidak, Anda mungkin memiliki versi lama AdMob SDK yang dirilis sebelum 15 Maret 2011, dan aplikasi baru Anda tidak akan menerima tayangan iklan apa pun hingga Anda memperbarui SDK Anda.

Sando
sumber
Anda hanya menyalin-menempelkan hal-hal dari internet tanpa memahaminya. Ini tidak memiliki relevansi dengan masalah aktual.
Torben