android
文章平均质量分 86
心中要有一片海
这个作者很懒,什么都没留下…
展开
-
Lineage 17.1 源码编译(以 HTC 10为例)
文章目录一、下载源码添加设备相关的project二、编译配置环境变量执行编译一、下载源码╭─kevin@kevin-msi ~ ╰─$ mkdir lineage╭─kevin@kevin-msi ~ ╰─$ cd lineage╭─kevin@kevin-msi ~/lineage ╰─$ repo init -u https://github.com/LineageOS/android.git -b lineage-17.1 参考清华这个换源添加设备相关的proje原创 2020-12-20 21:49:21 · 1476 阅读 · 6 评论 -
Android JNI 局部引用溢出(local reference table overflow (max=512))
文章目录JNI的局部引用溢出问题原因探究和修复的方法什么是局部引用?局部引用溢出原因是什么?1. 在Native函数中,通过调用JNI函数创建大量Java对象2. 在Native子线程中,通过调用JNI函数创建大量Java对象额外说明JNI的局部引用溢出问题原因探究和修复的方法当深入使用JNI的时候,局部引用溢出的问题还是很容易遇到的。让我们一起来探究原因和修复方法什么是局部引用?局部引...原创 2019-11-17 13:15:02 · 1662 阅读 · 0 评论 -
搭建Android源码调试环境(一)——下载编译Android源码
1. 环境准备工作运行Ubuntu18.04系统的主机一台,或者更新的版本应该也可以。(我这里使用的是Linux mint 18.3,Ubuntu的衍生版本)内存配置越高越好。我的是i7-4710HQ + 16G内存磁盘空间至少200G。源码,编译产生的文件,ccache加起来会占用很多空间安装依赖组件sudo apt-get install libx11-dev:i386 libr...原创 2019-01-18 17:13:44 · 1225 阅读 · 0 评论 -
搭建Android源码调试环境(二)——调试Java(使用AndroidStudio)
1. 生成Studio相关的文件编译idegen模块source build/envsetup.shmmm development/tools/idegen/执行以下命令development/tools/idegen/idegen.sh2. 源码导入Studio通过AndroidStudio打开AOSP根目录下的android.ipr文件3. 调试首先启动模拟器然后在fr...原创 2019-01-18 20:54:00 · 551 阅读 · 0 评论 -
搭建Android源码调试环境(三)——调试C/C++(使用CLion)
前言aosp自带gdbclient.py脚本用于调试kevin@kevin-GS60-2PL /mnt/2ffc0bac-5896-499a-9ae6-79e610162482/aosp $ gdbclient.py usage: gdbclient.py [-h] [--adb ADB_PATH] [-a | -d | -e | -s SERIAL] ...原创 2019-01-18 20:54:47 · 6437 阅读 · 6 评论 -
Android事件分发源码阅读笔记
ViewGroup.java /** * 将动作事件(MotionEvent)转换到特定子View的坐标空间, * 过滤掉不相关的指针(每个手指对应一个指针)ID,并在必要时覆盖其操作。 * 如果child为null,则假定MotionEvent将发送到此ViewGroup。 */ private boolean dispatchTrans...原创 2019-02-16 15:36:30 · 242 阅读 · 1 评论 -
使用GDB进行Android Native调试
使用GDB远程调试指定Android进程的时候,经常要查询pid,然后再attach。为了简化步骤,就写了个简化脚本。具体使用GDB调试Android进程的技巧直接看官方教程就好了,链接地址:使用 GDBgdbserver attach脚本android_gdbserver_attach#!/usr/bin/env bashgdbServerPid=`adb shell ps | grep...原创 2019-01-31 00:32:16 · 876 阅读 · 1 评论 -
ART虚拟机GC清除SoftReference(软引用)源码解析
引言调用栈art::mirror::Object::SetFieldObjectWithoutWriteBarrier<false, true, (art::VerifyObjectFlags)0, true> object-inl.h:771art::mirror::Object::SetFieldObject&a原创 2019-03-07 14:42:15 · 1096 阅读 · 0 评论 -
搭建Android源码调试环境(四)——调试ART虚拟机遇到的问题
前言首先我们要知道App的进程都是由zygote进程fork出来的。zygote进程启动的时候已经执行了ART虚拟机的初始化和启动的操作,而zygote进程又是由init进程fork出来的。因此如果你只是想调试虚拟机运行阶段,那就直接调试App进程,而如果想调试ART初始化和启动阶段。那就需要先关闭zygote服务,然后通过gdbserver detach到init进程调试,然后再启动zygot...原创 2019-01-23 19:12:15 · 2096 阅读 · 2 评论 -
Android Framework学习——如何加入并编译自定义的模块
研究AndroidFramework源码免不了要加入自己的模块进行调试学习。这里将会介绍如何加入自己的模块,并将相应的模块push到真机上进行调试 编写Android.mk具体在哪里编写呢?这里先解释一下目录的含义/home/kevin/Downloads/cm13htcm9 我下载的cm源码所在的目录 /home/kevin/Downloads/cm13htcm9/packages/apps/原创 2016-12-04 21:12:33 · 5237 阅读 · 0 评论 -
Android性能优化——界面流畅度优化
序言首先流畅度不仅仅是受到代码的影响。也会跟机器的硬件配置有关系。所以第一点需要明确的是,流畅度最低保证在哪个硬件配置之上。这样有了一个基点之后,才能比较好明确优化目标。不然你拿一个两三年前的机子来做优化。那就真的是吃力不讨好的事情。流畅度跟两方面有关:一、机器的配置,二、编写的代码。首先明确一点:流畅意味着 每一帧的绘制在16ms内完成。那如果在你选的最低配置的机子上达到了流畅,那就没必要优化了。原创 2016-11-20 22:53:07 · 1520 阅读 · 0 评论