2016-10-05 30 views
3

我正在Android Studio上開發一個Android應用程序,我從API級別19調用方法。我的build.gradle外觀像這樣:'在舊版本中調用新方法lint檢查沒有發現高於Android Studio中的最低api調用

android { 
    compileSdkVersion 24 
    buildToolsVersion '24.0.2' 

    productFlavors { 
     // Define separate dev and prod product flavors. 
     dev { 
      // dev utilizes minSDKVersion = 21 to allow the Android gradle plugin 
      // to pre-dex each module and produce an APK that can be tested on 
      // Android Lollipop without time consuming dex merging processes. 
      minSdkVersion 21 
     } 
     prod { 
      // The actual minSdkVersion for the application. 
      minSdkVersion 16 
     } 
    } 

    defaultConfig { 
     applicationId "com.myapp" 
     minSdkVersion 16 
     multiDexEnabled true 
     targetSdkVersion 24 
     versionCode 1 
     versionName "1.0" 
    } 
} 

我的項目中沒有lint.xml文件,所以沒有lint檢查被重寫。

問題在於lint檢查「在舊版本上調用新方法」。沒有找到調用API級別19的方法。如果打開構建變體面板並選擇prodDebugprodRelease,該方法會以紅色下劃線,但項目構建良好。我如何才能讓Android Studio在分析結果中有效地顯示上述方法,或阻止我正確構建項目?

編輯 我找到了一種方法來搜索不符合最低SDK的方法。通過轉到右側的Gradle面板並運行lint任務,會生成HTML報告,最終顯示API 19調用以及其他調用。爲什麼沒有在Android Studio中實現?

由於這仍然不適用於Android Studio本身,而是在Gradle中,我還沒有完成問題。

+0

https://stackoverflow.com/questions/39710692的重複/ how-to-enable-lint-error-in -Android-studio-for-message-call-requires-api-level – Flow

回答

1

如果您編譯的SDK版本不是最小的版本,Gradle將不會告訴您是否使用您的minSDK不支持的方法。 read more about it

所以根本解決辦法是使用不起毛的特徵,即inspectcode

點擊右鍵,無論是在項目/類,然後=>分析=> inspectCode

+0

如果將build.gradle中的compileSdkVersion設置爲16,則可以使用較高的API資源,如android:Widget .Material.Spinner.Underlined「(在xml資源中聲明的目標爲api level 21)未找到。此外,我認爲,無論目標SDK是什麼,如果您聲明瞭最低的API,那麼檢查應該很簡單,比較每個方法調用的api級別與聲明的最低級別,並將不符合要求的那些添加到最終檢查結果。我真的很好奇,到目前爲止,這不能正常工作。 – Gonzalo

+0

@Gonzalo你是對的,但在這種情況下,你使用了抑制註釋或構建檢查,這有助於避免編譯時間檢查,所以當在大項目中添加大量構建和註釋時,簡單的方法是使用分析功能找到他們在哪裏 –

相關問題