2012-09-11 49 views
2

我有一個定位於Android的15 Android項目,但Android的8最低版本的這個清單文件中定義:的IntelliJ/Eclipse的不尊重最低SDK版本Android應用

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

這意味着我只能使用Android 8以上的功能。

當我使用String類的isEmpty()方法(API 9中添加的方法)時,IntelliJ和Eclipse都很高興地編譯它,但是當我運行它時在較舊的設備上,由於API 8沒有實現isEmpty(),導致崩潰。

有誰知道爲什麼IDE都不能捕捉這樣的東西?

我的Java編譯器是1.6.0_33版本 - 會迫使IDE在這裏使用舊版本的幫助?

謝謝!如果有任何信息我錯過了,請隨時發表評論,我會挖掘信息!

回答

5

它應該編譯。這允許您通過包裝類在更新的SDK中使用更新的方法。如果您的目標 SDK爲8,那麼IDE會抓住您並抱怨。

此處瞭解詳情:

http://developer.android.com/guide/practices/compatibility.html

包裝類技術是非常有用的。有一個在這個博客帖子指導一下:

http://android-developers.blogspot.com/2009/04/backward-compatibility-for-android.html

編輯:

應該在它指出Eclipse的最新ADT(R20,也許更早)與林特的默認設置將查找minSDK上方的API方法的使用情況。但是它只會在修改文件後檢查文件,或者運行Lint。

更多皮棉:http://tools.android.com/tips/lint

3

的IntelliJ IDEA:

  1. Project Structure>Modules
  2. 選擇一個模塊
  3. Dependencies選項卡,選擇相關的API級別你Module SDK想限制自己。例如Android 2.3.3 Google APIs

想法也努力改善他們的Android Lint支持,以便它可以幫助你檢查是否遵守API級別更容易,即使最新的SDK編譯時。

http://youtrack.jetbrains.com/issue/IDEA-85200

+0

皮棉好信息! +1 – pjco

+0

謝謝!期待這個版本,因爲我更喜歡IntelliJ上的Eclipse! :) – Mark

相關問題