2012-07-30 94 views
7

我正在使用ActionBarSherlock的應用程序。因爲它是documentation指出:使用Android 4.X進行編譯但支持API級別9

[...]的庫需要它和你的項目中 與Android 4.0或更高版本編譯的。該項目還要求 在您的編輯器和您可能正在使用的任何版本的 系統中使用JDK 1.6進行編譯。

因此,這意味着我將編譯我的應用程序(庫)對安卓4.X但在我的清單,我宣佈,我將廣告定位(例如)API級別9

這所有的工作都很好,但有些事情讓我感到不安。來自FAQ

當我使用庫時,我的清單中應該指定什麼API級別?

需要指定API級別11或更高版本,因爲這會導致Android 在新設備上運行時自動添加本機操作欄。 由於您將針對新的API進行編譯,但您的應用可能會在具有較舊版本Android的設備上運行 必須特別注意 以避免使用或正確檢查並調用在您的最低SDK之後引入的任何方法 版。

這意味着,我將不得不手動檢查每一個方法調用,所以我不使用任何不在我的目標API級別(在我的情況下,9)可用?這聽起來不對。

有沒有辦法告訴我的IDE(IntelliJ),我只使用API​​級別9(所以我沒有得到任何自動完成的不存在的方法/類,不使用它們偶然),然後選擇對其他Android版本進行編譯?

或者我可以使用一些自動檢查(在編譯時運行)來檢查嗎?

回答

8

當對錯誤的API版本進行API調用時,ADT的lint功能應該通過警告來解決此問題。

您應該使用最新的SDK(目前4.1)編譯ABS和您的項目。您的清單應該有儘可能高的targetSdkVersion(理想情況下與您的編譯SDK匹配),並且您的minSdkVersion應該設置爲您支持的最低版本。

Lint與IntelliJ IDEA部分集成,也可作爲命令行工具使用。

1

您暫時將您的目標SDK設置爲各個較低的SDK並使用它進行調試。然後你的最終版本是最新的SDK。

+0

這將是*手冊*方法。 – 2012-07-30 18:47:09

+0

哦,我認爲你的意思是通過查看每個電話和檢查手冊。我不認爲它會自動實現你想要的。對於未來的ADT更新來說這是一個好主意,但我認爲它目前不可用。但我不確定! – 2012-07-30 18:50:34

0

設置一個類似於你在清單中提到的構建目標。

+0

正如@GeeksOnHugs所述...... – 2012-07-30 18:47:31

+0

設置構建目標不同於設置目標SDK版本。它也不需要對清單進行任何更改。我知道至少在Eclipse中改變構建目標將修復所有的錯誤信息。您可能還需要包含較低的minSdkVersion以及您的targetSdkVersion,以便它可以在Play商店的minSdkVersion中使用。 – Stevy888 2012-07-30 19:01:35

0

一如既往,您應該將targetSdk設置爲清單和項目中可用的最大值。屬性文件(由其在其中一個視頻上的google推薦),以便ADT & SDK能夠相應地優化ADK。

將minSdk設置爲您希望支持您的應用程序的那個,並讓Lint告訴您在使用過新功能的情況下是否有任何問題。

相關問題