自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

HeXinGen的博客

汗水凝结成时光胶囊,独自在这命运里拓荒

  • 博客(165)
  • 资源 (8)
  • 收藏
  • 关注

原创 Android性能优化之游戏引擎初始化ANR

使用trace 获取到发生anr 真正的耗时方法的调用,对耗时任务采用延迟、异步方式优化

2023-07-27 18:40:57 2590

原创 Android性能优化之游戏收敛线程,减少OOM发生(epic 检测线程调用/booster减少常驻线程超时销毁)

使用epic hook方式检测thread 的调用栈;进行分类统计哪些sdk或者业务线程多;设置核心线程超时销毁,使用booster优化,尽量使用协程等等

2023-07-27 18:04:24 608

原创 Android性能优化之Thread native层源码分析(InternalError/Out of memory)

线程创建到启动过程:从Thread.start()-> c++层CreateNativeThread()->JNIEnvExt::Create()创建JniEnv ->c++层pthread_create()—> allocate_thread()分配堆内存->Linux层clone()拷贝新线程-> 反射调用Thread.run()

2023-07-27 14:52:30 313

原创 Android性能优化之Parcel OOM问题分析

遇到Android 跨进程通讯Parcel OOM,从源码角度探究C++层 Parcel 发生OOM的原因。

2023-07-27 14:14:39 232

原创 Android性能优化之游戏 OutOfMemoryError: pthread_create探究真相

探究游戏在bugly上百万量级OOM crash 的真凶。

2023-07-27 11:58:33 665

原创 Android 6.0 版本中插件化沙盒环境下IllegalArgumentException Unknown package异常

Android crash 可能并不是自身游戏引起,可能是运行环境,沙盒插件化的兼容性,记录一次排查过程

2023-07-26 16:32:08 152

原创 AndroidStudio Memory profiler(内存分析器)

使用AndroidStudio 分析app进程中内存状况,哪些对象被频繁创建导致内存抖动?哪些占用对象一直没有被销毁,查看调用栈逐层分析。

2023-07-26 15:36:53 884

原创 Android 帧率分析

使用Android Studio CPU Profiler 分析游戏的掉帧情况

2023-07-26 14:46:31 826

原创 Android 耗时分析(adb shell/Studio CPU Profiler/插桩Trace API)

使用adb logcat、adb shell 、studio cpu profiler、插桩Debug trace API ,来分析冷启动耗时、Activity显示耗时、某个方法具体耗时点,提高流畅度

2023-07-26 12:13:33 1765

原创 Android adb shell 查看App内存(java堆内存/vss虚拟内存/详细的内存状况/内存快照hprof)和系统可用内存

通过adb shell 查看app内存和系统内存,分析是java 堆内存不足还是app虚拟内存不足还是系统可用内存不足导致内存紧张,从而引发oom

2023-07-26 11:33:44 7043

原创 在oppo系统中Android Oaid SecurityException 解决方案

处理oppo系统下oaid SecurityException问题

2023-07-26 10:00:00 440

原创 Android adb shell和Studio 查看App进程中线程(总数和列表)

使用adb shell 命令查看游戏的线程总数和线程列表

2023-07-26 09:45:00 3569

原创 Android帧动画导致的Bitmap OOM(外来sdk带来风险点)

android 分析内存快照,锁定bitmap oom的元凶,帧动画导致。

2023-07-26 09:00:00 139

原创 Android性能优化之游戏的Theme背景图

慎重使用Theme的windowBackgroud ,防止与Activity的root布局的windowbackg重复绘制

2023-07-25 17:32:14 245

原创 Android性能优化之修复游戏中内存泄漏(java层)

在bugly上内存OOM越来越严重,因此,近期对内存进行优化。从java层的内存进行优化开始,通过LeakCannary或者adb shell 获取到内存快照,从而发现好几处内存泄漏点。

2023-07-25 17:04:46 246

原创 Android 海外版本中远程仓库无法拉取问题

在处理海外版本时 ,经常遇到远程仓库无法加载的问题,是网络问题导致的。要么,公司运维搭建可翻墙的梯子,或其他的方式避开限制。还有一种方式,是找到网站对应的ip ,在host 中配置,便可绕开限制。

2023-07-25 14:34:35 239

原创 git 提交换行符问题:LF would be replaced by CRLF

处理git 提交换行符 问题

2023-07-25 10:55:18 1669

原创 Android System crash DeadSystemException(Service/Activity/终极解决方案)

当Android系统服务已经死亡,app进程与之通讯,会抛出DeadSystemException。可能发生在Activity的生命周期,service的生命周期,其他涉及跨进程通讯,处理起来各有不同

2023-05-08 10:37:11 4613

原创 Android 内存分析(java/native heap内存、虚拟内存、处理器内存 )

通过Byte数组和Bitmap来了解,dalvik java 堆内存、native heap 内存、32位设备3G虚拟内存,手机处理器内存等等。

2023-05-05 15:56:18 4710 3

原创 Android 获取奔溃crash的日志(adb logcat或者dropbox)

记录下adb logcat 抓取奔溃日志,dropbox 获取系统记录的奔溃,判断是系统进程还是app进程导致奔溃

2023-04-28 10:51:33 7702

原创 Android 7.1 Toast修复之终极篇,进程不奔溃(包含apk和兼容外来dex插件)

不再发愁Toast问题:通过UncaughtExceptionHandler拦截Android 7.1Toast 异常;Looper.loop() 让主线程恢复消息处理机制,不奔溃;

2023-04-13 18:09:03 758

原创 Android OkHttp ProtocolException 707 bytes but received 1065

从Okhttp 源码角度分析ProtocolException异常解决方案

2023-03-29 16:25:22 241

原创 Android 7.1 Toast修复之多渠道包动态使用Booster或者Lancet plugin

修复Android 7.1 系统Toast Bug ,适配多渠道包,动态使用Booster插件或者Lancet插件

2023-03-24 16:58:05 459

原创 Android Lancet Aop 字节编码修复7.1系统Toast问题(WindowManager$BadTokenException)

Android 通过Lancet Aop 字节编码修复7.1系统Toast Bug

2023-03-21 16:54:45 566

原创 Android处理native crash(ndk-stack和addr2line)

android ndk-stack和addr2line处理native crash

2023-02-06 11:50:23 850 2

原创 Android Raphael使用(专治native 内存泄漏)

借用字节 开源的Raphael 快速定位 哪些so库中存在native 泄漏

2023-01-18 09:30:00 1057

原创 Android so库中UnsatisfiedLinkError

android so库 UnsatisfiedLinkError 方法找不到问题,逐步排除各种可能的原因

2022-09-13 16:54:54 852

原创 Android 处理WebView not install(源码分析定位)

Android WebView Installed问题,分析其FrameWork层中源码走向,解决问题。

2022-09-08 15:21:53 2864

原创 android Leakcanary/Studio Profiler/MAT 处理内存问题(泄漏和Big超大内存对象)

Android 处理内存问题(泄漏和大内存对象),借用Leakcanary/Studio Profiler/Mat。

2022-09-01 16:53:21 1607

原创 处理华为Framework层中curosr和空指针问题(反编译ROM和Hook动态代理)

处理华为ROM 源码报错(cursor和空指针),通过反编译华为 framework.dex 进行源码分析,Hook 动态代理来解决。

2022-08-30 12:03:21 1352

原创 Android 9.0 SQLiteCantOpenDatabaseException SQLITE_CANTOPEN(不支持WAL模式)源码分析定位

Android 9.0 及其以上不支持WAL模式导致 SQLiteCantOpenDatabaseException SQLITE_CANTOPEN 的java/native层 源码分析定位

2022-08-26 10:37:26 1781 3

原创 Android GLSurfaceView EGL_BAD_CONFIG 源码分析定位

Android GLSurfaceView 创建EglContext过程发生常见的几种异常,通过java和native层源码分析定位

2022-08-24 16:48:24 1039

原创 Android MediaPlayer IllegalStateException源码分析定位

MediaPlayer IIIegalStateException 源码分析定位

2022-08-18 15:02:45 888

原创 Android Koom 处理 app 的OOM 一些系列问题(java /native/thread leak)

使用快手团队的koom 专治android oom 问题,包含thread 线程过多、java /native 内存泄漏、java 大对象占用内存等等

2022-08-17 16:23:38 1023 2

原创 处理Activity#onResume()遇到java.lang.IllegalArgumentException诡异异常

记录处理Android 较为诡异的问题,Activity#onResume()发生IllegalArgumentException 异常。

2022-08-01 09:30:00 1220

原创 Android NDK 之CmakeList 笔记

在androidndk开发中,是经常需要通过cmakelist来配置引入库或者编译配置的。这里总结一些常用的cmakelist中api语法。

2022-07-21 11:34:19 1640

原创 Android NDK之Strip裁减so库

1.Strip基本介绍strip:在类Unix和Unix的操作系统中,strip程序可对可执行二进制程序和对象文件中,删除不必要的信息,从而带来更好的性能和减少磁盘空间的使用。“不必要的信息”指的是正常执行功能过程中,不需要的二进制信息,比方调试和符号信息。但该命令裁剪的程度,取决于开发者对这部分代码的具体实现。此外,使用strip可提高二进制文件在逆向工程中的安全性。如果没有二进制文件的信息和对象的名称,分析它将更加困难常用的strip 命令:strip - s xxx.so : 移除所有

2022-05-19 11:51:55 5939 2

原创 Android 如何处理Anr (借用Logcat和Trace 日志)

文章目录**1.Anr的基础知识****2.编写一个Anr的案例****3. 借用 logcat日志和trace文件分析Anr****获取logcat的日志文件****获取Trace.txt 文件**1.Anr的基础知识在开发中,遇到anr 的原因会有:主线程频繁进行耗时的IO操作:如数据库读写多线程操作的死锁,主线程被block;主线程被Binder 对端block;System Server中WatchDog出现ANR;service binder的连接达到上线无法和和System Se

2021-11-05 14:50:01 4765 1

原创 android插件化之BrocastReceiver

实现BrocastReceiver的插件之前,先来了解一下应用程序是如何被解析AndroidManifest.xml中各种标签的。先来了解一下应用程序安装过程系统启动过程中,会扫描某些目录的程序,安装加载过程,为应用程序分配Linux的用户Id和Linux的用户组Id,也会解析程序。先来看下scanPackageLI(): private PackageParser.Package sc...

2019-07-25 11:42:46 432

原创 Android插件化之ContentProvider

先来了解一下ContentProvider的安装和获取过程,查找Hook点。安装ContentProvider过程:应用程序在创建Application的过程中,执行handleBindApplication(),会将contentprovider进行安装。ActivityThreadprivate void handleBindApplication(AppBindData data) ...

2019-07-24 11:49:18 869 1

反编译工具

android常见的反编译工具,包含对apk编译的工具(apktool、dex2jar、jd),对系统文件boot.oat和service.odex编译的工具(oat2dex、smail、jadx-gui)。

2018-05-23

Volley#Request(GsonRequest,MultiPartRequest)

1.自定义带header(包含coockie),Json参数,Gson解析的GsonRequest. 2.自定义支持文件上传的MultiPartRequest. 3.拍照,图库图片,压缩图片一些列功能

2016-11-13

android6.0权限

android6.0动态权限处理,检查权限,是否弹窗解释权限,申请权限。

2016-11-05

android高效加载Bitmap

归纳总结: 1. 从缓存中读取图片:先从内存缓存中读取。 若是从内存中读取到的Bitmap为空,则在磁盘缓存中读取。 若是从磁盘中读取到的Bitmap为空,则从起始资源中读取 2.开启工作线程,执行从起始资源中读取bitmap的任务 3.计算合适比例,读取适屏的bitmap 4.检查ImageView与任务线程的一致性 5.最后Hanlder更新UI

2016-11-03

DownloadManager(强制升级与自选升级)

强制版本更新与用户自选更新

2016-08-22

CustomDatePicker

通过NumberPicker 自定义个性的DatePicker

2016-07-30

Android Espresso Test Intents and Webview

Android Espresso测试ui(intents,webviwe ,button等普通view,AdaoterView类型的View)

2016-07-22

Espresso Test UI

使用Espresso测试UI

2016-07-20

空空如也

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

TA关注的人

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