使用LogPhoneUtil工具类在Android手机保存APP运行日志
最近公司的测试老是提出这样那样的bug,当然也怪自己代码写的烂,所以测试总是会把app搞崩溃,而他们那边崩溃的时候还没有日志打印,自己回来再重现有的时候还真不好复现出来,因此麻烦事就来了。为了方便查看测试手机的bug原因,周末在家专门写了个小工具,只要在项目的Log类中打印的时候添加LogPhoneUtil类的打印,就可以方便的在app的运行手机上保存日志了。简单介绍一下思路,源码在GIthub上,也可自行查看。https://github.com/MuBob/PhoneLogUtil;
首先编写日志文件管理类FileUtil,用于检测sdcard是否存在,从而创建不同目录下的日志文件。
之后创建对日志文件进行读写的IOUtil类,用于操作文件流进行文件写入操作。
最后创建LogUtil类,在打印的地方分别调用该类相应的过滤词就可以了。
简单的三步,关键是在LogUtil类中对文件进行读写时,为了不在主线程操作从而引起界面卡顿现象,需要开启子线程,而开启子线程的话就需要对日志文件加锁操作,这样就可以轻松的使用这个工具类了。
使用LogPhoneUtil工具类在Android手机保存APP运行日志的更多相关文章
- 关于Android的Build类——获取Android手机设备各种信息
经常遇到要获取Android手机设备的相关信息,来进行业务的开发,比如经常会遇到要获取CPU的类型来进行so库的动态的下载.而这些都是在Android的Build类里面.相关信息如下: private ...
- [原创]JAVA号码工具类:实现手机固话号码判断与区号截取
工具类说明 该工具类主要是用于判断号码的类型,如果是手机类型,则返回号码前7位,便于后面继续判断号码归属地:如果是固话类型,则截取固话的区号,同样也是为了后面判断号码的归属地. 在获取到这些信息之后, ...
- android手机访问app网页报错:net::ERR_PROXY_CONNECTION_FAILED
手机访问网页报错:net::ERR_PROXY_CONNECTION_FAILED 手机访问app中嵌入的html网页报错: net::ERR_PROXY_CONNECTION_FAILED 原来是手 ...
- TelephonyManager类:Android手机及Sim卡状态的获取
TelephonyManager这个类很有用,可以得到很多关于手机和Sim卡的信息. 直接上注释后的代码,请享用 package net.sunniwell.app;import android.ap ...
- 【工具类】获取手机sim卡的运营商
加入权限:<uses-permission android:name="android.permission.READ_PHONE_STATE" /> package ...
- Toast工具类,Android中不用再每次都写烦人的Toast了
package com.zhanggeng.contact.tools; /** * Toasttool can make you use Toast more easy ; * * @author ...
- ValidateUtil常用验证工具类,如手机、密码、邮箱等
package cn.com.ssk.util.utils; import java.util.regex.Pattern; import org.apache.commons.lang3.Strin ...
- Android 分享一个SharedPreferences的工具类,方便保存数据
我们平常保存一些数据,都会用到SharedPreferences,他是保存在手机里面的,具体路径是data/data/你的包名/shared_prefs/保存的文件名.xml, SharedPrefe ...
- 摘录android工具类
import android.content.Context; import android.content.pm.PackageInfo; import android.content.pm.Pac ...
随机推荐
- Postgresql操作json格式数据
1.select array_to_json('{{1,5},{99,100}}'::int[])
- Migrate from ASP.NET Core 2.0 to 2.1
http://www.talkingdotnet.com/migrate-existing-aspnet-core-2-application-aspnet-core-2-1/ https://doc ...
- Oracle 基本知识回顾
1.查找数据库所用的字符集编码:SELECT USERENV('language') FROM DUAL;2.将一个表中的字段,插入到这个表:INSERT INTO TABLE SELECT * FR ...
- 数字对讲系统开发札记(前端linux c 后端 c#)
前言 数字化是一种趋势,特别是在“提速降费”的大环境下,这种趋势愈发明显.对讲机这种古老的系统也处在时代的变革之中,虽然手机的功能越来越强,让人怀疑对讲机是否还有存在的必要.诚然,对讲机仍然有它的市场 ...
- rfc2818 --- HTTP Over TLS
协议链接 本协议描述了如何使用TLS来对Internet上的HTTP进行安全加固. 2.1. Connection Initiation(链接初始化) HTTP client同时也作为TLS clie ...
- DataAnnotations - InverseProperty Attribute:
DataAnnotations - InverseProperty Attribute: We have seen in the Code-First Convention section that ...
- OOA/OOD&UML部分
UML是什么?有哪些常用的图? UML是标准的建模语言:常用图包括:用例图.静态图(包括类图.对象图和包图),行为图.交互图(顺序图.合作图),实现图. 简述一下Singleton模式. Single ...
- [android] 手机卫士关闭自动更新
保存数据的四种方式,网络,广播提供者,SharedPreferences,数据库 获取SharedPreferences对象,通过getSharedPreferences()方法,参数:名称,模式 例 ...
- 【读书笔记】iOS-nonatomic
原子性atomicity(nonatomic),是关系线程安全的,但是会影响性能.如果确定不考虑线程安全问题可以使用nonatomic. 参考资料:<iPhone与iPad开发实战-iOS经典应 ...
- for each....in、for in、for of
一.一般的遍历数组的方法: var array = [1,2,3,4,5,6,7]; for (var i = 0; i < array.length; i) { console.log(i,a ...