2012-01-07 90 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電子市場)。構建目標是在編譯時使用的完全獨立的東西。