Lỗi admob trong Eclipse cho android: configChanges


131

Eclipse đang gây ra lỗi cho tôi trên dòng android: configChanges trong AndroidManifest.xml của tôi:

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

lỗi là:

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

Nếu tôi chỉ để lại keyboard|keyboardHidden|orientationkhông có lỗi, nhưng trình biên dịch sẽ yêu cầu 4 cái còn lại khi tôi thử và xây dựng.

Tôi đang sử dụng GoogleAdMobAdsSDK-4.3.1.

Có ý kiến ​​gì không?

EDIT: Tôi đã làm cho nó hoạt động bằng cách thay đổi tệp project.properies của tôi ( default.properies trên tệp SDK thấp hơn 14) của SDK thành:

# Project target.
target=android-14

và trong Trình quản lý SDK của tôi có Nền tảng SDK Android 4.0 - Phiên bản 14 được cài đặt.

Nó cũng sẽ hoạt động cho SDK Platform android 3.2 - phiên bản 13 , vì vậy bạn chỉ cần thay đổi mục tiêu project.properations thành android-13 nếu đó là trường hợp. Về cơ bản, bạn chỉ cần đảm bảo rằng bản sửa đổi SDK từ 13 trở lên và bạn đã cài đặt SDK đó trong trình quản lý SDK và mục tiêu dự án theo mặc định / project.properies chỉ vào nó.


bạn sử dụng phiên bản Android nào?
HefferWolf

Phiên bản SDK tối thiểu 7 - Android 2.1
Mark Cameron

Tôi đã thử thay đổi mục tiêu thành 13, nhưng nó không hoạt động .. lý do có thể là gì?
Anirudh

? @anirudhmaddy bạn đã sử dụng "android: configChanges =" bàn phím | keyboardHidden | hướng | screenLayout | uiMode | screensize | smallestScreenSize" hoặc ngắn hơn một Nếu bạn thay đổi mục tiêu của bạn trên 13 và sử dụng configChanges còn một, cần làm việc.
Gürcan Kavakçı

@ gurcan15 yup nó đang hoạt động.
Anirudh

Câu trả lời:


74

Câu trả lời đơn giản: các thay đổi cấu hình được đề cập không hỗ trợ trong Android 2.1, hãy xem tại đây:

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

ví dụ: uiMode cần API cấp 8.

Từ Tài liệu AdMob chính thức:

Yêu cầu

SDK quảng cáo Google AdMob cho Android yêu cầu Android 1.5 trở lên. Đảm bảo bạn có bản sao SDK Android mới nhất và bạn đang biên dịch với ít nhất Android v3.2 (đặt mục tiêu trong default.properations thành android-13).

hãy xem tại đây: https://developers.google.com/admob/android/quick-start

Vì vậy, tôi nghĩ rằng phiên bản công cụ của bạn không được cập nhật lên ít nhất là Phiên bản 13.


Tôi đã đổi <uses-sdk android:minSdkVersion="7"/>sang phiên bản 8, 9, 10, 11, 12 ... vẫn có lỗi ... cũng đã thử xóa dòng và nó vẫn báo lỗi.
Mark Cameron

9
screenSize và smallScreenSize chỉ được hỗ trợ trong API cấp 13, có nghĩa là Honeycomb, bạn có chắc bạn cần chúng không? Vì chúng khá đặc biệt tổ ong.
HefferWolf

1
Chà, nếu tôi không khai báo chúng, tôi sẽ nhận được điều này trong 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.Và nơi quảng cáo có nghĩa là tôi nhận được một hộp đen với thông báo lỗi cuối cùng được viết bằng màu đỏ.
Mark Cameron

1
Tôi đã thêm một ghi chú khá quan trọng từ SDK vào phản hồi của tôi ở trên.
HefferWolf

Được rồi, mục tiêu default.properations của tôi là android-7, tôi đổi thành 13 và nó nói Unable to resolve target 'android-13'. Tôi đã cài đặt "Công cụ SDK Android, phiên bản 13" trong trình quản lý SDK của mình ...
Mark Cameron

86

Giải pháp dễ dàng: (và KHÔNG bạn không cần thay đổi giá trị min-sdk !!)

Bước 1: Thay đổi tệp "project.properIES"

# Project target.
target=android-13

Bước 2: Trong Eclipse

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

Để giải thích đầy đủ với ví dụ thực tế, hãy sử dụng hướng dẫn này http://www.monkeycoder.co.nz/Community/posts.php?topic=1121

Chúc mừng!


1
Thông minh! Tôi cũng đã sử dụng sdk7 mặc dù phiên bản google api. Vì vậy, tôi đã sử dụng mục tiêu # Project. target = Google Inc .: Google API: 13 trong tệp thuộc tính của tôi.
làm việc

18

Đối với những người sử dụng Eclipse, có một cách dễ dàng hơn: Nhấp chuột phải vào thư mục dự án của bạn trong ngăn "Gói Explorer" bên trái và nhấp vào Thuộc tính -> Android -> và trong danh sách "Mục tiêu xây dựng dự án", hãy kiểm tra API 13 trở lên.

Lưu ý: đây là hiệu ứng tương tự như chỉnh sửa project.propertiesđược tạo tự động.

Điều này sẽ xây dựng dự án của bạn dựa trên SDK Android 3.2 bao gồm các điều khoản trước đây không được nhận dạng.

Bạn có thể để lại của bạn android:minSdkVersiontargetSdkVersiongiá trị như nhau trong manifest.xml của bạn.

Mặc dù được cảnh báo , nếu bạn không đặt targetSdkVersionAPI 12 hoặc thấp hơn (hoặc hoàn toàn không đặt), hệ thống Android sẽ cho rằng các android:configChangesgiá trị screenSizesmallestScreenSize(được giới thiệu trong API 13) sẽ được tính và do đó sẽ được được phép phá hủy-khởi động lại hoạt động của bạn. Nếu bạn muốn tránh điều này, bạn phải bao gồm các điều khoản đó trong các <activity>thẻ khác của mình (có lẽ chỉ có keyboard|keyboardHidden|orientationcho đến bây giờ).

Tuy nhiên, nếu ứng dụng của bạn nhắm mục tiêu API cấp 12 trở xuống, thì hoạt động của bạn luôn tự xử lý thay đổi cấu hình này (thay đổi cấu hình này không khởi động lại hoạt động của bạn, ngay cả khi chạy trên thiết bị Android 3.2 trở lên).

Trích dẫn là từ đây .


3

Tôi đã có cùng một vấn đề vì vậy tôi đến đây.
Tôi đã tải xuống mã mẫu từ https://developers.google.com/admob/android/quick-start , tôi vẫn gặp vấn đề với tất cả các câu trả lời ở trên vì vậy tôi đã sử dụng sdk admob tương tự, chúng cung cấp trong dự án mẫu. Làm lại điều xây dựng, thay đổi mục tiêu thành android-15và sử dụng cùng một dòng họ sử dụng:

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

Và nó hoạt động!


Tôi nghĩ rằng đó là con đường để đi. Bởi vì, đối với tôi, vì Asynct task bị hỏng từ API trở đi (hiện tại họ sử dụng trình thực thi tuần tự thay vì song song vì họ có 'vấn đề' với song song), tôi thà sử dụng mục tiêu cũ hơn là phải sửa đổi bằng tay giám đốc điều hành mặc định ...
Radu

0

Bạn đã sử dụng android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|‌​screenSize|smallestScreenSize

hay ngắn hơn? Nếu bạn thay đổi mục tiêu trên 13 và sử dụng cấu hình dài hơn Thay đổi mục tiêu (mà tôi đã viết), nó sẽ hoạt động.


0

Giải pháp dễ dàng: Thay đổi tệp "project.properIES" thành 21

# Project target.
target=android-21

-4

Tất cả các ứng dụng Android mới được tạo sau ngày 14 tháng 10 năm 2011 sẽ yêu cầu SDK AdMob được phát hành vào hoặc sau ngày 15 tháng 3 năm 2011. Điều này tương ứng với phiên bản 4.0.2+ cho Android. Nếu bạn đã tải xuống thư viện từ trang tải xuống chính thức của chúng tôi, thì bạn đã được đặt. Nếu không, bạn có thể có phiên bản cũ của AdMob SDK đã được phát hành trước ngày 15 tháng 3 năm 2011 và ứng dụng mới của bạn sẽ không nhận được bất kỳ hiển thị quảng cáo nào cho đến khi bạn cập nhật SDK của mình.


Bạn chỉ cần sao chép nội dung từ mạng Inter mà không hiểu nó. Điều này không liên quan đến vấn đề thực tế.
Torben
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.