android:configChangesの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 ManagerSDK Platform Android 4.0-Revision 14がインストールされています。

また、SDKプラットフォームandroid 3.2-リビジョン13でも動作するはずです。その場合は、project.propertiesターゲットをandroid-13に変更する必要があります。基本的には、SDKリビジョンが13以上であること、およびSDKがSDKマネージャーにインストールされており、default / project.propertiesのプロジェクトターゲットがそれを指していることを確認する必要があります。


どのAndroidバージョンを使用していますか?
HefferWolf、2011年

Min SDKバージョン7-Android 2.1
Mark Cameron

ターゲットを13に変更してみましたが、機能しません。理由は何ですか。
Anirudh 2012年

?screenLayoutは| |あなたが13を超えるターゲットを変更し、より長いconfigChangesを1つずつ使用している場合は、それが動作するはずsmallestScreenSize」または短い1 |画面サイズ| uiMode keyboardHidden | |オリエンテーション:「configChanges =アンドロイド」キーボードを@anirudhmaddyは、使用しました。
GürcanKavakçı

@ gurcan15うんうんうん。
Anirudh 2013年

回答:


74

簡単な答え:上記の設定変更はAndroid 2.1ではサポートされていません。こちらをご覧ください。

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

たとえば、uiModeにはAPIレベル8が必要です。

公式AdMobドキュメントから:

必要条件

Android向けGoogle AdMob Ads SDKには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とleastScreenSizeはAPIレベル13、つまりHoneycombでのみサポートされていますが、本当に必要ですか?彼らはかなりハニカム固有なので。
HefferWolf、2011年

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、2011年

私のdefault.propertiesターゲットはandroid-7です。13に変更すると、と表示されますUnable to resolve target 'android-13'。「Android SDKツール、リビジョン13」がSDKマネージャーにインストールされていますが...
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
優れた!私もsdk7を使用していましたが、Google APIバージョンです。そのため、#プロジェクトターゲットを使用しました。プロパティファイルのtarget = Google Inc.:Google APIs:13
勤務

18

Eclipseを使用している場合は、より簡単な方法があり ます。左側の[パッケージエクスプローラー]ペインでプロジェクトフォルダーを右クリックし、[プロパティ]-> [Android]->をクリックし、[プロジェクトビルドターゲット]リストでAPI 13以上をオフにします。

注:これは、project.propertiesいずれにしても自動生成される編集と同じ効果です。

これにより、Android 3.2 SDKに対してプロジェクトがビルドされます。これには、以前は認識されなかった用語が含まれています。

Manifest.xmlでandroid:minSdkVersionとのtargetSdkVersion値をそのままにすることができます。

ただしtargetSdkVersionAPI 12以下に設定しない場合(またはまったく設定しない場合)、Androidシステムはandroid:configChangesscreenSizesmallestScreenSize(API 13で導入された)が考慮されていると見なし、アクティビティを破棄して再起動できます。これを避けたい場合は、それらの用語を他の<activity>タグに含める必要があります(おそらくこれkeyboard|keyboardHidden|orientationまでしかなかった)。

ただし、アプリケーションがAPIレベル12以下をターゲットにしている場合、アクティビティは常にこの構成変更を自身で処理します(この構成変更は、Android 3.2以降のデバイスで実行されている場合でも、アクティビティを再開しません)。

見積もりはこちらから。


3

同じ問題があったのでここに来ました。https://developers.google.com/admob/android/quick-start
からサンプルコードをダウンロードしましたが、上記のすべての回答にまだ問題があったため、サンプルプロジェクトで提供されている同じadmob sdkを使用しました。jarのビルドをやり直し、ターゲットをに変更し、使用するのと同じ行を使用します。android-15

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

そしてそれはうまくいきます!


それが道だと思います。私にとって、AsynctasksはAPIから何らかの理由で破壊されるため(並列の1つに「問題」があるため、並列の代わりに順次エグゼキューターを使用するため)、手動で変更するよりも古いターゲットを使用します。デフォルトのエグゼキューター...
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.