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:minSdkVersiontargetSdkVersionManifest.xml에서 값을 동일하게 .

하지만주의 할 당신이 당신의 설정하지 않으면, targetSdkVersionAPI 12 이하로 (또는 전혀 설정하지 않음) 안드로이드 시스템이 있다고 가정합니다 android:configChangesscreenSizesmallestScreenSize됩니다 따라서 (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.