自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 网易云歌单重合率2.0

前言:之前写过一个小工具输入网易云音乐上的昵称,即可查看两人喜欢的音乐中,有哪些是相同的,重合率有多少。感兴趣的可以看这里:网易云歌单重合率1.0但是之前的版本存在几个问题:速度慢,这个其实是最难受的,平均 20 s以上,因为当时水平有限,使用的selenium相当于模拟了人工搜索,找用户,找歌单,筛选歌曲的过程,会获取很多不必要的信息。速度自然比接口慢很多很多。体验差,样式也很丑,作...

2019-10-09 23:26:18 1085

原创 输入法在 Android13上候选词 候选区域 不显示的问题

输入法在 Android13上候选词 候选区域 不显示的问题

2024-02-23 16:48:27 813 2

原创 NoClassDefFoundError ServiceConnection$-CC 崩溃 (系统应用调用到 onBindingDied 或者系统接口的 default 方法时报错)

NoClassDefFoundError: Failed resolution of: Landroid/content/ServiceConnection$-CC

2022-09-08 17:01:29 1045

原创 Android Native 回调 Java/JVM

背景网络上大部分文章都是JNI的编写, 但是一些情况下在so里面,也有Native调用回Java的场景,文章相对较少。而且如果照着一些文章写的,可能会出现写的c的每一行代码都执行了,但是Java层就是没执行等奇奇怪怪的问题。做项目时也遇到过这些坑,特总结如下。部分代码//TestJNI.ktclass TestJNI{ init{ System.loadLibrary("test") initTest() } //防止混淆 @Keep fun nativeInv

2022-01-13 19:48:32 4806

原创 APK 自动编译平台搭建(gitlab+jenkins+svn+dingding)

APK 自动编译平台搭建(gitlab+jenkins+svn+dingding)搭建一个在 Jenkins 上的自动编译平台,将 apk 发布到 SVN,之后把编译结果推送到钉钉。安装 Jenkins这一步不赘述,网上的教程太多了,值的一提的是,你也可以通过 Docker 去安装。Docker 可以理解为搭建了一个虚拟机,在虚拟机里面运行 Jenkins。Jenkins 上编译 APK也有很多文档可以参考,主要注意在Jenkins配置菜单里面增加 ANDROID_HOME 环境变量注意 G

2021-09-03 14:46:09 617

原创 Android常见导致内存问题的案例

常见导致内存问题的案例1. Handler的使用 private val handler = Handler(Looper.getMainLooper(), object : Handler.Callback { override fun handleMessage(msg: Message): Boolean { //Looper内的message -> handler -> 匿名内部类 -> activity L

2021-04-28 20:26:46 147

原创 Android Studio 无需打开 GitLab 直接发起merge请求

场景很多公司都是自建的gitlab存放代码,主干分支一般都是保护的,请求merge需要用浏览器登录到gitlab,然后再发起,一定程度上浪费了时间在来回切换上。于是在Android Studio上找到了一个好用的插件。GitLab Quick Merge Request如标题,Android Studio上可以直接找到该插件。然后 如下图配置GitLab URL需要配置成自己 GitLab 服务器的地址,记得后面加/api/v4Access Token获取scopes都勾上,点击creat

2021-04-25 11:57:42 788

原创 Android 使用uInput模拟手柄设备

背景前文说到需求,需要在系统应用里模拟手柄摇杆和按键。之前已经通过模拟KeyEvent实现按键,模拟MotionEvent实现摇杆大致实现了这个功能,但是遇到新的问题,有些游戏不识别按键,尤其是多人云游戏。解决方案大致了解之后, KeyEvent和MotionEvent里有个deviceId字段,这个字段是用来表示不同的设备的。比如多人游戏,a手柄和b手柄的deviceId是不同的,游戏根据这个来区分不同的人做的操作,游戏可能是根据这个deviceId是否存在并且可以匹配,如果不存在则可能不处理这个事

2021-04-20 18:11:01 1912 1

原创 Android9.0制作差分包报错

在新平台尝试制作差分包时报错,如下:ERROR:Failed to generate imgdiff for //system/priv-app/Test/Test.apk: tgt=70499-75692 75694-75930, src=70499-71112:W/ziparchive(25145): Zip: bad offsets (dir 22384640, size 53154, eocd 22245282)imgdiff E 07-14 14:21:25 25145 25145 img

2021-04-20 11:33:55 1072

原创 Android 模拟手柄摇杆输入,模拟MotionEvent

背景需求是在系统应用模拟摇杆,达到对所有应用都能模拟输入的效果,所以一定会使用到InputManager。但是大多demo和文章 模拟摇杆和功能使用都是在同一个应用,所以可以自定义实现此类功能,不需要模拟构造MotionEvent给InputManager相关代码和使用建议先查看Google的对手柄处理文档,对手柄有一定的了解:https://developer.android.com/training/game-controllers/controller-input?hl=zh-cn通过

2021-03-02 17:48:41 3911 6

原创 android编译 配置-Xbootclasspath/p优先级无效(AndroidStudio升级到4.2.2后失效,或者jenkins 多模块依赖不同framework.jar导致失效)

系统jar包优先级有些Android项目如果需要使用framework.jar(android.jar)去使用hide方法使的编译通过时,网上会给出下列代码,但是某些情况下,这种方式可能会不生效:allprojects {gradle.projectsEvaluated { tasks.withType(JavaCompile) { //../framework.jar 为相对位置,需要参照着修改 options.compilerArgs.ad

2020-11-17 20:59:14 5596 10

原创 jenkins aapt2 执行报错 error=2, No such file or directory

报错如下:Caused by: java.io.IOException: Cannot run program “/var/jenkins_home/.gradle/caches/transforms-2/files-2.1/9aaeb1036ed80346e59fdc652224e30d/aapt2-3.4.1-5326820-linux/aapt2”: error=2, No such file or directory解决方法:如果你是服务器直接搭建的jenkins,系统是ubuntu/De

2020-11-16 14:46:16 1035

原创 Android 9.0失去音频焦点后不能再获取到焦点

问题有A音乐播放器,和B应用。在7.1版本,如果A在播放音乐,然后B申请音频焦点,A会暂停,B释放焦点后,A能获取到onAudioFocusChange回调,然后继续播放。但是在9.0版本上,发现即使B释放了音频焦点后,A也不能收到回调,也就不能继续了。分析过程查看源码,主要的焦点控制逻辑在MediaFocusControl类,查看B申请焦点requestAudioFocus方法:其中有调用propagateFocusLossFromGain_syncAf 方法,通知焦点栈中其他元素丢失焦点(也就

2020-07-21 16:06:21 2058

原创 仿Launcher文件夹效果的距离算法

https://github.com/AlphaBoom/ClassifyView[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-B3kmOsbw-1584781582989)(https://github.com/AlphaBoom/ClassifyView/blob/master/screenshot/classifyView.gif)]...

2020-04-13 08:27:12 321

原创 自用常用软件列表

常用软件:xftp(文件传输) xshell(终端模拟)Mouseinc 鼠标快捷键utools 应用快捷方式chrometypora md编辑wpsssr护眼宝开发相关:android studio/Idea/pycharmbeyongd compare 3Memory AnalyzerWireShark 抓包GIMP 配合查看内存中的bitmapnotpa...

2020-04-06 09:37:10 218

原创 如何更优雅的管理Android相机预览

场景网上demo做法大多是使用SurfaceView或者TextureView,在view创建可用(surfaceCreated,onSurfaceTextureAvailable)后打开相机,设置setPreviewDisplay/setPreviewTexture,开启预览。在surfaceDestroyed/onSurfaceTextureDestroyed后释放相机。在demo的情况下...

2019-04-17 11:10:09 583 1

原创 单个LottieAnimationView加载多个lottie动画

需求最近做了一个单个LottieAnimationView根据用户点击选项的不同,加载不同的lottie动画的需求。网上的一些demo和博客大多只是单独的加载一个lottie动画,普遍不会有问题,但是如果加载不同的lottie动画时,遇到了一些问题,踩了一些坑,比如lottie动画只能播放第一个,后面的就不放了,比如第二个lottie动画播放时会闪一下第一个lottie动画画面,比如播放混乱,明...

2018-12-19 19:46:34 5204

原创 解决Lottie从sd卡加载动画,只能加载一次的bug。

//提供一个代理接口从 SD 卡读取 images 下的图片 specialEffectLottieAnim.setImageAssetDelegate(new ImageAssetDelegate() { @Override public Bitmap fetchBitmap(LottieImageAsset...

2018-12-08 09:25:54 1784

原创 RecyclerView优化和使用场景

前言最近写一个项目使用了嵌套RecycleView,但是加载完后,第一次滑动卡顿。找遍了所有的优化方案,很多方案只说了可以怎样怎样设置来进行优化,却没说什么场景下使用。特此总结汇总如下。先说我自己遇到的问题:getExtraLayoutSpace使用场景:一个itemView就占了一屏大小的RecycleView我是最外面一个竖排的RecycleView,然后内部的第二个item用了Gri...

2018-11-19 20:41:23 1223

原创 json的Bean实体内String如何换行?

我的实体bean如下:public class ShakeContactText { @JsonProperty(value = "SHAKE_CONSTANT_TEXT_TWO") private String shakeConstantTextTwo; public String getShakeConstantTextTwo() { return...

2018-11-05 19:48:34 625

原创 Notepad++ 还原Find result窗口的正确方法,100%成功。

缩小Notepad++窗口,不要全屏。点击Find result窗口不放,一直往下拖,直到鼠标位置对准Notepad++的主窗口的下边缘。如下图: 重点:缩小窗口,一直往下拖。 ...

2018-09-04 10:42:00 33015 12

原创 update数据库时出现不存在的列:Unknown column name 'serialVersionUID' in table

查看该表,发现并没有实现实例化接口。 通过下面方法反射出所有的属性,发现确实多了一个$change 和一个serialVersionUID。public static void showAnnotationWrodOther(){ Field[] fields = DbApp.class.getFields(); for (Field field : fiel...

2018-08-25 15:01:01 1874

原创 Unable to resolve dependency for ‘:app@debugAndroidTest/compileClasspath‘: Could not resolve junit:j

Android Studio 编译报错编译失败,查看具体报错原因是下载某个引用下载不下来。 Caused by: org.gradle.api.resources.ResourceException: Failed to download SHA1 for resource ‘http://maven.aliyun.com/nexus/content/groups/public/com/xx...

2018-08-02 08:38:02 3727 1

原创 想知道你和她在网易云喜欢的音乐的重合率?

本工具可以查看你和她在网易云上喜欢音乐的重合率,以及哪些歌是你们都喜欢的。起因在某首歌的评论里看到说想要网易云提供一个这种功能?仔细一想,其实获取到歌单后做一个简单的计算重合率的应该还是挺简单的。一方面想试试简单的爬取两个界面,另外一方面想利用下自己的服务器。经过几天时间,虽说初步实现了,但是……后面会详细说遇到的问题。如何使用可以直接关注我公众号:BrainZou 或者 扫描...

2018-06-01 10:25:39 1525

原创 爬取Gerrit

起因主要是公司想要规范化工程师的提交信息,虽说不是我来弄,但是我想试试用之前学的爬虫来尝试抓取,并且可以初步的数据处理分析,然后可视化。

2017-12-13 21:00:00 2058

blockimgdiff.py

解决Android9.0制作差分包时imgdiff 差分apk时报错,Failed to generate imgdiff for ...... imgdiff.cpp:661] Failed to open zip file /tmp/tgt-KxNSNW: Invalid offset. 解决方案是在imgdiff算法报错时,使用bsdiff算法去对apk做差分。 来自@qq_36071820

2021-04-20

空空如也

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

TA关注的人

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