自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(34)
  • 资源 (1)
  • 收藏
  • 关注

原创 LeakCanary应用与二次开发

内存泄漏检测利器——LeakCanary简介LeakCanary是由Square公司开源的一款安卓平台内存泄露检测工具,Square公司是一个开源大户,旗下优秀、流行的框架有OkHttp,Retrofit ,Picasso等等,其中OkHttp还被Google采用在安卓系统上,也就是说在版本稍高点的安卓系统上实现网络通信调用SDK里内置的网络框架——HttpUrlconnect,底层走的其实是...

2018-12-23 02:10:53 696

原创 Appium自动化之框架搭建

必要性    每一次软件发布新版本的时候,新的功能模块可能与旧的功能模块产生冲突,而导致原来的功能出现Bug,所以每次发版前都要做一次回归测试以保证原来的功能可以正常使用,而每次的回归测试都产生了重复的劳动力。为保证软件兼容性,每次的测试都需要在不同的平台上进行测试,而当前手机等Android设备五法八门,各种牌子,各种型号,所以往往要在多款手机上进行相同的测试来保证兼容性。显然,这些大量的重复劳...

2018-03-08 15:34:57 6155 2

原创 卡顿监测之远程收集log(潜入Bugly这趟顺风车)

一、问题背景接上一篇文章卡顿监测之真正轻量级的卡顿监测工具BlockDetectUtil(仅一个类)这篇文章实现了一个轻量级的卡顿监测工具,通过logCat输出log的形式找出卡顿的元凶,可以很方便的在开发中使用,但现在摆在眼前的问题就是当项目上线后,或者遇到无法查看logCat的情况,就不能查看监测的log,尤其是上线后在不同用户的各种各样的手机中,出现卡顿问题几率就更大了,这时候无...

2018-03-02 12:54:13 3562 1

原创 卡顿监测之真正轻量级的卡顿监测工具BlockDetectUtil(仅一个类)

一、背景    一直以来,应用的流畅度都关乎着用户的体验性,而体验性好的产品自然而然会受到更多用户的欢迎,所以对于广大的工程师来说,界面的卡顿优化一直是Android应用性能优化的重要一环。而当前应用卡顿监控的主要切入点有两个:1,利用UI线程的LooperUI线程的Looper的loop()方法中会一直从消息队列中取出msg,然后交给这个msg对应handler的dispatchMessage处...

2018-03-01 11:32:30 22890

原创 六、Android安全机制之NDK实现防钩子签名校验

    一、背景    一直以来,签名校验都是防Apk被反编译的重要措施之一,但是随着反编译技术的日渐发展,普通的签名校验方式已经可以被轻易的攻破了。这里对目前常用的签名校验方式及其破解法进行了梳理:1,Java层通过PackageManager获取签名信息进行对比×(hook掉与PMS交互的IPackageManager即可完美破解)2,Java层通过解压Apk包获取签名信息进行对比×(写在Ja...

2018-02-11 18:06:58 3144 6

原创 五、Android安全机制之反编译(你也可以拥有iPhone X)

    Android应用的反编译需要了解smali,熟练使用常用的反编译工具。比如apktool,Jd-jui,dex2jar,Android逆向助手,AXMLPrinter2,jadx,Xposed,IDA,APK改之理,AndroidKiller以及一些adb、aapt指令和windows批处理等。    关于反编译的流程和工具的使用方式,下面以一个反编译实例来进行阐述。首先明确我们的目标就...

2017-12-10 17:17:17 1410

原创 四、Android安全机制之数据加密

1、MD5    MD5,全名Message Digest Algorithm 5 ,中文名为消息摘要算法第五版,一种不可逆的hash算法,常用于只需加密无需解密的数据上,比如用户密码,也常用来保证数据的完整性,因为数据被篡改后,其加密后的MD5也会随之改变(不考虑碰撞的情况下),对比篡改前的MD5可确定数据是否完整;2、RSA    非对称加密算法,RSA的安全性依赖于大数的分解

2017-12-08 16:26:11 800

原创 三、Android安全机制之Apk防护

1、代码和资源混淆1. 代码混淆Android使用的ProGuard,起到压缩,混淆,预检,优化的作用,用法就是在build.gradle文件中minifyEnabled设置属性为true,然后在proguard-android.txt编写相应的规则,混淆是用“a b c”等字符替换程序类名、变量名和方法名,加大了反编译后代码的阅读难度,同时还有一个好处就是减少了Apk的体积。2. 资

2017-11-28 15:19:18 2807

原创 二、Android安全机制之系统防线

1、Android基于Linux内核的访问控制机制Android本质是基于Linux内核开发的,所以同样继承了Linux的文件访问机制,Linux文件系统权限控制由user、group、other与读(r)、写(w)、执行(x)的不同组合来实现的。同样,Android也实现了这套机制,通常情况下,只有System、root用户才有权限访问到系统文件。举个例子,做串口开发的时候,普通用户是无

2017-11-14 22:16:15 1246

原创 一、Android安全机制之前言

移动平台已经成为人们上网的主要方式。随着Android应用的普及,安全问题日益突出。出于商业利益的考虑,Android系统的所有者谷歌公司,一直回避公开讨论其安全性,国外的用户一般是从谷歌应用商店下载应用,由于谷歌自身安全机制的保障,其安全性不太可能出现大的问题。但是,中国用户无法直接访问谷歌应用商店,大都是通过国内大大小小第三方Android市场下载应用,而谷歌无法控制第三方的应用商店。因此,国

2017-11-12 19:14:50 740

原创 Appium自动化之踩坑日记

Appium1.7.0  在安卓7.0上无法模拟点击的坑    在开发者选项里,除了USB调试,还有一个USB调试(安全设置),必须得开启这个才能模拟点击,是一个大坑,因为无法从任何信息得知出问题是因为这里有这么一个未打开的开关,完全靠人品才能找到。。。版本查看    testng    java-client    appium-desktop使用AndroidStudi...

2017-10-11 23:47:41 1766

原创 安卓 手写消息机制

前言原理性的东西大家都很熟悉了,这里就不老生常谈了,主要是最近一位朋友面试遇到了此要求,希望我能帮他写出来,所以我简单地根据源码撸了大概的样子出来,流程基本有,主要是创建Looper,里面在创建维护着一个MessageQueen,再把Looper存入ThreadLocal,创建Handler,sendMssage的时候把这个Message的Target设置为当前Handler,然后把Messa

2017-09-27 20:12:23 419

原创 常用的cmd指令

windos:ipconfig 查看本电脑的IP地址adb:adb connect xxIP      连上xxIP的设备,可以进行调试和其他指令操作adb disconnect  xxIP   断开xxIP不输入IP则断开所有链接adb remount  获取读写权限adb install xxApk路径 安装xxApkadb unstall xx包名    卸载

2017-09-21 11:55:16 931

原创 TCP/UDP/LOCAL Socket C++的实现

前言        本篇文章主要是记录了Native层Socket的实现,包括TCP、UDP和LOCAL。一般来说,我们使用Socket通信都是通过调用Java层的Api来实现,而Java层Api最终也会走到Native层来具体实现,而且其实不管是http、tcp、udp还是bluetooth抑或是WifiDirect都是在Socket的基础上封装而来,只不过协议不同而已。虽然在开发中通过调用

2017-09-04 22:36:29 2285

原创 批量处理AS文件编码问题

当我们在AndroidStudio导入一个Module的时候,有可能会遇到文件编码问题,报一大堆错误如下所示:Error:(23, 48) 閿欒: 缂栫爜UTF-8鐨勪笉鍙槧灏勫瓧绗?Error:(23, 49) 閿欒: 缂栫爜UTF-8鐨勪笉鍙槧灏勫瓧绗?Error:(23, 50) 閿欒: 缂栫爜UTF-8鐨勪笉鍙槧灏勫瓧绗?Error:(23, 51) 閿欒:

2017-08-19 10:33:09 907 1

原创 Android 硬编实例

众所周知,安卓中视频编码分为软、硬编两种,而这两种的区别是,软编通过代码实现,占用cpu资源,效率较低,一般采用ffmpeg、x264实现,在长时间的编码过程中会造成机器发热,而硬编利用的是GPU、DSP或者FPGA等硬件芯片进行编码,不占用cpu资源,效率高,直播项目或者视频监控项目中,因为需要长时间(几小时乃至几天)的视频处理,所以基本上是首选硬编,硬编不能使用的时候才采用软编,在安卓平台中,

2017-08-10 22:17:18 1144

原创 Android 支持多个VideoView声音调节

有个场景就是一个页面里有多个VideoView播放视频,然后每个视频都有一个音量值,但是VideoView并不支持直接设置音量,而是要通过调节系统音量来实现,那么这样的话,就不能实现为每个视频独立调节音量了我们知道MediaPlayer+SurfaceView也能实现视频的播放,并且MediaPlayer是可以直接通过setVolume来调节视频音量的,但是因为这里已经用了VideoView实现了

2017-06-15 22:57:02 5644 2

原创 Android Hook技术实践

一、hook简介hook俗称钩子,主要作用是替换系统内存中的对象,在上层调用此对象的方法的时候可以修改传入参数或者返回值,达到欺骗上层的目的,就像小红帽故事里的大灰狼,通过扮演小红帽的外婆的角色来达到欺骗小红帽的目的。其实hook就是一种中间人劫持的思想,如图所示:在安卓中实现hook主要通过两种方式:1.反射技术和代理实现,当然代理不管是动态还是静态的都是可以实现的,但是只能ho

2017-06-06 23:15:49 1790

原创 重构ButterKnife

简介:        ButterKnife是一个编译时注解的框架,旨在通过注解的方式帮助开发者简化一些常用操作比如findViewByid(),setOnClick()等操作,而它的原理就是自定义一个继承于AbstractProcessor的注解处理器,添加支持的注解,然后在编译时会遍历所有的类文件,找到所有支持的注解回调给process方法,然后在这个方法里,通过javapoet生成相应的ja...

2017-05-07 02:19:29 2161

原创 CameraSurfaceView——Android Camera使用详解

本篇文章将围绕自定义控件——CameraSurfaceView来阐述Android Camera(非Camera2,因为Camera2只适应5.0+的安卓系统,而目前5.0以下还是大部分,所以当前的主流还是Camera)的使用详解,首先先介绍下CameraSurfaceView,这是一个集拍照,录像,闪光灯,摄像头切换,前后台切换,自适应横竖屏于一体的SurfaceView,而我们平常使用Came

2017-04-22 15:39:06 6127 3

原创 滑动关闭Fragment——SwipeBackFragment

SwipeBackFragment 是一个支持四个方向滑动关闭Fragment开源项目

2017-04-08 23:35:46 1893 1

原创 一探究竟之PullZoomView

我们先看效果图:       这是仿苹果app的一种下拉head拉伸的效果,这种弹性伸缩能给用户一种良好的体验,因此我们在各大主流app上也能看的到这种效果,而PullZoomView是一款在安卓能实现上述效果并且能实现视差效果的开源框架。今天让我们来对此框架一探究竟!先来看看项目结构:    此项目包括了:IPollToZoom,一个接口类

2016-04-23 18:34:01 2153

原创 解惑 -- static

static解惑,首先我们先来了解了解要解决的是啥惑,在了解之前,我们先来简单过一下static的应用,static关键字可修饰内部类、方法和变量,被修饰的元素将会独立存储于内存中的静态数据区,不随对象的创建而产生。被static修饰的变量具有了全局的属性,所以使用它便可以很方便在安卓中各种组件中进行数据的交互,然而,大量实例表明使用这种方式进行数据交互是不安全的,被static修饰的变量可能被回

2016-04-16 00:49:24 1706

原创 Android 数据加密算法总结

安卓中,不管是内网还是外网,数据的传输首要考虑就是安全问题,尤其是用户信息,以及各种密码等敏感信息。所以说,对数据的加密是很有必要的,尤其是当下物联网蓬勃发展的今天,数据安全尤为重要。因此本人总结了一下安卓中几种加密方式的实现:① MD5:一种不可逆的加密算法,常用于只需加密无需解密的数据上,比如用户密码,也常用来保证数据的完整性,因为数据被篡改后,其加密后的MD5也会

2016-04-05 00:13:27 5633 1

原创 Android 滑动冲突与解决策略

安卓开发过程中滑动冲突的情形主要有三类:① 父view与子view的滑动方向不同,如:父view左右滑动,子view上下滑动或相反;这种情形是比较简单的,只需要根据不同的滑动动作进行相应的拦截与处理即可。② 父view与子view的滑动方向相同,即,父view左右,子view也左右,父view上下,子view也是上下;这种情形需要根据具体情况来进行拦截处理,比如父View在出现子V

2016-02-03 18:01:55 2991

原创 记录Android-Studio遇到的各种坑

开此文章,主要是为了记录在使用虐我千百遍,我还待他如初恋的AS的过程中所遇到的各种坑,一来是希望做个记录,方便查找,防止再次踏入同样的坑;二来也希望能帮助到有遇到有跟我相同问题的人。1,首先每次导入一个新的AS工程的时候,肯定会有各种gradle配置问题,只要把build.gradle改为与自己系统相匹配即可,如果报Error:(1, 0) Plugin is too old, pleas...

2016-02-01 02:03:20 45500 7

原创 the latest ButterKnife and Android-Butterknife-Zelezny

这篇文章介绍ButterKnife及其配套的plugin —— Android-Butterknife-Zelezny的用法,基于最新版7.0.1官方文档网上有大多数旧版本相关文章介绍,还是使用着@InjectView注解,而新版本则用@Bind关键字注解使用@Bind 和 view ID 代替findViewByID :class ExampleActivity

2016-01-17 02:04:41 2336

原创 主从式App实现静默更新及root权限扩展

之前公司一个项目,项目需求为软件在后台自动更新,有新版本发布则自动下载并安装新版本。通过查阅了大量资料,了解了要想完成这件事情途径有两:1,       app需要拥有系统级别的身份。这就需要在系统源码中获取到系统签名,然后对生成的app进行签名,完了之后才能安装运行在系统上执行静默操作;2,      在已root系统上app获取到系统root权限,即可执行静默安装的操作。由于公司的

2016-01-10 14:43:05 2311 2

原创 Android 异步完全解析

安卓中实现异步任务的方式莫过于以下三种方式:.  其一 Thread  其二AsyncTask  其三 ExcutorServiceThread是安卓异步线程的基础,这里简单介绍一下他的两种实现方式及其更新UI的方式1,继承Thread private class MyThread extends Thread { @Override public void run

2016-01-04 02:15:26 2740 1

原创 Android 较复杂JSON的解析过程

因为它一层套一层,并且出现了JSONArray里面的子JSONObject又嵌套了JSONArray的情况,那么接下来别虚,跟随我的脚步一起来征服它,彻底的理解原生解析过程。

2015-12-22 01:54:40 2217

原创 Android SQLite高级操作之泛型对象操作

SQLite是一款广泛用于嵌入式设备上的轻量级关系型数据库,而在安卓设备的数据存储上更是有举足轻重的位置,所以SQLite的基本操作是每个安卓开发者必须掌握的技能。而它操作与用法在网上已经有大量的资料,博客可以参考。所以这里我也不老生常谈,直接进入主题介绍今天要谈的SQLite泛型对象操作。

2015-12-18 16:59:22 1481

转载 Android HTTPS SSL双向验证

一、HTTPS和HTTP的区别1、https协议需要到ca申请证书,一般免费证书很少,需要交费。2、http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议。3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加

2015-12-17 11:26:05 11193 2

原创 Android 代码混淆总结

-include {filename}    从给定的文件中读取配置参数   -basedirectory {directoryname}    指定基础目录为以后相对的档案名称   -injars {class_path}    指定要处理的应用程序jar,war,ear和目录   -outjars {class_path}    指定处理完后要输出的jar,war,ear和目录的名

2015-12-16 16:12:54 563

原创 Android 事件分发机制

事件分发所解决的问题:onTouch和onTouchEvent有什么区别,又该如何使用?为什么给ListView引入了一个滑动菜单的功能,ListView就不能滚动了?ListView的Item中有Button,onItemClick为什么会失效?等。。。什么是事件分发:事件分发就是当用户点击了屏幕,那么就触发了一个事件event,而这个事件在每一层的传递与分发过程就叫

2015-12-16 01:49:16 623

18b20数码管LCD显示过温报警

18b20数码管和1602和上位机同时显示过温亮灯蜂鸣器报警等

2014-02-19

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除