2010-07-22 100 views
4

我正在編寫與Android 1.6兼容的應用程序,但我想讓運行Android 2.2的用戶將應用程序安裝移動到他們的SD卡上。爲Android 1.6設置安裝位置?

如何編譯我的應用程序1.6,但仍然允許2.2用戶將其安裝到他們的SD?

回答

12

在您的清單:

  • <manifest>,加上 「android:installLocation="preferExternal
  • 保留目前uses-sdk爲 「<uses-sdk android:minSdkVersion="4">

然後去項目>屬性>安卓(左),將構建目標更改爲2.2,然後全部設置。

您的項目將使用2.2(但仍然只需要1.6)構建,但運行1.6的設備將簡單地忽略清單中新的「installLocation」設置。只要注意不要在實際代碼中添加任何2.2引入的材料,因爲編譯器將不再捕獲它。

+0

好吧。有種痛苦,但我想它必須要做。 – GuyNoir 2010-07-22 21:26:00

+1

您可以在此處找到更多信息:http://developer.android.com/guide/appendix/install-location.html在「向後兼容性」下 – 2010-07-22 21:31:51

+3

一個建議:在推出新版本之前,將構建目標版本設置回到1.6並做一個乾淨的構建。如果你遇到任何編譯錯誤,你就知道你不小心引入了2.2特有的功能,而你的應用程序將會在1.6下崩潰。如果一切正常,請切換回2.2。 – EboMike 2010-10-25 02:52:49

0

這並不像開發者指南所建議的那樣無縫。 首先,應用程序時的installLocation出現在清單和構建目標被設定爲以外的任何其他2.2不建:

所以爲了通過構建目標設定爲1.6,以測試向後compatibililty ,清單也必須進行編輯。其次,一旦構建目標設置爲2.2,我就不會選擇具有較低API級別的模擬器進行測試。不過,我仍然可以手動啓動1.6模擬器並在其上運行應用程序,但是如果我的構建目標爲2.2(即使minSdkVersion = 4),我的應用程序將出現在Android Market for 1.6設備上,但我很好奇。我沒有實際的設備來測試。有人可以證實這不會影響市場上的可用性嗎?

最後,此警告仍然是:

Attribute minSdkVersion (4) is lower than the project target API level (8) 
+0

我可以證實,市場上的可用性不受影響。我使用官方Android開發者頁面描述的方法。我的應用的市場要求顯示爲「Android 1.6或更高版本」。使用運行Android 1.6的HTC Magic,我可以毫無問題地從市場中發現,下載和運行應用程序。 – Philipp 2011-07-12 14:29:46