- 博客(56)
- 资源 (5)
- 收藏
- 关注
原创 武汉漂流记-第二集
刚入职的时候,因为还没有办下来门禁卡,每天都要找人申报,到门岗那儿填写信息,提供申报系统的推送短信验证码,还需要有人帮你签字(和大部分的重要机关单位类似)。我入职是某为的外包项目,办公室内是不允许带手机和智能设备进去的(耳机也不行),进出办公室前会有门禁岗的扫描(类似于火车站的安检门)。而且,最近也体会到了,上班时间,确实没时间看手机,别说看手机了,看工作消息都来不及。待我完全掌握了工作的流程,我相信,我绝对不会输给那些90后,00后的同学的。但是,我感觉,再待一段时间,我的强迫证马上就能治好了!
2024-08-22 23:53:11 240
原创 武汉漂流记-第一集
七月份,收到了一个郑州本地的大型公司的驻场外包,心里很高兴,终于可以上岸了。本来这几年确实在郑州有点儿太安逸了,我急切的需要新的环境、新的知识、新的视野去填充自身。某天突发收到了姐姐的信息,让我考虑下武汉的工作。刚开始的头几天确实很多公司主动给我发消息,渐渐地,我也发现了,全是外包,就果断拒绝了。六月份,打着休息的幌子,浑浑噩噩的度过了一个月,当我公开了boss和智联的简历,信心满满的期待着开始新的征途时,我发现,郑州的IT招聘市场一片惨淡。七月底,我来到了武汉,在公司附近租好房子,开始了我的武汉漂流记。
2024-08-21 21:34:37 167
原创 关于研发过程中的代码版本控制的思考
通常,在项目管理过程中,我们会对代码管控进行分类,比如分支、主干、基线等等。但是,有些项目,它需求来来回回反复变更(就好比女盆友的脸,说变就变),发包日期无法自主把控(犹如女盆友的大姨妈,时而提前,时而延后,让人终日不能心安)。简单的主干、分支管理根本无法解决那么多突发情况。(有时恨不得一行代码一个分支去干!夸张了哈)言归正传!下面是我在日常的项目代码管控中的一些思考与总结:研发-测试-发包,这是一个软件功能从研发到上线的基本流程,在流程中的每个环节都有相应的关键点。
2024-05-27 09:46:06 1042
原创 关于AAPT2 error: check logs for details 的问题分析定位与排查解决方法
一般都是jar包冲突导致的,尤其是support包,但是每次解决的时候,要么是误打误撞搞定,要么是懵里懵逼的解决。那就可能是,我们项目中的依赖包内依赖了不同的版本。待Fetching Gradle build models 消失后,就能看到dependencies中会存在多个依赖的列表,点击列表,就能在最右侧的框框里看到这个依赖包是谁引入的。首先看studio的编译日志,如果能从编译日志中看出具体冲突的jar包,就可以根据具体jar包找对应的模块进行进一步的排查分析了。找那些有多个版本的依赖包,如下图。
2023-10-09 20:18:42 608
原创 面试题猜想(二):String、StringBuffer和StringBuilder的区别
其实重新赋值的过程,是重新生成了一个String,然后把变量的引用指向了新的String对象。所以,String去修改内容,效率就比较低,因为要频繁的创建新对象,将指针指向新对象,然后GC还要回收旧对象,性能也更差。还有一点,就是通常对象创建,是需要new的,但是string却可以直接用双引号创建,这是因为在堆中,有一个字符串常量池,可以在常量池中创建string,如果常量池创建内容相同,其实就是同一个常量,也就是同一块内存地址。但是new的时候,是在堆中开辟内存空间的,两者有些区别。
2023-04-03 18:16:59 321
原创 反编译工具使用
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、工具准备二、使用步骤1.查看资源文件2.查看源码总结前言正常情况下,通过androidStudio直接编译打包的apk文件,是不带混淆和加固的,某些不法分子便可以通过工具反编译后,看到源码,进而分析出应用的业务逻辑。这与中山先生辛辛苦苦打天下,最后被袁世凯抢走胜利果实是同样的性质恶劣!当然,作为一个编程杀手(高手),反编译技能也是必备基本操作。毕竟钱老先生也曾说过:“手上没有剑,和有剑不用是两回事”。提示:以下
2021-10-18 15:03:02 1548
原创 Android混淆大法
Android混淆大法本文涉及内容:1.混淆的基本介绍,混淆的基本配置及示例2.如何进行多模块的混淆3.实际项目中混淆时会遇到的问题4.混淆后如何进行debug和日志查看文章目录Android混淆大法前言一、gradle 混淆开启二、混淆规则1.引入库2.读入数据总结前言混淆,主要作用就是对把项目的原本清晰的类名、方法名等转换为难易理解的a/b/c名字,不会改变原有的代码逻辑,但是会增大阅读难度。如果是为了应用安全,通常直接使用应用加固处理。但是,有些情况下,无法使用加固,但为了防止程
2021-07-30 11:59:33 862
原创 解决白屏、黑屏问题,优化欢迎页显示
文章目录前言一、为什么会出现黑屏、白屏?二、怎么解决?1.图片变形怎么办?2.出现留白怎么办?3.跳转动画如何去掉?4.解决办法三、看看别人家的应用总结前言你的应用是否出现过,启动后白屏、黑屏、响应慢等问题? 想不想像微信、QQ那样秒启动?想学吗?我教你呀,哈哈哈哈哈一、为什么会出现黑屏、白屏? 这一切还得从android进程的起源说起:据说,在很久很久以前… … &nb.
2021-03-12 17:51:05 610
原创 SimpleDateFormat:日期格式化产生奇怪的日期数据
日期格式化产生奇怪的日期数据问题现象:查找原因解决办法测试及验证方案问题现象:作为一名有想法的设计师(不,是程序员),为了方便公司的平台应用查看所有的网络请求数据以及PDA(大砖头掌机)的操作数据,我将所有的请求及返回数据等等等…巴拉巴拉的数据(当然只有debug模式才存储),都保存到了手机的固定目录下,并使用****+****+*****+日期.log 进行保存。想法很不错吧,哈哈哈(其实也就那样儿…)BUT:却偶然被测试发现一个问题,有时日志文件会出现2020001217.log这种非主流(sb)
2020-12-17 23:42:11 811
原创 android studio 如何重新关联svn项目【或者已关联项目如何切换版本控制系统(svn转git)】
对于如何通过android studio 首次关联项目,导入项目,share到svn这种简单的问题,网络上百度一坨又坨,我就不再讲了,主要讲下有些百度不到的问题:如遇到以下情况:第一种情况:通过 svn客户端 检出项目到文件夹,然后将项目导入到android studio。 发现,android studio没有和svn关联,并且创建文件后,也没有加入到版本控制(需要手动右键点击文件加 ad...
2019-06-12 19:22:47 4199 3
原创 Glide加载图片模糊问题
关于Glide加载图片模糊需求: 1.整张界面展示大图,可缩放。 2.在无网络情况下,展示缓存图片; 3.大图要清晰。1.缩放控件可以直接从网络上找,遍地的自定义view。由于项目里面用的有环信,所以直接用环信里自带的EasePhotoView了。2.通过详情点击进入大图展示。详情页面加载图片时使用: Glide.with(mContext) ...
2019-04-18 17:59:15 8994
原创 android进阶---【注解(二)之自定义编译期注解】
android进阶---注解二之自定义编译期注解自定义编译期注解1.基本知识了解1.1APT1.2AbstractProcessor2.AbstractProcessor的API介绍2.1.void init(ProcessingEnvironmentprocessingEnv)方法:2.2SourceVersion getSupportedSourceVersion()2.3.Set getSu...
2019-04-02 19:08:03 1176
原创 android进阶---【注解(一)之运行时注解】
android进阶---注解注解1.什么是注解2.注解的产生3.注解的基础介绍3.1元注解3.2运行时注解与编译时注解区别4.自定义注解4.1自定义编写规则4.2自定义运行时注解注解注解这个概念,有些人可能会有些陌生。但是撸过代码的人应该都见过@Override,有用过ButterKnife,Glide,GreenDao等等这些框架,当不用再写那么多行的findViewById,不用再为图片...
2019-03-28 15:36:05 688
原创 android studio配置:compile、implementation、api、compileOnly的使用
当使用gradle 3.x时候,大家会发现,以前引入jar包或依赖modle时所使用的compile,当build时会报出警告,让使用implementation或api。我和大多数人一样,有强迫症,既然给了提示,就改呗。但是用implementation还是用api呢?试了下,两个都可以用啊,也没报错。但是查了下,还是有区别的。implementation:表明Molde内部使用的jar...
2019-03-20 15:38:33 4849
转载 android studio 配置:minSdkVersion、compileSdkVersion、targetSdkVersion区别
minSdkVersionapp能够运行的最小api版本。限制了app对手机Android系统版本的支持.如果minSdkVersion = 19 ,那么手机系统api 低于19的就无法安装此appcompileSdkVersion开发环境编译的sdk版本。本质上改变不了我们程序的运行,虽然可能会报错误❌或者警告⚠️,但compileSdkVersion 只会在编译期间起作用.意思是...
2019-03-20 13:49:56 1338
原创 关于Zxing生成DM二维码变形问题总结
使用Zxing生成DM码不是正方形的问题在hints中增加hints.put(EncodeHintType.DATA_MATRIX_SHAPE, SymbolShapeHint.FORCE_SQUARE);//设置样式:不设置,正方形,矩形SymbolShapeHint.FORCE_NONE 默认SymbolShapeHint.FORCE_SQUARE ...
2019-01-08 17:53:05 5469 2
原创 关于debug时的断点无效问题 [已解决,不知原因]
今天写aidl通信时,遇见一个很奇怪的问题.服务端service写完之后, 客户端bindService后,我想debug下看看走没有走onServiceConnected方法(因为之前经常因各种小问题无法连接上.),发现onServiceConnected内的断点没有走,但是呢! log日志输出了!!!仔细一看,打的断点跟其他的断点有区别! 没有对勾!!! 如图:无论是onService...
2018-11-30 11:05:39 10233 3
原创 内网开发--离线配置Android Studio Plugin(离线配置GreenDao)
相信大部分的开发者不会遇到这种情况,但是很不幸。现在我所在的公司就是这种情况:用于代码开发的笔记本不允许上网,甚至U口都是被限制的!!!当然可以用另一台电脑查资料是可以的(华为盒子)。说实话这种开发模式,会给程序员造成很大的开发阻力。。。。这里面的苦,七天七夜也说不完。不说了。 Android Studio引用在线jar包或引用第三方插件Plugin配置的方法,相信大家都是知道的,...
2018-02-26 17:28:08 3947 3
原创 unknow host service.gradle.org, you may need adjust the proxy settings in gradle
我们将其他项目导入到android studio 中的时候,如果gradle版本不对,经常会出现:解决办法很简单,只需要在工程的build.gradle 文件中 将 classpath 修改为当前的gradle版本即可。 什么?你不知道当前gradle 版本号是多少? 最简单无脑的方法:新建一个项目,然后看看里面的工程build.gradle中的 classpath是多少,ctrl c —ctr
2017-09-25 10:26:56 14753 3
原创 Rxjava源码浅析(一)观察者模式
观察者模式是什么?百度上面的解释不少吧。如果之前并没有深入了解过,是不是看完之后,和我一样,一脸的问号????? 先看下比较官方的解释: 定义:定义对象间一种一对多的依赖关系,使得当每一个对象改变状态,则所有依赖于它的对象都会得到通知并自动更新。 本来就不懂的我,表示看完之后都有些怀疑自己的职业生涯了。俗话说,没有学不会的学生,只有不会教的老师,除非…. 没有除非!我们看下扔物线给 An
2017-09-12 15:09:12 353
原创 自定义view---带标签的CalendarView
人老了,就容易暴躁。直接上图,暴躁如我。 功能: 1.当天会有一个蓝色半弧标志 2.如果某一天 签到了,会显示“小爪子”图片 3.如果点击了某一天,则会显示灰色圆形选中状态 4.每一天的底下可以有不同的小颜色点,表示当天的出勤状态(让服务器哥们算好,别弄叉了数据)这是一个简单的自定义控件,总的来说,没什么技术含量(虽然我搞了两天才弄出来),不过还是希望能分享下,要不
2017-05-26 17:34:22 2782 2
原创 关于Recyclerview删除item后的数据乱跳问题
recyclerview的使用就不多说了简单使用自己看吧,很easy使用recyclerview,有很多炫酷的效果,比如item的插入,item的删除,item每个条目的加载动画,都可以自己去设置,当然也有默认的动画。需求逻辑: recyclerview列表里面有1 , 2,3,4四个item。现在通过点击item3(position =1)进入详情,在详情里面删除此条目,在返回到recy
2017-05-19 18:36:31 2925
原创 自定义viewGroup 为什么不走 onDraw方法?
自定义viewGroup的时候你一定会迫不及待的暴躁如我的去在onDraw方法中绘制,但是你会发现,onDraw方法根本就不会被调用(简直是日了哈士奇了)。其实看下viewGroup中的源码,上面就已经写的清楚了。ViewGroup doesn`t draw by default viewGroup在默认情况下不进行绘制,也就是说viewGroup默认是不会调用onDraw方法的。(我擦类,这怎么办
2017-05-04 16:40:24 3902 3
原创 一个有趣的算法题
今天看到一道很有意思的算法面试题,因为之前很少研究算法,好奇心加上暴躁的脾气,就决定一定要干掉这道题:5个小姐站成一列 他们的姓不同 衣服颜色不同 和不同的饮料 样不同的宠物 吃不同的水果 1钱小姐穿红色的衣服, 2翁小姐养一只狗, 3陈小姐喝茶。 4穿绿衣服的站在白衣服的左边, 5绿衣服的再喝咖啡, 6中间的在喝牛奶, 7吃西瓜的养鸟,
2017-05-03 22:41:15 1216
原创 Android 6.0 运行时权限 在实际商业项目中的使用
网上关于 6.0 运行时权限的文章不少,我做这个项目的时候也是从这些文章中一步一步了解的,现在整理分享给大家:CSDN:鸿阳大神的 Android 6.0 运行时权限处理完全解析博客园:谈谈Android 6.0运行时权限理解http://www.cnblogs.com/Fndroid/p/5542526.htmlhttps://blog.coding.net/blog/understanding-
2017-04-28 18:27:21 396
原创 AndroidStudio Junit测试
为什么不讲Eclipse的Junit测试(Eclipse?你说的是被谷歌扔掉的那个?)孔圣子说:不暴躁的程序员不是好工程师。直接上图: 首先:只需要导入外部依赖(仅此而已,不需要其他社么xml配置什么的。AndroidStudio 2.1.1版本) 创建一个需要测试的java类(注意:类中最好不要使用log输出)public class TestAc { public void show
2017-04-19 15:46:51 4470
原创 设计模式---装饰者模式
首先,从字面意思上看,“装饰”? 可以联想到什么? 对,买房子嘛(吐槽下,房价真tm贵) 有句话说的好,“房子是用来炒的,不是用来住的”。啊呸,错了,说反了。房子买的时候,大部分都是毛坯,或者简装。每个人肯定都想装修一下。对,没错。“装修”的前提,肯定是有了一个房子,它没有满足你的某些需求,然后你在此房子的基础上进行了一些功能添加和扩展。废话不多说,来了解下“装饰者模式”: 什么是装饰者模式
2017-04-19 15:25:30 327
原创 自定义view(五):自定义view使文字居中对齐显示
接着上一篇文章 自定义view(四):自定义view实现动态按钮 今天在自定义view中加上一个文字显示。 本以为,这个挺简单的,但是没想到文字加上后,发现不居中。设置了 mPaintTv.setTextAlign(Paint.Align.CENTER);发现只能文字左右居中,上下依然不是正中心。like this 中间的红线是中心线,但是文字却不是跟中心对齐的,而是文字底部
2017-04-15 14:12:41 4788
原创 自定义view(四):自定义view实现动态按钮
暴躁的你是不是已经迫不及待要看效果图了 :看下面(你们看不到输入框,看不到,看不到,一定不能看到) 分析: 这个效果可以分割为两个阶段: 一、开始绘制中心的小圆,半径不断变大,直到半径等于button的高度的一半 二、当圆的半径达到button高度一半时,开始绘制圆角矩形。圆角矩形左右边距不断扩大直到达到button宽度的一半,而高度始终和button的高度一致这里涉及到一个问题,怎么实现动
2017-04-15 12:03:23 447
原创 自定义view(三):onDraw 之 Canvas
onDraw(Canvas canvas)中的重中之重—-Canvas Canvas是onDraw中贯穿整个方法的类。 那么让我们来看看Canvas里都有啥方法,(达康书记说:麻蛋,源码里方法太多,这锅我不背。)我就对几个常用的方法列举下:drawARGB(int a, int r, int g, int b)和drawColor(int color) 不用画笔,直接填充画板颜色drawA
2017-04-13 15:47:56 1228
原创 自定义view(二):onDraw 之 Paint
再来回顾下上一篇 自定义view(一):onMeasure介绍的自定义view的三个重要方法: onMeasure(int widthMeasureSpec, int heightMeasureSpec) onLayout(boolean changed, int left, int top, int right, int bottom) onDraw(Canvas canvas
2017-04-13 11:21:56 791
原创 自定义view(一):onMeasure
首先呢 自定义view 肯定是继承自View类了,而View中关于我们需要重点关注的也就三个方法: onMeasure(int widthMeasureSpec, int heightMeasureSpec) onLayout(boolean changed, int left, int top, int right, int bottom) onDraw(Canvas canv
2017-04-11 18:25:38 356
原创 CoordinatorLayout+AppBarLayout+CollapsingToolbarLayout+Toolbar实现app的折叠效果
做程序的,一定要脾气暴躁,别说话,上图—– 由于这个页面的业务逻辑比较复杂(真想把产品拖出去打死,如果我们有产品的话),下面看我手绘的分析图最外层跟布局是android.support.design.widget.CoordinatorLayout 它有两个子view A. 上面 的android.support.design.widget.AppBarLayout AppBarLa
2017-04-06 17:19:24 1127
原创 AndroidStudio 生成aar和jar包
通常的应用library文件是这样的,module在项目中作为一个库文件存在,如图示1。但是,有的时候为了方便,也会把module打成jar包或aar包放在libs中,如图示2 。如何将module转换成jar包呢?非常简单:只需要将项目运行编译,在如图位置就会生成jar包:build--intermediates--bundles--class.jar如何将module转换成arr包呢?也非常
2017-03-30 16:30:52 540
原创 设计模式---单例模式
传送门:单例模式的优缺点和使用场景–http://www.cnblogs.com/damsoft/p/6105122.html 单例模式的好处:–http://blog.csdn.net/ljhljh8888/article/details/8017701/为什么要用单例? 一个类Class只有一个实例存在,限制实例的个数,节省内存,有利于Java垃圾回收(garbage collection)
2017-03-29 11:32:04 227
原创 查看apk 签名 + 查看keystore的sha1和md5
1.查看apk签名: 将apk解压,找到解压包中的 META-INF 文件下的 CERT.RSA 文件 在电脑上找到jdk中的keytool文件,在地址栏输入 cmd + 回车键在命令行输入 keytool -printcert -file CERT.RSAM的完整路径然后会打印apk的签名证书的md5值,通过此值与正式签名文件对比2.查看keystore的sha1和m
2017-03-18 18:36:18 4600
原创 Android studio 通过build.gradle 配置打包签名文件,生成 xxx.apk
如果想要知道怎么生成签名 ,请走这里—》http://blog.csdn.net/sinat_26710701/article/details/63262419Android studio 通过配置 build.gradle 可以 在debug的时候配置签名: 首先,为了方便,我一般都会把签名文件放到项目中的appkey文件夹中(名字随便起)然后,想要配置,需要在图中的build.gradle文件
2017-03-18 17:36:58 1868
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人