在开发 Android 应用的时候,有时候我们需要查看数据库
、SharePreference
等。通常的做法是把相关文件pull
出来,而前提必须是手机得root
。如果没有root
,那就只能通过打印或其它方式查看,整个过程非常麻烦。
Chrome
的Developer Tools
给Web前端
开发带来很大便捷。Stetho
是Facebook
开源的一个工具,我们借助Stetho
结合Developer Tools
,能够很轻松直观的调试、查看 Android 应用中的数据。
使用步骤
- 添加依赖
dependencies {
compile 'com.facebook.stetho:stetho:1.3.1'
// 如果需要查看网络请求信息(根据需要,选择依赖)
compile 'com.facebook.stetho:stetho-okhttp3:1.3.1' // 使用okhttp3作为网络底层库
compile 'com.facebook.stetho:stetho-okhttp:1.3.1' // 使用okhttp作为网络底层库
compile 'com.facebook.stetho:stetho-urlconnection:1.3.1' // 使用urlconnection作为网络底层库
}
- 在
Application
中初始化
public class MyApplication extends Application {
public static OkHttpClient okHttpClient;
public void onCreate() {
super.onCreate();
// 一般使用默认初始化配置足够使用
Stetho.initializeWithDefaults(this);
// 如果需要查看网络请求相关信息(以使用okhttp3为例)
initOkHttpClient();
}
private void initOkHttp() {
okHttpClient = new OkHttpClient()
.newBuilder()
.addNetworkInterceptor(new StethoInterceptor()) // 这里添加一个拦截器即可
.build();
}
}
至此,我们的应用配置完毕。是不是超级简单?
接下来看怎么使用Developer Tools
查看应用的各种信息。
- 打开
Chrome
输入chrome://inspect
![Stetho简化Android调试(一) Stetho简化Android调试(一)](https://image.shishitao.com:8440/aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy8zNzU5MTY1LTJiOWNlYWVhYWM4Y2NmNzgucG5nP2ltYWdlTW9ncjIvYXV0by1vcmllbnQvc3RyaXAlN0NpbWFnZVZpZXcyLzIvdy82NzkvZm9ybWF0L3dlYnA%3D.png?w=700&webp=1)
如果第1、2步
配置正确的话,就可以看到以上页面。点击inspec
:
![Stetho简化Android调试(一) Stetho简化Android调试(一)](https://image.shishitao.com:8440/aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy8zNzU5MTY1LWVjMDk3ZWIxNjhiZTYxMGQucG5nP2ltYWdlTW9ncjIvYXV0by1vcmllbnQvc3RyaXAlN0NpbWFnZVZpZXcyLzIvdy8xMDAwL2Zvcm1hdC93ZWJw.png?w=700&webp=1)
注意:如果第一次启动,这个页面有可能会一片空白。因为Developer Tools
在连接远程服务器,这个连接需要*。如果页面加载成功后再次打开,就不需要*了。
Developer Tools功能说明
- Elements
![Stetho简化Android调试(一) Stetho简化Android调试(一)](https://image.shishitao.com:8440/aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy8zNzU5MTY1LTIxN2YzMWI2MmVkMDQ3MGIucG5nP2ltYWdlTW9ncjIvYXV0by1vcmllbnQvc3RyaXAlN0NpbWFnZVZpZXcyLzIvdy8xMDAwL2Zvcm1hdC93ZWJw.png?w=700&webp=1)
就像uiautomatorviewer.bat
工具一样,可以查看页面视图的层级结构。
- Network
![Stetho简化Android调试(一) Stetho简化Android调试(一)](https://image.shishitao.com:8440/aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy8zNzU5MTY1LTFjZTQyZGNjNTVmYTc1Y2IucG5nP2ltYWdlTW9ncjIvYXV0by1vcmllbnQvc3RyaXAlN0NpbWFnZVZpZXcyLzIvdy8xMDAwL2Zvcm1hdC93ZWJw.png?w=700&webp=1)
网络请求的会话信息都包含在这里,可以点击单个会话到详情,查看具体的报文信息。如下:
![Stetho简化Android调试(一) Stetho简化Android调试(一)](https://image.shishitao.com:8440/aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy8zNzU5MTY1LTcyYmI2ODNjZjQ0MjVlNjcucG5nP2ltYWdlTW9ncjIvYXV0by1vcmllbnQvc3RyaXAlN0NpbWFnZVZpZXcyLzIvdy8xMDAwL2Zvcm1hdC93ZWJw.png?w=700&webp=1)
- Resources
![Stetho简化Android调试(一) Stetho简化Android调试(一)](https://image.shishitao.com:8440/aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy8zNzU5MTY1LTYxZjRlOGI4ZGI1NzhhYWYucG5nP2ltYWdlTW9ncjIvYXV0by1vcmllbnQvc3RyaXAlN0NpbWFnZVZpZXcyLzIvdy8xMDAwL2Zvcm1hdC93ZWJw.png?w=700&webp=1)
在这个选项卡里面,就可以查看应用保存的信息,包括SharePreference
、数据库
,并且可以执行SQL语句
,直接修改SharePreference
的内容。如下:
![Stetho简化Android调试(一) Stetho简化Android调试(一)](https://image.shishitao.com:8440/aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy8zNzU5MTY1LWRkN2ZjOTlhYzdmMGU4NTkucG5nP2ltYWdlTW9ncjIvYXV0by1vcmllbnQvc3RyaXAlN0NpbWFnZVZpZXcyLzIvdy8xMDAwL2Zvcm1hdC93ZWJw.png?w=700&webp=1)
![Stetho简化Android调试(一) Stetho简化Android调试(一)](https://image.shishitao.com:8440/aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy8zNzU5MTY1LTIxYTQyYTgwOTZlOTJhYTEucG5nP2ltYWdlTW9ncjIvYXV0by1vcmllbnQvc3RyaXAlN0NpbWFnZVZpZXcyLzIvdy8xMDAwL2Zvcm1hdC93ZWJw.png?w=700&webp=1)
- Console
![Stetho简化Android调试(一) Stetho简化Android调试(一)](https://image.shishitao.com:8440/aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy8zNzU5MTY1LTZkNGIxMjU1MDAwODNlM2MucG5nP2ltYWdlTW9ncjIvYXV0by1vcmllbnQvc3RyaXAlN0NpbWFnZVZpZXcyLzIvdy8xMDAwL2Zvcm1hdC93ZWJw.png?w=700&webp=1)
该控制台允许使用JavaScript
代码与应用程序
或Android SDK
交互。如下:
![Stetho简化Android调试(一) Stetho简化Android调试(一)](https://image.shishitao.com:8440/aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy8zNzU5MTY1LTMwYzc0ZjFkODVhNDYzN2IucG5nP2ltYWdlTW9ncjIvYXV0by1vcmllbnQvc3RyaXAlN0NpbWFnZVZpZXcyLzIvdy8xMDAwL2Zvcm1hdC93ZWJw.png?w=700&webp=1)
context.getResources().getString(R.string.app_name);
运行以上代码可以得到应用下对应的字符串资源。
importPackage(android.util);
Log.d("WaitingAnd", "chuang");
运行以上代码可以在Logcat
打印一条日志。
importPackage(android.widget);
importPackage(android.os);
var handler = new Handler(Looper.getMainLooper());
handler.post(function() { Toast.makeText(context, "Hello Stetho", Toast.LENGTH_LONG).show() });
运行以上代码可以在应用中直接显示Toast
。
注意:使用Console
功能需要添加依赖,否则会提示Not supported without stetho-js-rhino dependency
compile 'com.facebook.stetho:stetho-js-rhino:1.4.2'
- Screencast
![Stetho简化Android调试(一) Stetho简化Android调试(一)](https://image.shishitao.com:8440/aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy8zNzU5MTY1LWJmYWE4MTE5MGM4MjVlM2EucG5nP2ltYWdlTW9ncjIvYXV0by1vcmllbnQvc3RyaXAlN0NpbWFnZVZpZXcyLzIvdy8xMDAwL2Zvcm1hdC93ZWJw.png?w=700&webp=1)
赶快用起来吧!_
作者:WaitingAnd
链接:https://www.jianshu.com/p/42303aa8299a
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。