5 chwnpp2

尚未进行身份认证

暂无相关简介

等级
TA的排名 2w+

Expected a com.google.gson.JsonObject but was com.google.gson.JsonNull

发现调试日志中有如下异常日志:com.google.gson.JsonSyntaxException: Expected a com.google.gson.JsonObject but was com.google.gson.JsonNull查看对应代码: if (!TextUtils.isEmpty(refString)) { try { digPos...

2020-02-04 23:23:03

Replugin插件化框架核心原理

插件化技术随着360公司2016年DroidPlugin、2017年RePlugin的相继公布和开源,达到了顶峰。随后这几年进入了普及和落地期,到今天已不再新鲜和热门。但对于以插件化框架为基础架构进行业务开发的同学而言,熟悉其原理和具体实现,不仅是工作本身需要,也能增进Android内功的修炼。相信了解过Replugin的同学都知道,Replugin的最大特点是坑位和唯一Hook点。那么问题来...

2019-12-29 01:59:23

海神平台网络监控SDK(Android)开发经验总结

海神平台是我们自主研发的一个移动端质量监控平台,从去年7月份开始至今,已陆续上线了Crash监控、ANR监控、网络监控、自定义错误等功能,目前已接入了公司内10余款APP。针对Crash我们之前在《海神平台Crash监控SDK(Android)开发经验总结》一文中有专门介绍,本文会着重讲一下Android端在开发网络监控SDK过程中的一些实践和经验。希望大家能有所收获。一 完整网络请求的流程一...

2019-08-16 00:07:27

获取Android应用名称的方法

如何获取APP的名称?网上找到的方法是: public static String getAppName(Context context) { if (context == null) { return null; } try { PackageManager packageManager = context.getPackageManager(...

2019-08-05 18:04:37

海神平台Crash监控SDK(Android)开发经验总结

海神平台是我们自主研发的一个移动端质量监控平台,从去年7月份开始至今,已陆续上线了Crash监控、ANR监控、网络监控、自定义错误等功能,目前已接入了公司内近10款APP(不区分Android和iOS平台)。本文将主要分享Android端在开发Crash监控SDK过程中的一些实践和经验。希望大家能有所收获。一、Java层异常捕获系统提供了一个钩子:Thread.setDefaultUncau...

2019-07-09 16:02:17

如何解析没有Body体的Response

在开发过程中遇到一个问题:后端API返回的Response里没有Body,API成功与否是根据HTTP的status来表示的。那么APP端如何处理呢?如果使用的是Retrofit网络库,则将返回体置为“Void”即可。同步和异步的方法声明示例如下: @POST Call<Void> syncApi(@Url String url, @HeaderMap Map<...

2019-07-09 15:57:11

Linux环境下jenkins插件Gerrit Trigger配置--"/var/lib/jenkins/.ssh/id_rsa" does not exist.

Gerrit可以实现在线代码Review的功能,与GitLab的merge request功能相当。目前想在Gerrit的基础上增加静态代码扫描的功能,以进一步提升代码质量。网上搜到的技术方案是:Gerrit + Jenkins + Gerrit Trigger。一句话概括就是:在Jenkins上创建一个代码检查的工程,通过pom文件方式配置号第三方的静态代码扫描工具;Jenkins通过Gerri...

2018-07-13 16:30:41

小米手机上微信双开-初窥

在小米手机上,通过在设置页面,输入“应用双开”,可以进入APP分身的列表页面。列表中出现的是手机支持分身的APP,切换开关,即可开始分身。 选中微信进行分身后,桌面上出现了第二个有角标的微信。点开后使用,与本尊APP无差别。 但是通过adb命令调用微信的页面,发现打开的都是本尊微信,分身的微信无法被调用。 使用cmd命令查看,发现如下差别:shell@rolex:/ $ ps |gr...

2018-05-15 11:37:20

uiautomator使用总结

uiautomator是Android提供的一个UI自动化测试框架,一般与AndroidJUnit4单元测试框架配合使用。一、首先我们来编写一个demo:1.目录结构使用Android Studio创建新的project时,在app/src/目录下会自动创建三个子目录: androidTest、main、test。 如上图所示,我们将在androidTest目录下编写测...

2018-04-03 15:26:08

[Java基础]关于String的一些基础

参考: 1.几张图轻松理解String.intern() 2.Java技术——你真的了解String类的intern()方法吗关于String,会有这么几个经常提起的概念:==关系符,+号、new、intern,final,字面量、static,方法参数。 String是一种特殊的Java对象。注意,它归根结底还是一种对象。 首先要知道: new的含义是:在堆上创建一个新对象。 使...

2018-03-22 20:40:21

[Java基础]ArrayList的contains方法,你用对了吗?

最近在代码Review中发现,有同学错用了数组的contains方法。示例如下:public class ListItem { private int id; private String name; public ListItem(int id, String name) { this.id = id; this.name =...

2018-03-22 17:22:47

Java 下载解析Excel文件 报错:jxl.read.biff.BiffException: Unable to recognize OLE stream

项目开发需要先下载excel文件,然后解析出内容,最后将内容分批次下发给APP端。 在创建Excel的解析实例Workbook时,发现构造函数的入参是InputStream,心中窃喜。public static Workbook getWorkbook(InputStream is)随即就将从HttpURLConnection处得到的InputStream内存流传给了Workbook...

2018-03-13 12:20:16

Traceback (most recent call last): File "<stdin>", line 1, in <module> ImportError: No module named

在学习python的过程中会遇到如下错误:>>> import mytestTraceback (most recent call last): File "", line 1, in module>ImportError: No module named py>>>问题排查: 1.首先请在Python的模块默认目录中查看是否有“mytest.py”脚本;Windows下,

2018-01-31 19:44:25

APP版微信机器人技术方案详解

GitHub上有很多关于微信机器人的实现版本,这里讲一下如何在安卓手机上实现一个微信聊天机器人。思路大致都是一样的,突破口都是调用微信的网页版的接口,进行网页登录,进而获取到微信里的聊天内容,然后调用聊天发送接口将内容发送给微信。一、网页版的接口大致分为五类: 1.登录相关;接口jslogin、qrcode、webwxnewloginpage、webwxlogout 2.初始化相关;接口:web

2018-01-03 21:33:55

算法-数组元素循环右移

题目:有整数数组a,求其循环右移k位后的值,要求最小空间复杂度。 例如: int[] a = {1,2,3,4,5,6,7};循环右移5位后, 值为:{3,4,5,6,7,1,2}。 最基本的实现: public void toRightMove(int[] nums, int k) { if (k == 0 || k == nums.length) {

2017-12-07 12:00:37

算法 - 合并两个有序数组为一个有序数组

题目:有ListaList和ListbList两个有序数组,将其合并为ListcList。 如:ListaList = {1,3,5,7,9}; ListbList = {2,4,6,8,10}; 合并之后,cList为{1,2,3,4,5,6,7,8,9,10}.背景:这是算法面试中常见的题目,笔者经历中快手和昆仑万维,都出的是这个题。算法实现如下: private List<Inte

2017-11-30 10:35:53

快速排列

参考:搜狗百科 快速排序特点:基于分治法,选取某一个元素作为主元,将原集合分为三部分:左边集合的元素都小于等于主元,主元,右边集合的元素都大于等于主元。 然后利用递归思想,对左右两边的集合分别进行快速排序。快速排序在一般情况下是最实用的排序方法之一。算法在最坏的情况下运行时间为O(n^2),平均时间复杂度为O(nlogn)。。空间复杂度为S(1),即常数级空间。但需要注意递归栈上需要花费最少log

2017-11-14 12:45:54

android中通过代码实现文件权限修改

前提:1.手机被root; 2.该app已经取得了root权限。目的:试图获得系统文件夹下的文件的读写权限。实现:我们要使用的命令是:chmod -R 0777 xxx/xxx等系统目录或文件命令解读:在Unix和Linux的各种操作系统下,每个文件(文件夹也被看作是文件)都按读、写、运行设定权限。 读、写、运行三项权限可以用数字表示,就是r=4,w=2,x=1。所以,rw-r–r–用数字表示成

2017-11-13 17:06:02

字符串-组合

题目:给定一个字符集合,求其元素拆解后的所有组合。 如:给定集合{a,b,c},其元素拆解后的所有组合为:I/System.out: cI/System.out: bI/System.out: bcI/System.out: aI/System.out: acI/System.out: abI/System.out: abc参考:Java实现全排列、组合算法Java代码实现:

2017-11-13 16:31:34

字符串-放回全排列

题目:求一个字符集合的放回全排列。 如:{a,b,c},输出结果为27种:I/System.out: aaaI/System.out: aabI/System.out: aacI/System.out: abaI/System.out: abbI/System.out: abcI/System.out: acaI/System.out: acbI/System.out: accI

2017-11-13 16:11:23

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。