<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[ 小邓(Java)]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/qeqeqe236</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; qeqeqe236]]></copyright><item><title><![CDATA[android.mk中几个常见配置]]></title><link>https://blog.youkuaiyun.com/qeqeqe236/article/details/109293821</link><guid>https://blog.youkuaiyun.com/qeqeqe236/article/details/109293821</guid><author>qeqeqe236</author><pubDate>Mon, 26 Oct 2020 17:13:10 +0800</pubDate><description><![CDATA[1.LOCAL_JACK_ENABLED

这个变量可以禁止使用Jack编译工具链编译该模块。在工作中，个人感觉目前jack工具链不是很稳定，经常会出现一些错误，比如：
ERROR: Security problem, see Jack server log (/tmp/jack-liujinwei/jack-8072.log)
这个时候，我就会在Android.mk中禁止该工具链。

禁止方法如下：




LOCAL_JACK_ENABLED := disabled


2.LOCAL_DEX_...]]></description><category></category></item><item><title><![CDATA[android IBinder 解析]]></title><link>https://blog.youkuaiyun.com/qeqeqe236/article/details/109164811</link><guid>https://blog.youkuaiyun.com/qeqeqe236/article/details/109164811</guid><author>qeqeqe236</author><pubDate>Mon, 19 Oct 2020 17:19:29 +0800</pubDate><description><![CDATA[http://home.lupaworld.com/home-space-uid-42237-do-blog-id-232429.html

远程对象的基础接口,是一个为了在执行进程中和进程间调用时的高性能，而设计的轻量级远程调用机制的核心部分。这个接口描述了和远程对象交互的抽象协议。不要直接实现这个接口，而是通过继承Binder来实现。

IBinder的关键API是与Binder.onTransact()相匹配的transact().这个方法分别允许你给IBinder对象发出一个请求,并接收一个...]]></description><category></category></item><item><title><![CDATA[理解Java内存模型]]></title><link>https://blog.youkuaiyun.com/qeqeqe236/article/details/108832574</link><guid>https://blog.youkuaiyun.com/qeqeqe236/article/details/108832574</guid><author>qeqeqe236</author><pubDate>Sun, 27 Sep 2020 17:30:53 +0800</pubDate><description><![CDATA[Java内存模型即Java Memory Model，简称JMM。JMM定义了Java 虚拟机(JVM)在计算机内存(RAM)中的工作方式。JVM是整个计算机虚拟模型，所以JMM是隶属于JVM的。

如果我们要想深入了解Java并发编程，就要先理解好Java内存模型。Java内存模型定义了多线程之间共享变量的可见性以及如何在需要的时候对共享变量进行同步。原始的Java内存模型效率并不是很理想，因此Java1.5版本对其进行了重构，现在的Java8仍沿用了Java1.5的版本。

关于并发编程

在并发...]]></description><category></category></item><item><title><![CDATA[Android权限动态权限修改和其他的Android配置修改]]></title><link>https://blog.youkuaiyun.com/qeqeqe236/article/details/108710969</link><guid>https://blog.youkuaiyun.com/qeqeqe236/article/details/108710969</guid><author>qeqeqe236</author><pubDate>Mon, 21 Sep 2020 15:25:28 +0800</pubDate><description><![CDATA[[Framework] 全方位理解Android权限之Android权限系统1

系列目录请点击这里：全方位理解Android权限

因为东忙西忙没时间整理这一块的东西，拖了有点久，现在继续更新

权限的性质

我们知道，Android应用都运行在沙盒中，默认情况下这些应用只能访问他们自己的域，即自己的文件和非常少量的系统服务。为了能够和系统或者其他应用交互，app就需要申请额外的一些权限。

permission（权限）实际上就是一个简单的字串，申明需要做哪些类型的操作。

比如文件读权限就是这么一个字.]]></description><category></category></item><item><title><![CDATA[5种必会的Java异步调用转同步的方法你会几种]]></title><link>https://blog.youkuaiyun.com/qeqeqe236/article/details/108584708</link><guid>https://blog.youkuaiyun.com/qeqeqe236/article/details/108584708</guid><author>qeqeqe236</author><pubDate>Mon, 14 Sep 2020 18:20:09 +0800</pubDate><description><![CDATA[Sunny先来说一下对异步和同步的理解：


同步调用：调用方在调用过程中，持续等待返回结果。 异步调用：调用方在调用过程中，不直接等待返回结果，而是执行其他任务，结果返回形式通常为回调函数。


其实，两者的区别还是很明显的，这里也不再细说，我们主要来说一下Java如何将异步调用转为同步。换句话说，就是需要在异步调用过程中，持续阻塞至获得调用结果。 不卖关子，先列出五种方法，然后一一举例说明：


使用wait和notify方法
	使用条件锁
	Future
	使用CountDownLatch...]]></description><category></category></item><item><title><![CDATA[2020-08-12]]></title><link>https://blog.youkuaiyun.com/qeqeqe236/article/details/107960900</link><guid>https://blog.youkuaiyun.com/qeqeqe236/article/details/107960900</guid><author>qeqeqe236</author><pubDate>Wed, 12 Aug 2020 16:40:40 +0800</pubDate><description><![CDATA[开机默认壁纸加载流程分析

标签（空格分隔）： Android开发

[参考资料]Android壁纸开发流程分析android壁纸服务流程浅析深入理解Android卷III 第八章深入理解Android壁纸



开机默认壁纸加载流程分析

	开机加载壁纸

		Step 1. new WallpaperManagerService()
			Step 2. getWallpaperDir()
			Step 3. loadSettingsLocked()
			Step 4. wallpaperF.sy.]]></description><category></category></item><item><title><![CDATA[/PROC/MEMINFO之谜]]></title><link>https://blog.youkuaiyun.com/qeqeqe236/article/details/84143698</link><guid>https://blog.youkuaiyun.com/qeqeqe236/article/details/84143698</guid><author>qeqeqe236</author><pubDate>Fri, 16 Nov 2018 18:03:49 +0800</pubDate><description><![CDATA[转至：http://linuxperf.com/?p=142

/proc/meminfo是了解Linux系统内存使用状况的主要接口，我们最常用的”free”、”vmstat”等命令就是通过它获取数据的 ，/proc/meminfo所包含的信息比”free”等命令要丰富得多，然而真正理解它并不容易，比如我们知道”Cached”统计的是文件缓存页，manpage上说是“In-memory  cach...]]></description><category></category></item><item><title><![CDATA[dumpsys命令用法]]></title><link>https://blog.youkuaiyun.com/qeqeqe236/article/details/79247805</link><guid>https://blog.youkuaiyun.com/qeqeqe236/article/details/79247805</guid><author>qeqeqe236</author><pubDate>Sat, 03 Feb 2018 16:25:42 +0800</pubDate><description><![CDATA[一、 概述

1.1 dumpsys命令用法

可通过dumpsys命令查询系统服务的运行状态(对象的成员变量属性值)，命令格式：dumpsys 服务名， 例如：


dumpsys activity //查询AMS服务相关信息
dumpsys window //查询WMS服务相关信息
dumpsys cpuinfo //查询CPU情况
dumpsys meminfo //查询内存情]]></description><category></category></item><item><title><![CDATA[adb shell dumpsys SurfaceFlinge 分析]]></title><link>https://blog.youkuaiyun.com/qeqeqe236/article/details/79247732</link><guid>https://blog.youkuaiyun.com/qeqeqe236/article/details/79247732</guid><author>qeqeqe236</author><pubDate>Sat, 03 Feb 2018 16:17:30 +0800</pubDate><description><![CDATA[对于很多Android的显示问题,我们需要使用adb shell dumpsys SurfaceFlinger命令来获取SurfaceFlinger的dump信息,这对于我们分析问题有很大的帮助,因此我们这里来详细讲解下SurfaceFlinger的dump.

SurfaceFlinger的dump信息主要通过dumpAllLocked 函数来获取,因此我们这里就以android 5.0在主]]></description><category></category></item><item><title><![CDATA[shell 脚本通过 dumpsys SurfaceFlinger --latency 数据计算 FPS 和评价流畅度。]]></title><link>https://blog.youkuaiyun.com/qeqeqe236/article/details/79247711</link><guid>https://blog.youkuaiyun.com/qeqeqe236/article/details/79247711</guid><author>qeqeqe236</author><pubDate>Sat, 03 Feb 2018 16:15:08 +0800</pubDate><description><![CDATA[由于采购机械臂测试性能用例和屏幕实际帧率变化，最终工具方案实现后搁置，拿出来”晒晒“。

一、设计初衷

1、面临用户和公司内领导试用中反馈的卡顿问题，思考如何能有效量化评估？
2、如何在尝试复现卡顿的过程中持续监控FPS和丢帧情况？

二、设定预期倒推查找解决方案

1、无root权限限制，可直接采集数据计算FPS、丢帧率、最大单帧间隔。
2、控制脚本影响，不要使监控脚本成为]]></description><category></category></item><item><title><![CDATA[通过 dumpsys SurfaceFlinger 分析Android 系统图层]]></title><link>https://blog.youkuaiyun.com/qeqeqe236/article/details/79247695</link><guid>https://blog.youkuaiyun.com/qeqeqe236/article/details/79247695</guid><author>qeqeqe236</author><pubDate>Sat, 03 Feb 2018 16:13:46 +0800</pubDate><description><![CDATA[一、通过 dumpsysSurfaceFlinger 分析Android 系统图层：

从下面的dumpsys log看出当前系统有三个图层（红色部分是每个图层的坐标和大小），从最底层到上层分别是ImageWallpaper(壁纸), SurfaceView(视频小窗口), launcher(桌面)。其中视频小窗口用Overlay的方式独立输出到视频层，这样的话只有壁纸层和桌面层通过GPU混合]]></description><category></category></item><item><title><![CDATA[Android CPU使用率]]></title><link>https://blog.youkuaiyun.com/qeqeqe236/article/details/79012683</link><guid>https://blog.youkuaiyun.com/qeqeqe236/article/details/79012683</guid><author>qeqeqe236</author><pubDate>Tue, 09 Jan 2018 14:39:53 +0800</pubDate><description><![CDATA[本文包含以下内容： 
1.介绍常见的获取android cpu使用率的方法 
2.介绍这些常见方法背后的原理 
3.介绍我自己写的一个脚本，这个脚本可以获取各个线程在cpu各个核上的占用率

一、常见的获取Android CPU使用率方法及其原理
首先说一下如何查看cpu的基本信息，相信很多人也知道，使用下面的命令即可
adb shell cat /proc/cpuinfo
比如我]]></description><category></category></item><item><title><![CDATA[理解Android编译命令]]></title><link>https://blog.youkuaiyun.com/qeqeqe236/article/details/78792731</link><guid>https://blog.youkuaiyun.com/qeqeqe236/article/details/78792731</guid><author>qeqeqe236</author><pubDate>Wed, 13 Dec 2017 15:47:34 +0800</pubDate><description><![CDATA[一、引言

关于Android Build系统，这个话题很早就打算整理下，迟迟没有下笔，决定跟大家分享下。先看下面几条指令，相信编译过Android源码的人都再熟悉不过的。


source setenv.sh
lunch
make -j12




记得最初刚接触Android时，同事告诉我用上面的指令就可以编译Android源码，指令虽短但过几天就记不全或者忘记顺序，每次编译]]></description><category></category></item><item><title><![CDATA[Android源代码编译命令m/mm/mmm/make分析]]></title><link>https://blog.youkuaiyun.com/qeqeqe236/article/details/77202288</link><guid>https://blog.youkuaiyun.com/qeqeqe236/article/details/77202288</guid><author>qeqeqe236</author><pubDate>Tue, 15 Aug 2017 22:35:04 +0800</pubDate><description><![CDATA[Android源代码编译命令m/mm/mmm/make分析





        在前文中，我们分析了Android编译环境的初始化过程。android编译环境初始化完成后，我们就可以用m/mm/mmm/make命令编译源代码了。当然，这要求每一个模块都有一个Android.mk文件。Android.mk实际上是一个Makefile脚本，用来描述模块编译信息。Android编译系统]]></description><category></category></item><item><title><![CDATA[理解 Android Build 系统]]></title><link>https://blog.youkuaiyun.com/qeqeqe236/article/details/77202129</link><guid>https://blog.youkuaiyun.com/qeqeqe236/article/details/77202129</guid><author>qeqeqe236</author><pubDate>Tue, 15 Aug 2017 22:31:41 +0800</pubDate><description><![CDATA[理解 Android Build 系统







WeiboGoogle+用电子邮件发送本页面









前言

Android Build 系统是 Android 源码的一部分。关于如何获取 Android 源码，请参照 Android Source 官方网站：

http://source.android.com/source/downl]]></description><category></category></item><item><title><![CDATA[Android自动化测试-Monkey性能测试]]></title><link>https://blog.youkuaiyun.com/qeqeqe236/article/details/76146713</link><guid>https://blog.youkuaiyun.com/qeqeqe236/article/details/76146713</guid><author>qeqeqe236</author><pubDate>Wed, 26 Jul 2017 14:41:07 +0800</pubDate><description><![CDATA[Android自动化测试-Monkey性能测试




一、Monkey简介

Android的SDK 里面，Monkey的tools是一个命令行工具，当连接Android设备时，只要在命令行里输入相应命令就能运行tools；Monkey test是一项压力测试，可以在规定的次数范围内做任何随机的操作，随机操作包括点击、滑动、Application切换、横竖屏、应用关闭等等，用户能做]]></description><category></category></item><item><title><![CDATA[Android内核分析系统的启动log]]></title><link>https://blog.youkuaiyun.com/qeqeqe236/article/details/75530877</link><guid>https://blog.youkuaiyun.com/qeqeqe236/article/details/75530877</guid><author>qeqeqe236</author><pubDate>Thu, 20 Jul 2017 15:40:36 +0800</pubDate><description><![CDATA[本文是《Android内核开发》系列的第八篇文章，本文主要关注如何分析Android系统的启动log，学会通过搜索重要的TAG标签，找到Android启动过程中的重要节点。




要学会分析系统的启动log信息，首先得了解Android系统的启动过程，建议先阅读《Android内核开发：图解Android系统的启动过程》这篇文章，它详细介绍了Android系统的启动过程。其次，你需要知]]></description><category></category></item><item><title><![CDATA[WatchDog工作原理]]></title><link>https://blog.youkuaiyun.com/qeqeqe236/article/details/75431462</link><guid>https://blog.youkuaiyun.com/qeqeqe236/article/details/75431462</guid><author>qeqeqe236</author><pubDate>Wed, 19 Jul 2017 17:58:25 +0800</pubDate><description><![CDATA[一、概述

Android系统中，有硬件WatchDog用于定时检测关键硬件是否正常工作，类似地，在framework层有一个软件WatchDog用于定期检测关键系统服务是否发生死锁事件。WatchDog功能主要是分析系统核心服务和重要线程是否处于Blocked状态。

监视reboot广播；监视mMonitors关键系统服务是否死锁。

二、WatchDog初始化

2.1 st]]></description><category></category></item><item><title><![CDATA[dumpsys介绍]]></title><link>https://blog.youkuaiyun.com/qeqeqe236/article/details/75426029</link><guid>https://blog.youkuaiyun.com/qeqeqe236/article/details/75426029</guid><author>qeqeqe236</author><pubDate>Wed, 19 Jul 2017 17:34:55 +0800</pubDate><description><![CDATA[目录

1. 概要2. 工作原理

2.1 dumpsys的代码逻辑2.2 系统服务的dump方法
3. 解析dumpsys输出

请尊重原创版权，转载注明出处。

1. 概要

dumpsys是Android提供的系统工具，可以用来查看所有系统服务的信息。
在命令行输入如下命令，就可以罗列出当前所有的系统服务名：
$ adb shell dumpsys -l
Curre]]></description><category></category></item><item><title><![CDATA[Watchdog机制以及问题分析]]></title><link>https://blog.youkuaiyun.com/qeqeqe236/article/details/75425909</link><guid>https://blog.youkuaiyun.com/qeqeqe236/article/details/75425909</guid><author>qeqeqe236</author><pubDate>Wed, 19 Jul 2017 17:31:28 +0800</pubDate><description><![CDATA[目录

1. 概览2. Watchdog机制

2.1 Watchdog的初始化2.2 添加Watchdog监测对象2.3 Watchdog的监测机制
3. 问题分析方法

3.1 日志获取3.2 问题定位3.3 场景还原
4. 实例分析5. 总结

请尊重原创版权，转载注明出处。

1. 概览

Watchdog的中文的“看门狗”，有保护的意思。最早引入Watchdo]]></description><category></category></item></channel></rss>