- 博客(42)
- 资源 (4)
- 收藏
- 关注

原创 学徒浅析Android——Android原生下载机制针对0K大小文件下载异常的分析
本篇文章已授权微信公众号 guolin_blog(郭霖)独家发布 最近在进行一次测试用例中,发现测试手机在利用本地下载功能下载0K大小的文件时,进度条一直处于进度模糊状态中,虽然查看本地存储路径,发现文件已经存在,但是页面上并没有提示下载成功,此时只能对下载执行暂停或删除操作。最初只是怀疑是自身应用的问题,但是在试了自己的华为畅享5s(Android5.1)、联想S560(Androi
2017-12-10 21:21:54
1653
原创 学徒浅析Android——根本原因分析
一个问题,可以停留在表面,也可以深究到根源。我们常说的直接原因其实是表面原因,而根本原因是指出导致出现该差异、缺陷或风险的原因,因此根本原因可能不在业务中。针对系统级问题,最好的解决方式就是从根源解决。而针对根源进行的根本原因分析的一个特点是当出现问题时,不仅要解决业务问题,还要解决人员问题和组织问题。这里本文只从业务问题层面来分享下如何分析根本原因。为了推进根本原因分析,首先需要澄清要找出原因的问题,也就是重新定义问题。
2024-01-01 11:09:45
1084
原创 Python往事:ElementTree的单引号之谜
最近在针对某款设备的界面xml进行更新过程中,被告知回稿的字串放在了一个excel文件中,而我要上传到服务器的界面用语是用xml文件封装的。再经过详细求证了翻译组提供excel文件的原因后,我决定用python来完成界面用语xml的更新,但是在使用ElementTree库的时候,却发现这个库有点小瑕疵。重新方案如下,先将源代码中的
2023-12-17 16:47:13
340
1
原创 学徒浅析Android——关于Handler的postDelay被立刻执行的问题
老生常谈的Handler还是会在工作中给自己惊喜。最近在一次日常的转测用例执行过程中,突然发现有个请求被立刻移除了。查看了下代码记录才发现是使用Handler#postDelay传入的延迟时间。
2023-03-19 22:48:36
610
原创 学徒浅析Android——斜体、依赖、NoClassDefFoundError
起这个标题是因为我想到了《死亡,爱,机器人》,看起来毫无关联的词汇,实际暗示着蛛丝马迹。最近在定位一个so引用问题时,就遇到了这种现象。异常日志很简单,如下所示:java.lang.NoClassDefFoundError: Failed resolution of XXXNoClassDefFoundError实际上就ClassNotFoundException。常见的类加载异常,如字面意思所说,没有从默认类路径中找到所需的类。实际上我一开始就说出了原因是什么,但是同事一句话让我不得不去证明他是
2021-03-07 13:26:19
605
原创 学徒浅析Android——从HandlerThread谈myLooper()和getMainLooper()
最近在一次线程扫描时,发现项目创建的大量HandlerThread都没有去执行手动释放操作。这也引起了我的好奇,虽然可以依赖垃圾回收机制,但我们也一直被灌输一种思想,垃圾回收不是实时的,Handler是容易内存泄漏的。所以你知道要去调用remove,要去配置弱引用。但当我们使用HandlerThread时,似乎因为它在主线程之外就不再顾虑,那真的是这样吗?围绕这个问题,就需要探讨两个基本问题:1、为什么要执行HandlerThread#start()2、myLooper和getMainLooper(
2021-01-10 08:44:55
1881
原创 学徒浅析Android——系统广播和广播权限保护
大家在学习安全编码规范中,会发现针对不想过度暴露的四大组件,都建议使用自定义权限的方式基于保护。尤其是可以作为通信方案的广播。一个规范的暴露广播配置方法如下:<permission android:name="test.test" android:protectionLevel="signature"/><uses-permission android:name="test.test"/><receiver android:name=".TestRecei...
2021-01-09 13:44:22
2012
原创 学徒浅析Android——基于Microsoft的OAUTH2.0认证(三)
第三章 MSAL API和Microsoft API的使用本章围绕Microsoft Authentication Library的使用讲述如何调用Microsoft API。目录小节如下:1.1 MSAL库常用API的介绍1.2 scope的配置1.3 GRAPH库的使用1.4 手动请求Microsoft API其他相关文章:基于Microsoft的OAUTH2.0认证(一):基本概念梳理基于Microsoft的OAUTH2.0认证(二):MSAL库的引用和定制基于Mi
2020-10-12 15:20:43
1499
原创 学徒浅析Android——基于Microsoft的OAUTH2.0认证(一)
之所以会做Microsoft的OAUTH2.0对应,完全是因为这个通知,时间结点是2020年10月13号,我在8月初才被告知这件事。当时并不觉得是个难点,毕竟微软是个大厂,大厂推出的服务变动都是有指导文件,抱着这份信任,开始着手对应这个变动,但也因此一步一步走向深渊。为了对后来者提供必要的帮助,确保不再走我走过得坑,所以写下这个系列,希望对大家有所帮助。本章将介绍跟Exchange、outlook相关的基本概念和术语,理解了这些术语和概念,将帮助你更直观的查阅Microsoft的文档。其他相关文章:基于
2020-10-09 11:27:06
784
原创 学徒浅析Android——基于Microsoft的OAUTH2.0认证(二)
MSAL库的引用和定制本章围绕Microsoft Authentication Library讲述两件事:1、如何引用MSAL库;2、如何对MSAL库进行二次开发。其他相关文章:基于Microsoft的OAUTH2.0认证(一):基本概念梳理基于Microsoft的OAUTH2.0认证(三):MSAL API和Microsoft API的使用基于Microsoft的OAUTH2.0认证(四):常见错误归纳1. msal库的引用...
2020-10-09 11:22:37
1432
4
原创 学徒浅析Android——chromium升级引起的em属性变更
最近在进行一项webview的展示测试时,用到了甲方提供的一个测试html,这个html中包含了最基本的html标签。本以为只是走走过场,没想到测出了一个bug——<ul>标签对应的小圆点不能显示了。并且这个测试html用手机搭载的chrome加载时是显示正常的。好在webview不会有修改样式这种逆天的本领,所以把调查重点放在了添加css的操作上。一番排除法后,发现是em这个属性搞的鬼。由于对html知之甚少,特意请教了前端大佬,现把em的变化跟大家分享下。根据w3c上的介绍,e.
2020-05-27 00:21:25
379
原创 学徒浅析Android——Role带来的角色扮演
在Q以前,如果我们的应用是一个短信或拨号之类的特殊应用,想要通知用户将我们的应用替换掉手机自带的预搭载应用,TelecomManager.ACTION_CHANGE_DEFAULT_DIALER和Telephony.Sms.Intents.ACTION_CHANGE_DEFAULT就可以帮我们实现。但在Q上,google改变这种处理方案,并推出了一个新特性——Role/RoleManager。从文档介绍来看,是提供管理应用服务的,最常见的就是默认应用切换功能。有了新的替代API,那么原先的T...
2020-05-18 20:30:38
5418
9
原创 学徒浅析Android——Android Q隐藏在Lock中的小bug(一)
距离上一篇文章过去半年了,要不是最近的一次偶然搜索,都快忘了这个账号的密码。谷歌还在一如既往的更新,我还在迷眼乱花中摸索。这不,最近在适配Android Q时,发现了一个源码造成的bug,并且这个bug是AndroidQ变更造成的。具体的问题描述如下: 解锁模式为password,在解锁页面输入5次错误密码,然后熄灭屏幕,等待30秒后,再进入解锁页面,此时输入框无法获...
2019-12-13 23:10:07
511
1
原创 学徒浅析Android——Android 8.0 Lock解锁流程
解锁流程1、Android8.0的Lock解锁处理统一由LockPatternChecker.checkPassword实现,LockPatternChecker.checkPassword提供了两个回调接口,其中onEarlyMatched()处理验证成功,onChecked处理验证失败。2、密码验证成功后,立刻执行KeyguardSecurityCallback#dismiss(tru...
2019-03-26 22:46:12
2198
原创 学徒浅析Android——系统文字大小的适配
Android系统的文字设置变更会影响到应用页面的展示,一般的APP都是禁止跟随系统文字设置进行变化的。1、针对系统字体变更的应对方法: (1)可以通过在AndroidMainfest.xml中配置configChange="fontScale"规避Activity生命周期的重启,当系统设置发生变更时,会引起当前应用的重启,声明周期变更为onDestroy()->onCreate()-&...
2018-07-01 10:41:45
1092
原创 学徒浅析Android——Android 8.0(O)后台服务的限制和变化
Android 最近几版的特色主要集中在省电和后台管理上,O的发布,对Service和Broadcast又近一步加强了管束。主要可概括为如下两点: 1、后台应用不被允许创建后台服务,必须通过JobScheduler或者Context.startForegroundService()进行创建 2、特定的隐式广播不再被允许启动,必须通过JobScheduler调用或者显式注
2018-07-01 10:19:58
5681
原创 学徒浅析Android——PreferenceActivity在Android 8.0和 7.0上细微变化
日前在利用PrepertyActivity配置设置页面时,出现了一个IllegalArgumentException崩溃,这个崩溃只在8.0系统的手机上出现了,在7.0及以下的系统中不会出现,后来经过追根溯源,发现原因是Android8.0的API变更导致的,先把分析过程分享一下,希望能帮助到有同样问题的同学,当时触发的崩溃如下:java.lang.RuntimeException:...
2018-06-24 13:10:58
850
原创 学徒浅析Android——从setContentView()角度分析View、Window、Activity三者关系
本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布参考码源:Android Oreo 8.0.0工具:Layout Inspector 我们在Activity的onCreate()方法中设置setContentView(),但是一直不明白其中的原理,正好公司在开展技术交流活动,分到的课题是View、Activity、Window的关系,借这个机会梳理一番。Activity生命周期的...
2018-04-06 23:34:52
7853
1
原创 学徒浅析Android——getDrawingCache()返回为NULL的原因
本篇文章已授权微信公众号 guolin_blog(郭霖)独家发布 在针对WebView使用getDrawingCache()进行当前屏幕截图时,发现返回的是NULL,同时在控制台看到logcat提示了一条异常信息,意思就是当前视图大小已经超过了缓存容量。内容如下:02-01 14:21:33.512 3461-3461/com.example.sample.job W/Vi...
2018-02-08 23:33:49
9135
2
原创 学徒浅析Android开发——windows64下FFmpeg编译问题汇总
最近在编译FFmpeg的过程中着实遇到了一堆问题,FFmpeg其实更适合在LINUX环境下进行开发和封装,因为它所依赖的编译工具和功能扩展插件在LINUX环境下更容易配置。而自己是在windows64环境下进行的编译工作,着实给自己找了不少事干。下面分享下自己在windows64环境下FFmpeg封装过程中遇到的编译失败问题,以供交流。先说明一下我的编译环境配置:系统环境:windows7
2018-01-25 18:51:08
3378
1
原创 学徒浅析Android开发——通讯录实时监听的设计实现
本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布大家在使用微信的过程中,可以发现微信的通讯录可以和手机通讯录保持一致的增删变化,这点特性属于应用的易用性范畴,今天就来讲讲如何实现该功能。 通讯录涉及到的表统一集中在contacts2.db中。其路径如下: /data/data/com.android.providers.contacts/datab
2017-03-22 22:07:26
2595
1
原创 学徒浅析Android开发——SO文件的混淆
.so(SharedObject)作用等同于windows环境下的.dll(dynamic link library)文件,我们在引用第三方SDK时,也会遇到需要调用相应的.so文件的情况,.so文件本事更多的是集成公共处理方法,当然有事也会用来保存重要的数据信息。对于应用的编译与反编译过程中,本地混淆一直是有效的方法。对于.so文件,同样也适用于混淆,.so文件虽然在使用破解工具IDA打开后
2017-02-05 14:46:15
7624
原创 WebView与JavaScript交互的一种可行性方案
WebView提供的网页和本地交互方式十分简单: setJavaScriptEnabled(true);addJavascriptInterface(Object obj, String interfaceName)PS1;一个自定义的接口名和一个用来JS调用的方法对象,就可以搭建一个JavaScript桥接接口。当然,简单就意味的着有漏洞,所以才有了后来的反射攻击PS2,and
2016-12-23 07:14:08
599
原创 学徒浅析Android开发:杂谈——仿QQ列表左右滑动效果
本篇文章已授权微信公众号guolin_blog(郭霖)独家发布 ListView可以说是最常用的控件了,所谓在平凡中创建不平凡,各种listView的衍生版本层出不穷。在商业应用中,一个item上堆放的信息不能太多,item本身的作用在于提供给用户快速选择的权利,信息堆放太多,反而无法让用户快速决定,所以简洁明了才是真。但是对于一些在场景中必要的功能按键,就需要找到合适的放置位置,尤其是现
2016-07-08 23:20:41
2142
4
原创 学徒浅析Android开发:杂谈——WebView的url跳转时方法执行顺序
在实际项目开发中,我们用到WebView的场景,大多是在对接协议、第三方应用或网页时出现。对于页面加载,WebView没有自带等待效果。所以,需要我们去自定义各种带进度条的WebView,网上相关的例子也是不胜枚举,今天我们就来谈谈一条地址请求在WebView中的跳转问题:WebView中有两个工具类负责管理网页各种行为:WebChromeClient和WebViewClient。分别通过se
2016-07-08 23:07:09
6026
原创 学徒浅析Android开发:第十四讲——Frame动画的滚屏操作
package com.example.scrollview;/** * @author Arthur Lee * @date 08/22/2014 * */import android.os.Bundle;import android.app.Activity;import android.content.pm.ActivityInfo;import android.view.M
2014-08-31 08:27:57
806
原创 学徒浅析Android开发:第十三讲——Tween动画
今天小编给大家介绍一下Android中动画的制作,动画就是讲静态的图片按照一定的次序,在短时间中展示,所以现在主流动画的帧数为24帧和30帧(即一秒播放24张静态图或30张静态图)。Android动画的制作分成两大类,一类是Tween动画,一类是Frame动画。Frame动画就是按照帧数播放静态图片。今天小编给大家介绍的是Tween动画,用Android提供的Amination类来对某些图片实现一
2014-08-16 08:02:45
692
原创 学徒浅析Android开发:第九讲——SpannableString,让文字活起来
package com.example.demo_tabwidget;/** * @author Arthur Lee * @time 07/13/2014 * */import org.xml.sax.SAXException;import android.os.Bundle;import android.app.Activity;import android.content.
2014-07-20 10:31:16
856
msal-1.5.0.zip
2020-10-08
Android滑屏及相关效果Demo
2014-05-29
Android屏幕自适应Demo
2014-05-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人