2013-07-22 71 views
0

我在我的應用程序的onCreate方法(代碼如下)上對Build.Version.SDK_INT使用了一個簡單的條件檢查,以防止在任何Android OS上啓用嚴格模式2.3。直到最近,這一直工作正常,但我的項目的重新夾具後,我收到以下錯誤:構建版本檢查在Android 2.2上不起作用Froyo

Could not find class 'android.os.StrictMode$ThreadPolicy$Builder', referenced from method com.myPackage.MyApp.onCreate 

我聽說的方式類依賴性進行了評價,並從靜態分析加載的改變該類在Android 2.0中是一個「延遲加載」系統,但是由於我使用的是2.2,所以我認爲這並不奏效。我懷疑在我的項目結構中有其他地方導致了這個錯誤,但我對此感到不知所措。

這裏有沒有人有過類似的經歷,也許可以對此有所瞭解?任何幫助將受到感謝。

在此先感謝您的幫助!

請看下面我的代碼以供參考:

public class MyApp extends Application { 

    @Override 
    public void onCreate() { 
     // Set up strict mode 
     int buildInt = Build.VERSION.SDK_INT; 
     Log.d(LogTags.TRIGGER_CODE, String.format("Build is %d (%s)", buildInt, Build.VERSION.CODENAME)); 
     if (buildInt >= 9) { 
      StrictMode.setThreadPolicy(new ThreadPolicy.Builder() 
        .detectCustomSlowCalls() 
        .detectNetwork() 
        .build()); 
      StrictMode.setVmPolicy((new VmPolicy.Builder() 
        .detectAll() 
        .build())); 
     } 
     super.onCreate(); 
    } 
} 
+1

這應該會對您有所幫助:[StrictMode for lower platform versions](http://stackoverflow.com/a/4623606/2558882) – Vikram

+0

謝謝,這似乎是一個很好的解決方案,但由於我不支持預2.0,我寧願計算出哪些更改導致此錯誤出現並解決該問題。我真的不想增加以前工作的複雜性,並且可能有簡單的修復。 – sleeke

+0

快速說明:這是編譯時錯誤還是設備上的錯誤,當您嘗試運行該應用程序時?我最初認爲設備上的錯誤,但是這個錯誤消息看起來更像是一個編譯器錯誤。 – JesusFreke

回答

0

事實證明,這只是一個在代碼的其他地方的另一個問題的症狀,過於具體的項目是值得進入這裏...

感謝您對這裏根本原因的想法,併爲'doh'時刻感到抱歉:)