安卓开发Bug总结
文章平均质量分 56
肖恩伊森
欢迎评论交流!
展开
-
Broadcast Recevier漏洞详解
广播安全方面的bug转载 2024-06-20 17:11:00 · 38 阅读 · 0 评论 -
安卓开发日志采集和分析面面谈
明确系统提供了哪些日志,cpu、meminfo、app、log等,我们怎么看日志,看日志的三步骤,怎么用工具提高分析日志的效率,bugreport和chkbugreport。原创 2024-05-27 11:22:02 · 819 阅读 · 0 评论 -
【ANR问题小结】ANR小问题集合
广播超时、input event超时等问题、SP超时getString#apply#new超时、Input event dispatching timed out sending to\ANR Warning onLayout time too long问题分析及解决原创 2024-05-24 17:26:43 · 1044 阅读 · 0 评论 -
You must call removeView() on the child‘s parent first.异常分析及解决
view在上次已经是某个ParentView的child,然而现在又把它做为另外一个view的child,于是出现一个view有两个parent。个人理解是,因为F已经被添加到ViewGroup A中了,不能再被添加到ViewGroup B中,直白点就是,一女不能侍二夫。想要把F添加到ViewGroup B中,就要ViewGroup A先把F移除掉,再添加到B中去。对试图组件快速的左右滑动过程,发现某一张图片没加载出来,偶现crash。方案2:先移除,解绑与父view的关系,再重复添加。原创 2024-05-24 17:09:53 · 272 阅读 · 0 评论 -
$LayoutParams cannot be cast to android.widget.RelativeLayout$LayoutParams
View.getlayoutParams,返回的是父view的参数,父view 是什么,就得赋值给对应的父View.LayoutParams。动态添加子view的时候,报crash,提示。传递父view类型的LayoutParams。原创 2024-05-24 17:07:24 · 225 阅读 · 0 评论 -
ViewFlipper常见小问题
包括与click事件冲突、与Activity生命周期的关系原创 2024-05-24 16:56:08 · 148 阅读 · 0 评论 -
帧动画播放出现oom异常分析及解决
bitmap.recycle并不会立刻回收内存,内存还是会很紧张。源代码每一帧都创建一次bitmap,极度消耗内存。利用inbitmap,每一帧复用同一片内存区域。需要播放序列帧,帧数特别多的时候会oom。原创 2024-05-24 16:35:24 · 188 阅读 · 0 评论 -
【Glide】Glide/Picasso常遇到的小问题集合
包括了以下小问题You cannot start a load for a destroyed activity、图片加载异常class com.bumptech.glide.load.engine.GlideException: Failed to load resource、不支持http、保存的图片自动旋转90°、加载图片出现黑边原创 2024-05-24 15:51:06 · 312 阅读 · 0 评论 -
【okhttp】小问题记录合集
包括can’t create native thread、get不支持请求体、urlencode编码二次的问题The valid characters are defined in RFC 7230 and RFC 3986、 回调都在子线程、eader不支持中文、java.lang.IllegalArgumentException: Could not locate call adapter for io.reactivex.Observable、SocketTimeoutException或常分析及解决原创 2024-05-24 15:36:25 · 1006 阅读 · 0 评论 -
Android 链接4G热点网络第一次请求很慢ipv6地址链接异常分析及解决
网上查了查,答案都指向了DNS解析设置的问题,解析有两种 ipv4 ipv6 ,android默认不支持ipv6解析,之后问了下后台配置,说IOS 的 appstore 审核,必须需要ipv6的配置才能正常进行,所以服务端增加了 ipv6 支持,同时也支持ipv4,但是ipv6的入口再美国,那这样看来,猜测是否是android手机默认通过ipv6去连接后端服务器,绕了一大圈才返回结果?要知道,Android设备的规模已达几十亿,占据了智能手机市场的几乎八成,它不支持IPv6无疑是极大的桎梏。原创 2024-05-24 11:23:24 · 1019 阅读 · 0 评论 -
【相机开发问题总结】锁屏下相机资源释放问题
根据上面的文档,推测是锁屏下系统并没有改变surfaceview的可见性,于是我尝试在onPause和onResume时通过手动设置surfaceview的visibile属性,结果发现可以正常触发回调函数了。问题出现在跳转页面之前,可能触发了锁屏,会导致息屏,息屏呢,同时会释放相机资源,释放人脸识别sdk,以便于两瓶再次恢复页面的时候,重新申请相机资源,而此时会出现app crash。系统锁屏时间设置了15秒,有一个页面是人脸识别页面,会开启相机展示相机预览内容,并分析人脸结果,自动跳转到下一个页面。原创 2024-05-24 11:11:13 · 269 阅读 · 0 评论 -
【相机开发问题总结】后台恢复到前台预览界面卡住
surfaceView或TextureView通过new实例化,而不是在布局中定义。并且在onStart() 通过addview方式把view加到布局中,在onStop()时通过removeView()方式移除view。页面提供了相机预览功能,该页面有可能长时间活跃在前台,也有可能偶尔被语音或者其他操作顶到后台去。onStop()时,SurfaceView或TextureView没有销毁。所以重新打开摄像头时,view的生命周期不会重新执行,也就无法刷新。回到前台时,需要恢复相机资源和预览界面。原创 2024-05-24 10:48:46 · 222 阅读 · 0 评论 -
【相机开发问题总结】小问题集合
camera开发的小问题,小异常,小bug总结,如黑屏、多次初始化、捕获视频流等问题。原创 2024-05-24 10:41:20 · 362 阅读 · 0 评论 -
java.lang.UnsatisfiedLinkError: dlopen failed: “/lib/arm64/libGlobal.so“ 异常分析及解决
之前我就遇到过使用高德地图和二维码扫描Qrcode造成的冲突,Qrcode是一个module做为app工程的library,因为高德地图必须要在armeabi-v7a文件夹下放置so文件,而做为library的Qrcode则同样也需要armeabi-v7a不然编译报错,但恰巧Qrcode只有32位的,这样就尴尬了,后来查询了资料终于解决了这个问题,问题就来了,有些网上找的64位的不一定是三方官方提供的,那么就不能去使用和兼容。说到这,首先想到的办法就是从网上在下载个64位的so文件不就完了,原创 2024-05-24 10:21:14 · 282 阅读 · 0 评论 -
java.lang.IllegalArgumentException: PhoneWindow$DecorView not attached to window manager异常分析及解决
一个老项目,网络请求时会弹出loading,loading的技术实现是用Dialog实现的。频繁展示loading的时候,偶现。是:loading显示->网络请求->异步callback回调->loading隐藏。是在异步callback回调->loading隐藏的时候。隐藏dialog之前判断dialog是否处于显示状态。判断activity是否正常、页面是否销毁。当然以防万一,做好完整的判断更好一点。在异步回调里做UI操作之前。原创 2024-05-24 10:08:06 · 269 阅读 · 0 评论 -
Only the original thread that created a view hierarchy can touch its views异常分析及解决
开发一款视频通话App时候,有个需求是查询通话记录列表,查询通话记录,毫无疑问要做网络请求,在该请求的callback中同时做了view初始化操作,logcat提示。android不允许子线程操作UI。在主线程中操作UI,可以有以下做法。原创 2024-05-24 09:56:15 · 184 阅读 · 0 评论 -
adb频繁重启问题分析及解决
6.修改db端口adb:windows修改adb自定义端口号,在计算机-属性-高级系统设置-环境变量-系统变量,新增ANDROID_ADB_SERVER_PORT,变量值即为端口号,自行定义。4.一般经常断是因为端口被占用,所以修改端口,有一段时间我把端口改成44444,好了一段时间,但是没过多久,又开始掉线。2.命令行 adb kill-server adb start-server adb devices。5.查看端口被占用情况(不会网搜),如果发现又一个程序占用了adb端口,直接将占用的程序卸载。原创 2024-05-23 18:47:01 · 400 阅读 · 0 评论 -
application多进程初始化异常分析及解决
一般情况下,一个应用程序就一个进程,这个进程的名称就是应用程序包名。Android 的四大组件在 AndroidManifest 文件中注册的时候,有个属性是 android:process,这里可以指定组件的所处的进程。在 MaApplication 中直接对 PriorityLogicWrapper 进行操作,无需操作 BaseApplicationLogic 对象。安卓允许一个App声明多个进程,多个进程初始化时会创建多个Application,可能引发许多不可控问题。原创 2024-05-23 18:41:37 · 278 阅读 · 0 评论 -
【内存泄漏Bug】animation未释放
一个页面做了动画特效,这个页面有可能跳转到其他页面,并长时间不返回,该页面此时已经不活跃了,该页面的对象为无用对象,存在内存泄漏风险。在onPause、onResume做动画的停止、恢复处理,避免重复创建动画;页面不再处于前台的时候,未将动画暂停,释放动画资源。在onDestory做动画的销毁处理,避免无法gc。3. 点击back按钮,并不会杀死当前页面。2. 有可能从其他页面跳转回来。这个activity的特性是。1. 有可能跳转到其他页面。原创 2024-05-23 18:10:08 · 378 阅读 · 0 评论 -
【内存泄漏Bug】registerReceiver Are you missing a call to unregisterReceiver()异常分析及解决
开发一款WIFI管理APP,再wifi列表页面注册了广播监听,监听网络变化,页面是常驻内存的,跳转到其他app或者其他页面的时候,此页面存在被系统销毁的可能。页面回退之后,广播忘记反注册。页面销毁调用反注册广播。原创 2024-05-23 18:00:17 · 440 阅读 · 0 评论 -
【相机开发问题总结】曝光补偿ExposureCompensation未生效异常分析及解决
做一款相机应用时,用户反馈相机预览界面太暗了,由于我们是嵌入式设备,没有手机那么高大上得闪光灯补光,因此只能考虑从软件层面提高界面亮度,还好找到了曝光补偿,但是开发过程中发现曝光补偿未生效,界面依然很黑。android camera可以通过以下五个API,分别获取step,最大曝光补偿级数,最小曝光补偿级数,当前曝光补偿级数,设置曝光补偿级数。曝光补偿值=step * 曝光补偿级数。曝光补偿存在一定范围,比如-2至2,或者-3至3,单位为EV,可以理解为exposure value。根据上述概念,我发现。原创 2024-05-23 17:56:24 · 501 阅读 · 0 评论 -
【相机开发问题总结】java.lang.RuntimeException: setParameters failed异常分析及解决
我们能够得到什么信息呢,setParameters方法是调用jni方法native_setParameters的方法,事实上看到这里就差并不多了,由于再去查看jni方法是非常麻烦的。我们能够发现传输进来的是Parameters參数,调用了Parameters的flatten方法。非常多人不知所以然就上网開始找,找不到就開始各种推測,一个个參数设置过去,事实上最有效的方式是究竟层找原因。经过与ROM开发同事沟通,是由于android的setParameters参数传递错误,该参数不被底层支持。原创 2024-05-23 17:50:50 · 339 阅读 · 0 评论 -
【相机开发问题总结】Caused by: java.lang.RuntimeException: Fail to connect to camera service异常分析及解决
开发一款嵌入式设备,有多个相机,以usb形式和串口形式连接,调用open方法得时候,crash闪退。先获取安卓可识别得camerid,再传递给open函数。camer.open 时,传错了camer id。原创 2024-05-23 17:44:04 · 245 阅读 · 0 评论 -
java.lang.IllegalStateException: closed 异常分析及解决
response.body().string()只能请求一次,请求过后,就会关闭,再次调用response.body().string()就会报close异常,使用变量接收数据,后续使用变量data 就可以解决这个问题。使用okhttp请求数据,进行解析,遇到。原创 2024-05-23 17:35:34 · 315 阅读 · 0 评论 -
SUPPLICANT_ERROR——Android Wifi列表频繁刷新异常
总的来说: 此现象在发生在scan和user connect刚好一前一后发生,并且scan未处理完user就trigger connect.,要求时间刚刚好打到。开发一款WIFI管理应用,基础功能有WIFI列表查询功能,在之前有链接过WIFI得清空下,频繁点击WIF列表查询功能会收到SUPPLICANT_ERROR广播。所以应用层的解决方法是:1.避免在调用scanWifi()的短期内调用connect,就是避免在扫描期间调用connect。自动链接WIFI得时候,要判断是否处于WIFI扫描期间;原创 2024-05-23 17:32:50 · 194 阅读 · 0 评论 -
ANR Warning onLayout time too long问题分析及解决
频繁点击、频繁请求或其他快速频繁操作触发了onLayout ,同时onLayout 中做了耗时操作,导致anr。一个ViewPager中频繁刷新,偶发。原创 2024-05-23 17:27:03 · 243 阅读 · 0 评论 -
Android android.os.DeadObjectException aidl通信异常分析及解决
针对应用开发,可以在服务端进程启动的时候发个消息给客户端,客户端收到消息的时候重新进行绑定操作,目的是为了同步客户端和服务端的连接,客户端进程启动的时候也要绑定一次(注:在已经连接的情况下,服务端由于某种原因进程重启了,如果客户端没有收到回调,客户端保存的连接不为空,这时调用服务端接口就会抛出DeadObjectException异常)3)在service绑定成功后,调用linkToDeath()注册进service,当service发生异常断开连接后会自动调用binderDied()原创 2024-05-23 17:12:55 · 532 阅读 · 0 评论 -
java.io.IOException: setDataSource failed.: status=0x80000000异常分析及解决
做一款新得音乐播放器,播放音乐闪退Crash,看到最后报告的异常是IO异常:`java.io.IOException: setDataSource failed.: status=0x80000000`原创 2024-05-23 17:08:56 · 344 阅读 · 0 评论 -
Rom应用开发遇到得一些小bug
设备拔电重启,ROM时间为默认时间如1970年1月1日,与某些业务场景互斥。记录一些细碎得bug。原创 2024-05-23 17:00:06 · 429 阅读 · 0 评论 -
java.util.ConcurrentModificationException异常分析及解决
有一个RecycleView视图组件,数据变更得时候进行了增加和删除操作,频繁触发 增加、删除数据得操作,低概率出现此问题,代码片段无法展示,可以语言描述一下代码片段。原创 2024-05-23 16:56:51 · 338 阅读 · 0 评论