想看TextUtils isEmpty的源碼,結果出現的源碼沒有實際內容,只有一個拋出異常:RuntimeException("stub!!」) 這是爲何呢? 小創做 - Android單元測試(七):Robolectric,在JVM上調用安卓的類html
解釋: 咱們知道安卓的app須要運行在delvik上面,咱們開發Android app是在JVM上面,在開發以前咱們須要下載各個API-level的SDK的,下載的每一個SDK都有一個android.jar的包,這些能夠在你的androidsdkhome/platforms/下面看到。當咱們開發一個項目的時候,咱們須要指定一個API-level,其實就是將對應的android.jar 加到這個項目的build path裏面去。這樣咱們的項目就能夠編譯打包了。然而如今的問題是,咱們的代碼必須運行在emulator或者是device上面,說白了,就是咱們的IDE和SDK只提供了開發和編譯一個項目的環境,並無提供運行這個項目的環境,緣由是由於android.jar裏面的class實現是不完整的,它們只是一些stub,若是你打開android.jar下面的代碼去看看,你會發現全部的方法都只有一行實現: throw RuntimeException("stub!!"); 而運行unit test,說白了仍是個運行的過程,因此若是你的unit test代碼裏面有android相關的代碼的話,那運行的時候將會拋出RuntimeException("stub!!")。爲了解決這個問題,如今業界提出了不少不一樣的程序架構,好比MVP、MVVM等等,這些架構的優點之一,就是將其中一層抽出來,變成pure Java實現,這樣作unit testing就不會遇到上面這個問題了,由於其中沒有android相關的代碼。java
java - meaning of RuntimeException("Stub!") in Android This is because source code is not found in SDK. To see the source code, you need to download source for Android SDK, so Android studio can display the respective code.android
打開Android SDK Manager 下載你須要的源碼(Sources for Android SDK) 下載完成後會在你的SDK 根目錄下的source 文件夾。正常這樣重啓Android Studio 應該就能看到源碼了,應該是Android Studio 有問題,因此看不到源碼。架構
怎麼打開Android SDK Manager? Tools菜單——Android——SDK Manager 或者Preferences中搜索SDK也能找到 正常狀況下是不會顯示Sources for Android SDK 的,須要點擊右下角的Show Package Details 通常狀況下下載了某個Android SDK後對應的Sources源碼也會自動下載下來app
可是對TextUtils isEmpty在Android Studio中按Cmd+B快捷鍵顯示源碼時,仍然顯示RuntimeException("stub!!」) 這樣的源碼,這是由於有以前的記憶存在。怎麼修改呢?注意右上角應該有一個相似於Edit xxxx的快捷鍵,這裏能夠選擇源碼,大概是選擇Sdk/source下面的android26(由於個人項目是用到了android26 sdk )文件夾就好了,source下面不須要指定android.jar也沒有android.jar文件jvm
順便發一個連接,https://www.kanxs123.com/ ,這是朋友作的一個小說網站單元測試