开源组件DoraemonKit之Android版本技术实现(二)

一、引言

​ DoraemonKit是滴滴开源的研发助手组件,目前支持iOS和Android两个平台。通过接入DoraemonKit组件,可以方便支持如下所示的多种调试工具:

​ 本文是DoraemonKit之Android版本技术实现系列文章的第二篇,主要介绍各个常用工具的技术实现细节。

二、技术实现

2.1 app基本信息

​ 很多时候,我们在开发或者调试的过程中需要查看一些手机或者app相关的参数,这些参数类似手机型号、操作系统版本和应用包名等。正因为有这样的需要,DoraemonKit提供了汇总的app基本信息展示功能。

如何获取信息

​ 信息主要分两大类,一类是手机信息,一类是App信息。手机信息主要通过Build类获取,App信息主要通过Context及其相关类获取。

通过Build类获取信息

​ 下面是Build类可以获取到的常用信息:

字段 含义 示例
Build.BRAND 品牌 Meizu
Build.MANUFACTURER 厂商 Meizu
Build.DEVICE 型号 mx3
Build.VERSION.SDK_INT SDK版本 19
Build.CPU_ABI CPU ABI armeabi-v7a

​ Build类主要是通过读取/system/build.prop文件中的配置,比如Build.MANUFACTURER就是其中ro.product.manufacturer对应的值,Build类中的值是系统预先读取在内存中的,也可以不通过Build类直接读取build.prop文件。

通过Context类获取信息

​ Context类是Android系统中最重要的类,是App和系统之间的纽带,通过App的Context可以获取App相关的信息,如App的包名:

String packageName = context.getPackageName();
复制代码

​ 获取应用图标:

Drawable icon = context.getResources().getDrawable(context.getApplicationInfo().icon);
复制代码

​ 获取应用名:

String label = context.getString(context.getApplicationInfo().labelRes);
复制代码

​ 判断权限:

if (ContextCompat.checkSelfPermission(context, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED
        || ContextCompat.checkSelfPermission(context, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
    LogHelper.d(TAG, "No Location Permission");
    return;
}
复制代码
2.2 文件浏览

​ 在开发和调试过程中经常需要查看一些App自有目录的文件内容,虽然Android系统通常会提供文件浏览器的系统应用,但是因为App自有目录中大多数属于私有目录,所以如果App可以集成一个自己的文件浏览功能就可以很方便地查看私有目录中的文件,比如sharedprefs配置。

​ 通过context获取私有目录的文件信息:

fileInfos.add(new FileInfo(context.getFilesDir().getParentFile()));
fileInfos.add(new FileInfo(context.getExternalCacheDir()));
fileInfos.add(new FileInfo(context.getExternalFilesDir(null)));
复制代码

​ 然后就可以根据File信息展示当前文件夹的信息,同时也可以拿到子文件的信息,填充列表的Adapter就可以展示如上图所示的文件浏览器。

​ 哆啦A梦目前支持图片查看和文本查看,默认的查看方式是文本查看,判断文件种类的方式是根据文件后缀。

public static String getSuffix(File file) {
    if (file == null || !file.exists()) {
        return "";
    }
    return file.getName()
            .substring(file.getName().lastIndexOf(".") + 1)
            .toLowerCase(Locale.getDefault());
}
复制代码

​ 哆啦A梦也支持分享到第三方应用查看,是通过FileProvider对外分享的,只有通过FileProvider才能将私有目录中的文件分享出去:

Intent intent = new Intent(Intent.ACTION_VIEW);
Uri uri;
uri = FileProvider.getUriForFile(context, context.getPackageName() + 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
最近代码和Demo请到https://github.com/didi/DoraemonKit 下载。如果感觉还可以,给颗star吧。 一款适用于iOS App的线下测试工具集合。 【App信息查看】快速查看手机信息,App信息,权限信息的渠道,避免去手机设置查找或者查看项目源代码的麻烦。 【沙盒浏览】App内部文件浏览的功能,并且能通过airDrop或者其他分享方式上传到PC中,进行更加细致的操作。 【MockGPS】App能定位到全国各地,支持地图地位和手动输入经纬度。 【H5任意门】开发测试同学可以快速输入H5页面地址,查看该页面效果。 【日志显示】每一条日志信息,都在在App的界面中显示出来,再也不需要导出日志这么麻烦。 【帧率监控】App 帧率信息提供波形图查看功能,让帧率监控的趋势更加明显。 【CPU监控】App CPU使用率信息提供波形图查看功能,让CPU监控的趋势更加形象。 【内存监控】App 内存使用量信息提供波形图查看功能,让内存监控的趋势更加鲜明。 【流量监控】拦截App内部流量信息,提供波形图展示、流量概要展示、流量列表展示、流量筛选、流量详情,对流量信息统一拦截,成为我们app中自带的“Charles”。 【自定义监控】可以选择你要监控的选项,包括FPS、CPU、内存、流量。监控完毕之后,把数据保存到本地,也可以导出来做更加细致的分析。 【颜色吸管】方便设计师UI捉虫的时候,查看每一个组件的颜色值是否设置正确。 【组件检查】可以抓取任意一个UI控件,查看它们的详细信息,包括控件名称、控件位置、背景色、字体颜色、字体大小。 【对齐标尺】参考Android系统自带测试工具,能够实时捕获屏幕坐标,并且可以查看组件是否对齐。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值