簡體   English   中英

使用minSdkVersion管理Android項目中的“已棄用”警告

[英]managing 'deprecated' warnings in Android project with minSdkVersion

我討厭警告。 我們的Android項目現在有151個,而且我確信在列表的某個地方有一個實際上警告我們免受潛在的麻煩。

這些警告中的一種是關於不推薦使用的字段和方法。 這可能很有用,除了Manifest包含<uses-sdk android:minSdkVersion="10" /> ,這些警告只考慮target SDK即android-17

這些警告很容易靜音 - 在違規行或整個方法之前添加@SuppressWarnings("deprecation")注釋。 但這忽略了它的全部要點 - 如果/當我們決定改變minSdkVersion="11" ,在10級棄用的API仍然不會出現,並且有人將不得不在我們所有項目中完成所有注釋,找到必須重寫的代碼。

是否有一些解決方案可以根據我的minSdkVersion管理這些警告?


似乎Mark在下面發布了一個有趣的答案,甚至提出了一個受我的問題啟發的功能請求 ,但我不同意minSdkVersion的重要性。 他希望看到基於目標API級別的棄用警告(很可能來自Lint,類似於@TargetApi(NN)注釋)。 但我不同意這種方法。

考慮一個打開相機的簡單應用程序。 它可能想要檢查預覽幀速率 但是這種方法在API 9中已棄用,現在我們必須檢查預覽FPS范圍 如果我們使用platforms/android-8/android.jar ,Java編譯器將不會顯示棄用警告。

但即使應用程序在支持此類查詢的設備上運行,它也不允許我們找到首選的視頻分辨率 我們可能會在@TargetApi(11)添加@TargetApi(11)注釋,以確保應用程序是使用platforms/android-11/android.jar或更高版本構建的。

現在我們已經定位了Honeycomb及更高版本,將為 getPreviewFrameRate() 顯示棄用警告,這正是困擾我的。 有一段時間,我想象中的應用程序必須支持一些Froyo設備,因此我別無選擇, minSdkVersion=8設置minSdkVersion=8並使用不推薦使用的方法。 當然,我將在條件塊中使用任何高級API,並使用@TargetApi(NN)

那我該怎么辦? 在對 getPreviewFrameRate() 的調用周圍添加@SuppressWarnings("deprecation") 來靜音警告? 改為添加@SuppressDeprecation(8)

但在某些時候,我將決定與Froyo的向后兼容性不再重要。 我在我的Manifest中設置了<uses-sdk android:minSdkVersion="9" /> ,但 getPreviewFrameRate() 的棄用警告仍被抑制......好吧,新方法肯定比現有的注釋更好,因為它更容易grep -R "@SuppressDeprecation(8)"在Manifest中進行更改后的整個項目。

但我更喜歡這里更緊密的集成:讓Lint為我解析Manifest文件。

這會更好嗎?

是否有一些解決方案可以根據我的minSdkVersion管理這些警告?

不,因為棄用與android:minSdkVersion無關。

如果您真的對此感到擔心,請將已棄用的內容隔離到自己的方法中,以最大程度地降低注釋將掩蓋您不了解的未來棄用的幾率。

什么不是完全不可能的是@SuppressDeprecation(NN)注釋,它將抑制給定構建目標的棄用。 這類似於@TargetApi(NN)如何抑制給定android:minSdkVersion Lint投訴。 我已經為此提交了功能請求

實際上有一項功能請求: https//code.google.com/p/android/issues/detail? id = 411318於2012年12月12日提交。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM