自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Jitpack开发阶段使用SNAPSHOT

利用Jitpack上传包,想必大家都会。但是在开发阶段,遇到问题要及时的修改,修改完还要立马跑起来看效果。但是按照releases的方式太麻烦,要不停的操作github还要改项目中的版本号。在Jitpack上,Releases项右边还有Builds、Branches、Commits,点到Branches里,有个master-SNAPSHOT,把它替换到版本号。这时候其实还不是实时的拉取最新的修改,需要在```dependencies {}```同级别下添加```..

2022-01-12 22:34:29 368 1

原创 tinker热修复成功的版本配置

一旦升级gradle/tinker/android studio必会出现热更新失效的问题,甚至生成补丁,都会报一堆乱七八糟的错误,这里希望大家都踊跃提供下可以正常打包、打补丁、完成热修复的配置,让后来者不再迷茫。tinker热修复更新成功gradle:3.4.1gradle-5.4.1-bin.ziptinker-support:1.2.0tinker-android-lib:1.9.14.6android.enableR8=falseGradle JDK 11 11.0.1.

2021-09-12 11:43:57 531

原创 SAP系统接口对接历险记

一第一次接手sap系统的客户端软件开发,还要涉及到串口调试,完全是个未接触过的领域。拿到设备后,按照老板给的需求文档,把界面垒完了。开始调串口,但是串口怎么打开,我一脸懵逼,问老板,想找死啊拿着设备装了一堆串口调试工具软件,也没搞明白串口咋打开的。下了android的串口sample,看的云里糊涂的,最后心生一计:串口打不开啊,老板:可以的,设备厂商发过来的时候我专门让他们测过:他们咋测的:你等下我问问:就是设备里有个xxx软件,你打开,设置com口13,波特率9600,电伏选那个3.3v

2021-03-22 23:11:40 2193 1

原创 Failed to send a message: The version control x.x returns 404.

把一个库上传到jcenter上了,但是点了add to jcenter按钮后,提示 Failed to send a message: The version control 1.0 returns 404. 网上一堆说VCS没设置对,需要把自己的项目地址给放进去。怎么放,没下文了。无语啊,完全不理会我等的愚钝上步骤:...

2020-06-22 14:23:01 559

原创 混栈开发之Android端Flutter热更新,兼容FlutterBoost

Flutter热更新demo背景Flutter暂时放弃热更新的官方解释Google从性能和安全两方面考虑,暂时不会推出热更新,把这个功能交给用户和第三方去处理。结合公司不愿提供任何资源,只能走捷径的方式使用Tinker去实现Flutter的热更新。分析Native项目可以接入Tinker进行热更新,而且有Bugly做为补丁版本控制台,来上传下发补丁,统计数量,不需要再去实现,省了不少事。接入Flutter模块,修改Dart代码后,执行buildTinkerPatchRelease,生成patch

2020-06-19 10:35:57 460

原创 android之bugly崩溃日志过滤

领导定了okr,要我们把bugly崩溃率降到0.1%。android 10不让获取设备唯一标识,获取就崩溃,这个大家都知道。还有一些其他的方法,如getNeighboringCellInfo(),在android 10上调用也会崩溃还有这个友盟的optJSONObject()这个方法,看了源码,前面还判null了,进方法就成null对象了。这些第三方的方法,没办法去改。那咋办...

2019-11-04 16:29:19 2256 8

原创 Android之hook dispatchTouchEvent方法

无埋点操作,是通过gradle的Transform API在编译期扫描整个项目生成的class文件,再利用ASM API对class文件插入我们的埋点方法来实现的。在各种事件方法里插桩埋点,基本上满足我们的大部分埋点需求,但是产品会有这样的需求,想看看用户在某个界面里哪些区域点击比较频繁,就需要知道用户点击的坐标。获取点击事件可以办到,还可以拿到点击事件里的View,但是无法获取点击的屏幕坐标。...

2019-11-01 19:22:23 1201 2

原创 CC组件化之实战项目

CCTrainer目的:尽可能帮助更多改造原有项目和新手接入CC,产生的各种困惑接入成本是否高接入后网络框架是否可抽离接入后消息传递是否可解耦接入后三方库怎么做到抽离、共用接入后杂乱的资源是否可分割接入后是否会增加编译耗时一、接入成本不高CC的文档也是极尽详细,大家按着文档里的步骤一步一步来就行了。这里我的一个建议是,提前把自己的业务模块划分好,确定哪几个是需要分离,哪些...

2019-10-09 18:55:35 632

原创 google横幅广告不显示问题

之前已经集成过google的插页广告,所以集成教程就不写了,网上一堆可能大家都没注意过,google广告单元创建完后,要等1个小时的,要不然你绞尽脑汁广告也是出不来的大家都会大意,比如我,集成广告的时候以为配置完就OK了。运行起来死活不出来,调了一下午,结果啥也没改,广告自己突然冒出来了。卧槽,猛然醒悟,回到创建广告单元的页面一看,差不多正好1个小时。有时候出问题并不是代码...

2019-09-01 18:31:30 1039

原创 android之适配华为手机手势导航方式

高仿滴滴首页滑动布局做这个的时候需要计算出首页底部布局距离顶部的高度,要把虚拟导航栏高度算在里面但是发现了一个华为的奇葩bug,华为emui系统的系统导航里可以选手势导航和虚拟导航等方式选用手势导航后,下面的虚拟导航栏虽然没了但是代码里获取虚拟导航栏仍显示show,而且高度仍在,不为0在别的小米ov手机上,开启全面屏导航方式后,导航栏高度获取都是0原因定位到了,但是解决是痛...

2019-08-15 14:22:01 1950

原创 首页信息流布局-XScrollView

分析了下滴滴首页布局,以为是通过touch事件去不断刷新底部布局的位置结果实现后,发现滑动不流畅,而且布局内子view的隐藏显示,都会触发整个布局的重新测量,导致滑动后的位置被重新初始化回原来的位置。选择第二种方案,用nestedscrollview+recyclerview去实现,仿滴滴首页信息流demo先是布局,地图是不能随意动,但是地图要随顶部tab进行切换所以首先主界面...

2019-07-09 16:12:40 961

原创 Cause: buildOutput.apkData must not be null

项目gradle升到5.1.1gradle plugin3.4.0后,打release包提示Cause: buildOutput.apkData must not be null,打包失败WTF?网上千篇一律一堆 clean project —>make project or delete all build folders.But nothing,not for me...

2019-05-17 17:31:24 2857 1

原创 Tomcat开机自动启动

tomcat开机自动启动网上有好些例子有方法1、2、3.....等等但是用错了,就会陷入不知道怎么回事的情况明明照着例子配置的怎么重启Linux,都不能正常访问地址,很蛋疼如果你是采用https://www.cnblogs.com/kinyer/p/5699809.html 这位博主的方法1去做的有可能就怎么也不会成功启动Tomcat需要在/etc/rc.d/rc.loca...

2019-01-27 12:39:30 488

原创 升级android gradle plugin 3.3.0

新版本升级了gradle plugin 到3.3.0,对应支持的gradle版本也从4.6升级到4.10.1新版本里还提供了androidx包,用于之前android support统一迁移到androidx。新的support类也变成了androidx.core.xxx 既然老大让升级,也没办法,跟着走呗三方库尽量也配置到最新,有些三方库已经适配了androidx。在stud...

2019-01-17 11:43:49 1473

原创 阿里云日志服务(SLS)SDK混淆规则

阿里云日志的github项目说明里并未展示怎样混淆 release编译发现使用了fastjson和greendao。 # greenDAO-keepclassmembers class * extends org.greenrobot.greendao.AbstractDao { public static java.lang.String TABLENAME;}-...

2019-01-17 11:13:39 1587 1

转载 Android 9.0系统 CLEARTEXT communication to host not permitted by network

原文:https://blog.csdn.net/qq_18620851/article/details/80617549 问题: 由于 Android P 限制了明文流量的网络请求,非加密的流量请求都会被系统禁止掉。如果当前应用的请求是 htttp 请求,而非 https ,这样就会导系统禁止当前应用进行该请求,如果 WebView 的 url 用 http 协议,同样会出现加载失败,h...

2018-11-12 11:49:38 1117

原创 集成hibeaver的血泪史 -- Ambiguous method overloading for method java.io.File#<init>

项目中埋点的位置越来越多,就想着搞下无埋点数据统计。调研了一圈,基本上确定,日志收集+插桩。新起个项目,日志收集竟然又用到了我刚毕业第一年做的项目。把里面日志收集的类修修补补挪过来,调试成功,打个jar包扔项目里。至于日志的缓存也是现成的,随用随拿。下面就是插桩模块,原理基本上就是在编译期,利用asm修改原有的class文件。asm完全没了解,看了些介绍就是可以修改和增强既...

2018-11-01 18:33:28 5345

原创 弹出输入法软键盘,遮挡住输入框

场景是一个表单提交信息界面,ScrollView套着一堆输入框edittext当点击底部的输入框时,弹出的软键盘会遮挡住输入框,布局并未随着软键盘被顶上去大家搜了一圈发现大部分都是让在manifests设置android:windowSoftInputMode="stateVisible|adjustResize"让activity去给软键盘腾出地方显示,但是并不是所有人都凑效,...

2018-08-22 14:18:30 1105

原创 MVPHelper插件之混淆报错 ClassCastException: Object cannot be case to xxx

之前在android stduio里用mvphelper自动生成,最近要发包,加了混淆打了个release包打开直接崩了,查看日志显示是获取的model为null。以为是泛型的问题,但是加了过滤泛型-keepattributes Signature 最后想了很多都是不知道为什么打log跟进类的转换public static &lt;T&gt; T getT(Objec...

2018-08-02 11:49:18 1151 2

原创 一个Glide升级新版本引发的血案

由于项目用到photopicker,而photopicker用的glide是4.1.1版本用最新的4.7.1,编译项目会报该用原来的3.7.0,编译后,执行photopicker的跳转代码,会报找到RequestManager这个类最下面,glide.clear(xxx);既然提示找不到,就是编译的版本低了,又把glide版本调至和photopicker里的glide版本一致,4.1.1.还是不行...

2018-06-18 00:55:14 5809

原创 上架应用后google map不显示

上架google play后,打开应用的地图页面,地图只有灰色和底部的Google字样。以为是网络不好,可是检查了ss和网络,打开google maps也能正常显示。可能是签名问题,但是又调试下,地图是可以正常显示的。蒙圈了。调试的时候地图没问题,说明我签名配置了,密钥也是对的。上架后出问题了。重新检查google play console,在版本管理的子菜单里有个应用签名的选项,进入一看,goo...

2018-06-16 20:15:52 2461

原创 Rxlifecycle绑定网络请求

网络框架用的Retrofit+Rxjava+okhttp,调试接口时候,在5.0以下的低端机上快速返回唤起,会抛出nullpointerexception。界面是个fragment,以为是内存不足,activity被销毁,又重建了。就重写了onSaveInstanceState把super.onSaveInstanceState给注掉,防止重建fragment。又试了下,还是会出现这个nullpo...

2018-06-13 10:47:15 1072 1

原创 android开发之Touch事件的分发机制

touch事件的分发大家都有所了解,由父节点往子节点一层层传递事件,分发->拦截,到子节点,继续分发->拦截,进入View分发->onTouchEvent,最终执行View的onClick事件。这里就画个图,简单说下它的执行流程。在每一层的dispathTouchEvent里返回true即代表当前事件被中断掉,不再往下分发当前事件。在onInterceptTouchE...

2018-06-09 01:19:24 402

原创 手机修改设备信息之XSharedPreferences使用

XSharedPreferences是xposed框架jar包里的一个存取数据类,实现了SharedPreferences.那我们就想有SharedPreferences干嘛还要再去扩展呢。这就要首先了解下xposed原理(跪读)。大致意思是Android系统有个主进程叫"Zygote",意思就是受精卵,为什么这样命名呢?它是Android运行时的核心进程,当系统启动时,被一个叫/init.rc...

2018-05-19 16:26:44 5069 2

原创 手机修改设备信息之安装xposed框架

最近想做APP刷量,研究了下群控技术,基本上都是通过adb去桥接电脑和手机。github上有一套开源代码,开源群控项目。不过还是要成熟的,再折腾怎么弄就需要更多的时间,可能对大牛来说不费吹灰之力。电脑上安装了total control,调了一个切换账号刷微博评论的脚本。感觉还是蛮不错的,需要注意的是要先判断分辨率,做下分辨率转换,还有如果手机带有虚拟键要去设置里隐藏掉,输入法选用total con...

2018-04-25 17:46:03 39815 16

原创 gradle升到4.4后,报Unable to resolve dependency for ':app@debug/compileClasspath':

Android studio可以升级到3.1了,默认用的是gradle4.4修改为distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zipbuildscript { repositories { jcenter() google() maven{...

2018-04-08 10:41:29 56180 29

转载 深入理解Android消息处理系统——Looper、Handler、Thread [转]

转自http://my.unix-center.net/~Simon_fu/?p=652         熟悉Windows编程的朋友可能知道Windows程序是消息驱动的,并且有全局的消息循环系统。而Android应用程序也是消息驱动的,按道理来说也应该提供消息循环机制。实际上谷歌参考了Windows的消息循环机制,也在Android系统中实现了消息循环机制。Android通过Looper、Ha...

2018-03-18 14:54:51 359

原创 app首页的动态配置

之前做一个项目的时候,首页设计的很复杂,有banner、活动、分类、滚动条、列表等。接口的话很好实现,跟后台定好返回json的格式,把各部分数据分开接收就行了。界面也不是很难实现。问题是这么多数据,有可能有一部分不需要。这样就很尴尬了。所以做了一个动态首页,banner、活动、分类、滚动条、列表,哪一块不需要都可以后台控制。其实就是不显示的话,就不给这块的数据就行,app接收到数据

2018-02-02 17:31:16 2879

原创 Android聊天界面监听软键盘弹出聊天记录跟着顶上去

项目中做了个聊天界面,就一个界面懒得扒框架,顺手撸了。最后被提了个Bug,弹出输入法键盘挡住了一部分聊天记录,如下看了微信就不会这样,寻思是不是改改布局就可以。结果,一直以为是动态改变recyclerview的高度,配合布局,把recyclerview顶上去。各种尝试都不行,最后才明白,监听软键盘弹出,来改变recyclerview滚动到最后一个item,吐血。代码

2018-01-12 15:21:25 6094 9

原创 adb install 指定设备安装

发布新版本时候,开了8.0的虚拟机测试了下,没问题。然后在终端输入adb install app-release.apk,提示多个设备连接,不知道连哪个。输入adb,回车查看下adb的命令,发现有个命令可以拿到所有连接的设备id输入adb devices,回车果然把设备id都打印出来了,复制要安装的设备id。adb -s 设备id install

2017-12-15 14:27:07 31418 2

原创 java.lang.IllegalStateException:app is in background uid UidRecord

bugly上出了这个错误,而且都是Android 8.0上的,心里隐约觉得又出新幺蛾子了。查了下大概是8.0以上不允许创建后台服务了判断下版本,startForeground(1, new Notification())放在oncreate()里就行。好了,问题解决。

2017-12-13 14:42:26 8470

原创 android.view.View android.view.View.findViewById(int)' on a null object reference

突然我负责的页面出现这样的错误Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.view.View.findViewById(int)' on a null object reference只在vivo 和乐视手机出现这种情况,以为

2017-11-30 17:23:00 6896

原创 EC2实例在不同账户间共享

以前的ec2的登录密钥记得上传云端了,但是找了google云端硬盘和onedrive都没有找到。确认丢失了。没办法只能重新开个aws账户共享了。先进入原来的aws账户,进行如下操作创建过程会让输入映像的名称,随便输入一个,其他不用管。创建过程可能到等几分钟。完成后在AMI下生成映像文件。然后去创建新的aws账户,创建完成后,进入账户信息里,可以查看新创建的账户ID,

2017-11-24 15:12:11 1460

原创 尝试连接“ECONNREFUSED - 连接被服务器拒绝”失败

开了个ec2实例,安装完lnmp。配置好域名解析,可以正常访问。又装了FileZilla,怎么都连接不上。记得以前在window下xshell连接很顺畅,发现是协议选错了,我选择的是FTP-文件传输协议,需要用密码登录。选择SFTP-SSH FILE Transfer Protocol,下面登录类型就可以选择密钥文件了,导入密钥,连接。。。奶奶的,出现这个错误。一看是连得root账

2017-11-09 11:39:44 25944

原创 SwipeRefreshLayout 无法刷新

闲着没事把之前做的一个项目里,首页部分给单挑出来上传到github,首页的内容可以动态的去配置。附上地址 homepage今天看一哥们给我提的issue,说banner无法删除。哎,banner还要去掉想着简单就随手把A实体类给注释掉,运行发现 banner去掉了,但是下拉刷新没了,不执行onRefresh()swiperefreshlayout没有被干掉,recyclerview

2017-10-23 17:11:43 1040

原创 请求权限调不起来,Can request only one set of permissions at a time

前天遇到个奇怪的问题,也不奇怪。就是在扫码界面请求拍照权限,请求权限弹窗始终不会出来。一路debug进去,发现是activity类下的public final void requestPermissions(@NonNull String[] permissions, int requestCode) { if (mHasCurrentPermissionsRequest)

2017-10-18 13:52:48 5625 3

原创 ViewPager 实现显示第二个item

项目里需要这样一个需求,既要显示第一个,又要露出第二个的一小部分,这样给用户还有更多的体验,而且在滑动上不是RecyclerView那样可以一点点滑动,而是ViewPager的效果,滑下就选中下一个item。最开始没多想直接用了RecyclerView,没达到产品的要求。又用了ViewPager,不能显示下一个item了。在布局里试过固定宽度实现这样的效果,但是没用,照样会把当前Item撑

2017-10-11 10:18:43 1900

原创 gson 字符串转换android对象报错 Can't instantiate abstract class java.lang.ClassLoader

在使用gson.fromJson 把字符串转成ResolveInfo对象时抛出java.lang.RuntimeException: Unable to start activity ComponentInfo{sk.carlauncher/sk.carlauncher.ui.MainActivity}: java.lang.RuntimeException: Failed to invo

2017-08-09 10:45:41 2708

原创 onResume无限循环

今天在做权限申请,写完后,发现点界面上任何东西都无法响应,整个界面处于卡死状态。查看Log,onResume和onPause在不停的执行,debug排查发现是因为请求权限导致的。由于考虑到权限必须获得,否则没法去读取数据和开启功能,所以就想着放在onResume里。请求权限相当于打开了一个请求权限界面,app会先执行onPause,如果有多个权限申请,点了允许,生命周期会执

2017-08-08 15:28:04 2105

原创 Fragment下横竖屏切换OnResume执行两遍

在Fragment下横竖屏切换状态的保存通过重写 onViewStateRestored (恢复保存的状态)和 onSaveInstanceState (保存状态) 来处理。但是在调试时发现,运行结果大乱,并未恢复原来的数据,debug发现onResume执行了2次。切横屏只会走一次生命周期,怎么能走两次。百度了下发现是activity里在加载fragment时没有处理好,需要判断下a

2017-08-04 15:54:30 2093

修改系统型号版本imei,以及手机定位

了解xposed框架,安装xposed框架并激活,打开此软件,设置想要修改的信息,然后选择应用,在xposed框架勾选,重启生效

2018-06-07

miui救砖工具

解压后看文件提示,直接执行那个 只点我,不用管其它的exe文件。按照命令行提示执行即可。解压前,记得一定要关闭杀毒软件,比如mse关闭实时防护。

2018-04-25

xposed框架安装包合集

xposed3.1.1是高版本android 系统xposed安装包,2.5.1是4.4以下的,3.0是4.4以上。看手机系统版本来选择安装

2018-04-25

修改IMEI APP

安装xposed模块后,勾选此app,可以修改手机的imei、wifi ssid、蓝牙Mac地址、WiFimac地址等等信息。

2018-04-25

空空如也

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

TA关注的人

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