android 용 Eclipse의 Admob 오류 : 구성 변경


131

Eclipse에서 AndroidManifest.xml의 android : configChanges 행에 오류가 발생했습니다.

<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 ( SDK 이하 14의 default.properties ) 파일을 다음과 같이 변경하여 작업했습니다 .

# Project target.
target=android-14

내에서 SDK 관리자 가진 SDK 플랫폼 안드로이드 4.0 - 수정 (14) 를 설치.

SDK Platform android 3.2-revision 13 에서도 작동 하므로 project.properties 대상을 android-13 으로 변경하면 됩니다. 기본적으로 SDK 개정판이 13 이상인지, SDK 관리자에 SDK가 설치되어 있고이를 가리키는 default / project.properties의 프로젝트 대상이 있는지 확인해야합니다.


어떤 안드로이드 버전을 사용하십니까?
— HefferWolf

최소 SDK 버전 7-Android 2.1
— Mark Cameron

대상을 13으로 변경하려고 시도했지만 작동하지 않습니다. 이유는 무엇입니까?
— Anirudh

@anirudhmaddy "android : configChanges ="keyboard | keyboardHidden | orientation | screenLayout | uiMode | screenSize | smallestScreenSize "또는 더 짧은 것을 사용하셨습니까? 대상을 13 이상으로 변경하고 더 긴 구성 변경을 사용하면 작동합니다.
— Gürcan Kavakçı

@ gurcan15 yup은 지금 일하고 있습니다.
— Anirudh

답변:


74

간단한 답변 : 언급 된 구성 변경 사항은 Android 2.1에서 지원되지 않습니다. 여기를 살펴보십시오.

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

예를 들어 uiMode에는 API 레벨 8이 필요합니다.

공식 AdMob 설명서에서 :

요구 사항

Android 용 Google AdMob 광고 SDK에는 Android 1.5 이상이 필요합니다. 최신 Android SDK 사본이 있고 Android v3.2 이상 (default.properties의 target을 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 및 smallestScreenSize는 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 대상은 android-7이고 13으로 변경하고이라고 말합니다 Unable to resolve target 'android-13'. SDK 관리자에 "Android SDK Tools, 개정판 13"이 설치되어 있습니다.
— Mark Cameron

86

쉬운 해결책 : (그리고 NO-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
우수한! Google API 버전이지만 sdk7을 사용하고있었습니다. 그래서 # Project target을 사용했습니다. 내 속성 파일의 target = Google Inc.:Google API : 13
— 일

18

Eclipse를 사용하는 사람들에게는 더 쉬운 방법이 있습니다. 왼쪽 "패키지 탐색기"분할 창에서 프로젝트 폴더를 마우스 오른쪽 단추로 클릭하고 특성-> Android->를 클릭하고 "프로젝트 빌드 대상"목록에서 API 13 이상을 체크하십시오.

참고 : 이것은 편집과 동일한 효과입니다 project.properties 자동 생성되는 입니다.

그러면 이전에 인식되지 않은 용어가 포함 된 Android 3.2 SDK에 대해 프로젝트가 빌드됩니다.

당신은 떠날 수 귀하 android:minSdkVersion와targetSdkVersionManifest.xml에서 값을 동일하게 .

하지만주의 할 당신이 당신의 설정하지 않으면, targetSdkVersionAPI 12 이하로 (또는 전혀 설정하지 않음) 안드로이드 시스템이 있다고 가정합니다 android:configChanges값 screenSize및 smallestScreenSize됩니다 따라서 (API 13에 도입) 회계 및 활동을 파괴하고 다시 시작할 수 있습니다. 이를 피하려면 다른 <activity>태그 ( keyboard|keyboardHidden|orientation지금 까지만 있었을 것임) 에 해당 용어를 포함시켜야합니다 .

그러나 애플리케이션이 API 레벨 12 이하를 대상으로하는 경우 활동은 항상이 구성 변경 자체를 처리합니다 (이 구성 변경은 Android 3.2 이상 디바이스에서 실행중인 경우에도 활동을 다시 시작하지 않습니다).

견적은 여기에서 입니다.


3

나는 같은 문제가있어서 여기에 왔습니다. https://developers.google.com/admob/android/quick-start
에서 샘플 코드를 다운로드했지만 위의 모든 답변에 여전히 문제가 있었으므로 샘플 프로젝트에서 동일한 admob sdk를 사용했습니다. 빌드 jars 항목을 다시 실행하고 target을로 변경 하고 사용하는 것과 동일한 행을 사용했습니다.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 하나 (내가 쓴)를 사용하면 작동합니다.


0

쉬운 해결책 : "project.properties"파일을 21로 변경

# Project target.
target=android-21

-4

2011 년 10 월 14 일 이후에 생성 된 모든 새로운 Android 앱에는 2011 년 3 월 15 일 이후에 출시 된 AdMob SDK가 필요합니다. 이는 Android 버전 4.0.2 이상에 해당합니다. 공식 다운로드 사이트에서 라이브러리를 다운로드 한 경우 이미 설정되어 있습니다. 그렇지 않으면 2011 년 3 월 15 일 이전에 출시 된 이전 버전의 AdMob SDK가있을 수 있으며 SDK를 업데이트 할 때까지 새 앱에 광고 노출이 발생하지 않습니다.


당신은 그것을 이해하지 않고 인터넷에서 복사하여 붙여 넣은 것입니다. 이것은 실제 문제와 관련이 없습니다.
— Torben
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.