Android
文章平均质量分 64
BrainZou
这个作者很懒,什么都没留下…
展开
-
NoClassDefFoundError ServiceConnection$-CC 崩溃 (系统应用调用到 onBindingDied 或者系统接口的 default 方法时报错)
NoClassDefFoundError: Failed resolution of: Landroid/content/ServiceConnection$-CC原创 2022-09-08 17:01:29 · 1051 阅读 · 0 评论 -
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 阅读 · 0 评论 -
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 · 626 阅读 · 0 评论 -
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 阅读 · 0 评论 -
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 · 792 阅读 · 0 评论 -
Android 使用uInput模拟手柄设备
背景前文说到需求,需要在系统应用里模拟手柄摇杆和按键。之前已经通过模拟KeyEvent实现按键,模拟MotionEvent实现摇杆大致实现了这个功能,但是遇到新的问题,有些游戏不识别按键,尤其是多人云游戏。解决方案大致了解之后, KeyEvent和MotionEvent里有个deviceId字段,这个字段是用来表示不同的设备的。比如多人游戏,a手柄和b手柄的deviceId是不同的,游戏根据这个来区分不同的人做的操作,游戏可能是根据这个deviceId是否存在并且可以匹配,如果不存在则可能不处理这个事原创 2021-04-20 18:11:01 · 1920 阅读 · 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 阅读 · 0 评论 -
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 · 3914 阅读 · 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 · 5604 阅读 · 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 · 1038 阅读 · 0 评论 -
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 · 2066 阅读 · 0 评论 -
仿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 · 323 阅读 · 0 评论 -
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 · 628 阅读 · 0 评论 -
如何更优雅的管理Android相机预览
场景网上demo做法大多是使用SurfaceView或者TextureView,在view创建可用(surfaceCreated,onSurfaceTextureAvailable)后打开相机,设置setPreviewDisplay/setPreviewTexture,开启预览。在surfaceDestroyed/onSurfaceTextureDestroyed后释放相机。在demo的情况下...原创 2019-04-17 11:10:09 · 584 阅读 · 1 评论 -
单个LottieAnimationView加载多个lottie动画
需求最近做了一个单个LottieAnimationView根据用户点击选项的不同,加载不同的lottie动画的需求。网上的一些demo和博客大多只是单独的加载一个lottie动画,普遍不会有问题,但是如果加载不同的lottie动画时,遇到了一些问题,踩了一些坑,比如lottie动画只能播放第一个,后面的就不放了,比如第二个lottie动画播放时会闪一下第一个lottie动画画面,比如播放混乱,明...原创 2018-12-19 19:46:34 · 5209 阅读 · 0 评论 -
解决Lottie从sd卡加载动画,只能加载一次的bug。
//提供一个代理接口从 SD 卡读取 images 下的图片 specialEffectLottieAnim.setImageAssetDelegate(new ImageAssetDelegate() { @Override public Bitmap fetchBitmap(LottieImageAsset...原创 2018-12-08 09:25:54 · 1786 阅读 · 0 评论 -
RecyclerView优化和使用场景
前言最近写一个项目使用了嵌套RecycleView,但是加载完后,第一次滑动卡顿。找遍了所有的优化方案,很多方案只说了可以怎样怎样设置来进行优化,却没说什么场景下使用。特此总结汇总如下。先说我自己遇到的问题:getExtraLayoutSpace使用场景:一个itemView就占了一屏大小的RecycleView我是最外面一个竖排的RecycleView,然后内部的第二个item用了Gri...原创 2018-11-19 20:41:23 · 1233 阅读 · 0 评论