2012-01-07 89 views
0

关于这个主题有很多有用的帖子,但都需要我使用以后的sdk比我写我的应用程序。为了使我的应用程序尽可能向后兼容,我选择使用Android 1.5(sdk v 3)。 随着代码的建议,宣布清单我有一些问题,日食给我一个错误代码是指在Android中不可用1.5AdActivity不在声明中声明......但我使用sdk v 3?

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

Eclipse是告诉我方向后一切问题后SDK函数。

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

有人请指出我在正确的方向,作为清单的代码或如何编译为以后的目标?

干杯!

好.....这里是从清单代码:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.ohmywebdesign.trigsolver" 
android:versionCode="5" 
android:versionName="1.3" > 
<uses-sdk android:minSdkVersion="8" /> 
<uses-sdk android:targetSdkVersion="8" /> 
<uses-sdk android:maxSdkVersion="15" /> 

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 

<application 
    android:icon="@drawable/icon" 
    android:label="@string/app_name" > 
    <meta-data android:value="YOURPUBIDHERE" android:name="ADMOB_PUBLISHER_ID" /> 
    <activity android:name="com.google.ads.AdActivity" android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" /> 
    <activity 
     android:name=".Splash" 
     android:label="@string/app_name" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
+0

Rick,问题是,你为什么要编译一个过时的sdk版本? – Ghost 2012-01-07 07:21:00

+0

这是我的第一个应用程序,我想让它可供所有Android用户使用。我是用这种思路吠叫错误的树,还是有更好的办法?我愿意接受任何和所有建议。 – 2012-01-07 07:38:08

+0

我想告诉你,这个星球上没有多少人坚持1.5或1.6。即使大多数制造商正在构建支持2.2或更高版本的手机。我认为你可以瞄准2.1版本,即sdk版本7.建议你观看此视频http://www.youtube.com/watch?v = GxU8N21wfrM&feature = player_embedded – Ghost 2012-01-07 08:00:10

回答

0

事情是这样的:

<uses-sdk android:minSdkVersion="3" /> 
<uses-sdk android:targetSdkVersion="8" /> 
<uses-sdk android:maxSdkVersion="15" /> 

在你表现将让你做你想要的。

此外,要确保你有最新的AdMob SDK即版本4.3.1 http://code.google.com/mobile/ads/download.html

和您包括

<meta-data android:value="YOURPUBIDHERE" android:name="ADMOB_PUBLISHER_ID" /> 
+0

最初我在引用sdk版本8和15时遇到了问题,我通过将构建版本切换到Android 1.6来克服这个问题。 但即使如此,我仍然遇到eclipse调用configChanges字符串作为错误的问题。 – 2012-01-07 07:32:54

+0

然后,我会确保您使用的是最新的AdMob SDK,即版本4.3.1 http://code.google.com/mobile/ads/download.html - 更新了我的答案。 – TryTryAgain 2012-01-07 08:08:18

+0

AdMob已经是4.3.1版本的 – 2012-01-07 08:14:54

0

由于MisterSquonk的关于这一问题的评论指出,一些configChanges值的介绍在API水平高于1.5。仅改变清单中最小/目标/最大API级别的值不会解决您的问题,您必须确保构建针对声明这些值的SDK级别。

对于基于Ant的版本,这需要更改target属性的值project.properties;我不使用Eclipse为我的Android项目,所以我不是100%肯定,但这里是一个从Eclipse/ADT documentation,似乎有关你需要做的摘录:

Note: You can change your the Build Target for your project at any time: Right-click the project in the Package Explorer, select Properties, select Android and then check the desired Project Target.

当然,如果您必须确保不要直接使用API​​级别高于最低级别的任何类/方法,否则当运行在实现较低API级别的设备上时,您的应用程序在运行时会失败。

请记住,该清单仅用于设备上的运行时(以及大多数分销渠道,例如Android电子市场)。构建目标是在编译时使用的完全独立的东西。