Admob Error ใน 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.

ความคิดใด ๆ ?

แก้ไข:ฉันทำให้มันใช้งานได้โดยเปลี่ยนไฟล์project.properties ( default.propertiesใน SDK ที่ต่ำกว่า 14) เป็นไฟล์:

# Project target.
target=android-14

และในSDK ManagerของฉันมีSDK Platform Android 4.0 - Revision 14ติดตั้งอยู่

มันควรจะใช้ได้กับSDK Platform android 3.2 - revision 13ดังนั้นคุณเพียงแค่ต้องเปลี่ยนเป้าหมาย project.properties เป็นandroid-13หากเป็นเช่นนั้น โดยทั่วไปคุณต้องตรวจสอบให้แน่ใจว่าการแก้ไข SDK เป็น 13 ขึ้นไปและคุณได้ติดตั้ง SDK นั้นในตัวจัดการ SDK และเป้าหมายโครงการในค่าเริ่มต้น / project.properties ที่ชี้ไปที่มัน


คุณใช้ Android เวอร์ชันใด
HefferWolf

Min SDK เวอร์ชัน 7 - Android 2.1
Mark Cameron

ผมลองเปลี่ยนเป้าหมายเป็น 13 แล้ว แต่มันใช้ไม่ได้ .. สาเหตุเกิดจากอะไร?
Anirudh

@anirudhmaddy คุณใช้ "android: configChanges =" keyboard | keyboardHidden | orientation | screenLayout | uiMode | screenSize | maximumScreenSize "หรือสั้นกว่านี้หรือไม่หากคุณเปลี่ยนเป้าหมายที่สูงกว่า 13 และใช้ configChanges ที่ยาวกว่าก็น่าจะใช้ได้
GürcanKavakçı

@ gurcan15 ใช่มันใช้งานได้แล้ว
Anirudh

คำตอบ:


74

คำตอบง่ายๆ: การเปลี่ยนแปลงการกำหนดค่าดังกล่าวไม่รองรับใน Android 2.1 ดูที่นี่:

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

เช่น uiMode ต้องการ API ระดับ 8

จากเอกสาร AdMob อย่างเป็นทางการ:

ความต้องการ

Google AdMob Ads SDK สำหรับ Android ต้องใช้ Android 1.5 ขึ้นไป ตรวจสอบให้แน่ใจว่าคุณมี Android SDK เวอร์ชันล่าสุดและคุณกำลังคอมไพล์กับ 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 ... ยังคงมีข้อผิดพลาด ... ลองลบบรรทัดออกและยังคงให้ข้อผิดพลาด
Mark Cameron

9
screenSize และ smallScreenSize รองรับเฉพาะใน 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.และที่ที่โฆษณาควรจะเป็นฉันได้กล่องดำพร้อมข้อความแสดงข้อผิดพลาดสุดท้ายที่เขียนด้วยสีแดง
Mark Cameron

1
ฉันได้เพิ่มบันทึกที่สำคัญมากจาก SDK ในคำตอบของฉันด้านบน
HefferWolf

เอาล่ะเป้าหมาย default.properties ของฉันคือหุ่นยนต์-7, ฉันเปลี่ยนไป 13 Unable to resolve target 'android-13'และกล่าวว่า ฉันติดตั้ง "Android SDK Tools, revision 13" ในตัวจัดการ SDK แล้ว ...
Mark Cameron

86

วิธีแก้ปัญหาง่ายๆ: (และไม่คุณไม่จำเป็นต้องเปลี่ยนค่า min-sdk !!)

ขั้นตอนที่ 1: เปลี่ยนไฟล์ "project.properties"

# Project target.
target=android-13

ขั้นตอนที่ 2: ใน Eclipse

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

สำหรับคำอธิบายที่สมบูรณ์พร้อมตัวอย่างจริงให้ใช้บทช่วยสอนนี้http://www.monkeycoder.co.nz/Community/posts.php?topic=1121

ไชโย!


1
ยอดเยี่ยม ฉันก็ใช้ sdk7 เช่นกันแม้ว่าจะเป็นเวอร์ชัน google api ผมจึงใช้ # เป้าหมายโครงการ target = Google Inc.:Google APIs: 13 ในไฟล์คุณสมบัติของฉัน
ทำงาน

18

สำหรับผู้ที่ใช้ Eclipse มีวิธีที่ง่ายกว่านี้: คลิกขวาที่โฟลเดอร์โครงการของคุณในบานหน้าต่าง "Package Explorer" ทางซ้ายแล้วคลิกคุณสมบัติ -> Android -> และในรายการ "เป้าหมายการสร้างโครงการ" ให้เลือก API 13 ขึ้นไป

หมายเหตุ: นี่เป็นผลเช่นเดียวกับการแก้ไขproject.propertiesที่สร้างขึ้นโดยอัตโนมัติอยู่ดี

สิ่งนี้จะสร้างโครงการของคุณโดยเทียบกับ Android 3.2 SDK ซึ่งรวมถึงข้อกำหนดที่ไม่รู้จักก่อนหน้านี้

คุณอาจปล่อยให้ค่าandroid:minSdkVersionและtargetSdkVersionค่าของคุณเหมือนเดิมใน Manifest.xml ของคุณ

ขอเตือนว่าหากคุณไม่ได้ตั้งค่าtargetSdkVersionเป็น API 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 ไม่ว่าจะเป็นอะไรก็ตาม (ตอนนี้พวกเขาใช้ตัวดำเนินการตามลำดับแทนที่จะเป็นแบบขนานเนื่องจากมีปัญหา 'กับตัวขนาน) ฉันจึงใช้เป้าหมายเก่ามากกว่าที่จะต้องแก้ไขด้วยมือ โปรแกรมจัดการเริ่มต้น ...
Radu

0

คุณใช้ android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|‌​screenSize|smallestScreenSize

หรือสั้นกว่า? หากคุณเปลี่ยนเป้าหมายที่สูงกว่า 13 และใช้ configChanges ที่ยาวขึ้น (ที่ฉันเขียนไว้) มันควรจะใช้งานได้



-4

แอป Android ใหม่ทั้งหมดที่สร้างหลังจากวันที่ 14 ตุลาคม 2011 จะต้องใช้ AdMob SDK ที่เปิดตัวในวันที่ 15 มีนาคม 2011 หรือหลังวันที่ 15 มีนาคม 2011 ซึ่งสอดคล้องกับเวอร์ชัน 4.0.2+ สำหรับ Android หากคุณดาวน์โหลดไลบรารีจากเว็บไซต์ดาวน์โหลดอย่างเป็นทางการแสดงว่าคุณได้รับการตั้งค่าแล้ว มิฉะนั้นคุณอาจมี AdMob SDK เวอร์ชันเก่าที่เปิดตัวก่อนวันที่ 15 มีนาคม 2011 และแอปใหม่ของคุณจะไม่ได้รับการแสดงโฆษณาใด ๆ จนกว่าคุณจะอัปเดต SDK


คุณแค่คัดลอกวางสิ่งต่างๆจากอินเตอร์เน็ตโดยไม่เข้าใจ สิ่งนี้ไม่มีความเกี่ยวข้องกับปัญหาที่แท้จริง
Torben
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.