最近Facebook發(fā)布了一名為Stetho的工具,這個工具可以使我們通過Chrome Developer工具來檢查Android 應(yīng)用程序。我發(fā)現(xiàn)這非常有用,因為這個工具還可以訪問應(yīng)用程序中的SQLite數(shù)據(jù)庫。 很明顯,這種類型的工具應(yīng)包含于Android 應(yīng)用程序的調(diào)試模式中。這里有一個很好的方法來完成這個工作。
為了確保Stetho僅用于調(diào)試模式,你可添加一個debugCompile(調(diào)試編譯)的依賴,而不是常常使用到的compile(編譯)類型。
depencencies {
// your other dependencies here...
debugCompile 'com.facebook.stetho:stetho:1.0.0'
}
現(xiàn)在我們需要在調(diào)試模式中使用Stetho。如何做呢? 我們可以使用具有強大功能的Android Gradle構(gòu)建系統(tǒng)! 借此添加僅在調(diào)試模式中編譯的一些源文件,創(chuàng)建一個名為src/debug/java的源文件夾。這個文件夾和src/main/java 相似,但它是用來存放應(yīng)用程序中的調(diào)試變量的。相反,主文件夾存放所有變量共用的源文件。 之后,按照Stetho主頁上描述的方式添加一個Application應(yīng)用。
import com.facebook.stetho.Stetho;
public class MyDebugApplication extends MyApplication {
@Override
public void onCreate() {
super.onCreate();
Stetho.initialize(
Stetho.newInitializerBuilder(this)
.enableDumpapp(Stetho.defaultDumperPluginsProvider(this))
.enableWebKitInspector(Stetho.defaultInspectorModulesProvider(this))
.build());
}
}
看清楚這個類是如何從已經(jīng)有的 MyApplication.類進行擴展的。這種方法確實很方便,因為你已經(jīng)在應(yīng)用程序中使用一個應(yīng)用進行其他類型的初始化了。如果你還沒有一個應(yīng)用(application)可從android.app.Application.繼承一個就行了。
最后一步是確保當(dāng)前應(yīng)用程序的調(diào)試版本使用的是 MyDebugApplication類。此外,在這里我們用Gradle 搭建系統(tǒng)來實現(xiàn)這個步驟。那就是在AndroidManifest.xml 文件添加至src/debug 文件夾中。
<manifest
package="com.mycompany"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<application
tools:replace="android:name"
android:name=".MyDebugApplication"/>
</manifest>
這個AndroidManifest.xml文件將并入到src/main 文件夾中的主AndroidManifest.xml文件里,并且會替換android:name屬性,其原因是我們特別使用了tools:replace屬性。真是太棒了!
現(xiàn)在如果我們運行應(yīng)用程序的調(diào)試模式變量,Stetho就將激活。如果我們轉(zhuǎn)為發(fā)布變量,此變量將無跡可尋且Stetho也不會激活。發(fā)布版本沒有出現(xiàn)偶然故障,程序開發(fā)人員的工作完成的很好。
使用Android Gradle構(gòu)建系統(tǒng)可以很容易在應(yīng)用程序中添加一些調(diào)試功能。這個技術(shù)不僅可以用在Stetho上,還可以用在那些僅僅希望在調(diào)試模式中添加的類庫或者工具的工作中。