Eclipse中针对Android的Admob错误:configChanges


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 Manager中安装了Android 4.0SDK平台-修订版14

它也应该适用于SDK Platform android 3.2-修订版13,因此,如果是这种情况,您只需将project.properties目标更改为android-13即可。基本上,您只需要确保SDK修订版为13或更高版本,并且必须将SDK安装在SDK管理器中,并在指向它的default / project.properties中找到项目目标。


您使用哪个Android版本?
HefferWolf,2011年

最低SDK版本7-Android 2.1-
马克·卡梅隆

我试图将目标更改为13,但是它不起作用..可能是什么原因?
Anirudh 2012年

?@anirudhmaddy您使用了“机器人:configChanges =”键盘| keyboardHidden |方向|屏幕布置| uiMode |屏幕尺寸| smallestScreenSize”或较短的一个。如果你改变上述13你的目标,并使用较长的configChanges之一,它应该工作。
GürcanKavakçı

@ gurcan15是的,现在正在工作。
Anirudh 2013年

Answers:


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中的target设置为android-13)。

在这里看看:https : //developers.google.com/admob/android/quick-start

因此,我认为您的工具版本未至少更新到版本13。


我更改<uses-sdk android:minSdkVersion="7"/>为版本8、9、10、11、12 ...仍然有错误...也尝试删除该行,它仍然给我错误。
马克·卡梅隆

9
仅在API级别13中支持screenSize和minimumScreenSize,这意味着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.广告的原意是,我会得到一个黑匣子,最后一条错误消息用红色写成。
马克·卡梅隆

1
我在上面的回复中添加了来自SDK的重要提示。
HefferWolf,2011年

好的,我的default.properties目标是android-7,我更改为13,并显示Unable to resolve target 'android-13'。我的SDK管理器中安装了“ Android SDK工具,修订版13” ...
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版本。因此,我使用了#Project目标。target = Google Inc.:Google APIs:13在我的属性文件中。
工作

18

对于使用Eclipse的用户,有一种更简单的方法: 在左侧的“包资源管理器”窗格中右键单击您的项目文件夹,然后单击属性-> Android->,然后在“项目构建目标”列表中关闭API 13或更高版本。

注意:这与project.properties自动生成的编辑效果相同。

这将根据Android 3.2 SDK构建您的项目,其中包含以前无法识别的术语。

您可以在Manifest.xml中保留android:minSdkVersiontargetSdkVersion值相同。

不过请注意,如果您未将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。重做build 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之前,您的新应用不会收到任何广告展示。


您只是从Inter网络复制粘贴的内容而没有理解。这与实际问题无关。
Torben
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.