android
文章平均质量分 72
小妞的大熊
这个作者很懒,什么都没留下…
展开
-
Cgroup blkio简介和测试(使用fio测试)
因需要对docker镜像内的进程对磁盘读写的速度进行限制,研究了下Cgroup blkio,并使用fio对其iops/bps限速进行测试。Cgroup blkio简介Linux Cgroup(Control Groups)是Linux内核提供的用于限制、记录、隔离进程组可以使用的资源(cpu、memory、IO等)的一种机制。在/boot下面的对应config文件里查看Cgroup内核选项:CONFIG_BLK_CGROUP=yCONFIG_BLK_DEV_THROTTLING=yb转载 2020-10-22 17:39:39 · 1407 阅读 · 0 评论 -
Android开机优化之调整Launcher的加载时间
前言如前面两篇文章所描述的,1、Android开机速度优化简单回顾2、优化启动时间我们对Android系统的开机时间优化有了一个比较全面的了解,以及一些常用的调试手段(bootchart等),在这篇文章中我们先来看看如下这个问题,首先看一张图:如上图所示,1、在系统启动的时候,为什么像inputmethod、phone、systemUI及settings这些包加载启动的时候要比Launcher早个2秒多的时间呢?2、开机动画结束,到Launcher加载显示,这里存在一个2秒左原创 2020-09-21 16:24:55 · 4314 阅读 · 1 评论 -
优化启动时间
来自source.android.googlehttps://source.android.google.cn/devices/tech/perf/boot-times?hl=zh-cn本文档提供了有关改进特定 Android 设备的启动时间的合作伙伴指南。启动时间是系统性能的重要组成部分,因为用户必须等待启动完成后才能使用设备。对于较常进行冷启动的汽车等设备而言,较短的启动时间至关重要(没有人喜欢在等待几十秒后才能输入导航目的地)。Android 8.0 支持一系列组件的多项改进,因而可以缩短转载 2020-09-10 15:22:38 · 1173 阅读 · 0 评论 -
内核解析dts里面数组的方法
在内核驱动开发的时候,经常会需要在DTS里面定义数据,然后在驱动里面去解析获取相应的默认配置参数数据,这里记录一下如何在驱动代码里面去解析DTS里面的二维数据的方法。1、DTS里面数组定义二、驱动代码里面解析...原创 2020-09-09 10:53:57 · 994 阅读 · 0 评论 -
存储设备IO优化向导(blkio)
1、概述虽然存储设备的恨不能在近年来一直在稳步提升,从raw nand到emmc,再到UFS都在进步,但和CPU相比它们依然是一个低俗的外设,并且IO是不可抢占的,所以应用程序在交互中等待IO会带来非常糟糕的用户体验,大部分程序员都意识到了这一点,所以绝大多数的程序尽量都会想办法改善这个问题,例如预读(readahead)和异步IO等。但是有些场景是很难规避IO的影响的。比如启动应用和本地音视频播放。如果在这两个场景中,还有其它的程序来竞争IO,那对用户体验来说可能无法接受。2、现有的优化设想有原创 2020-08-21 16:51:20 · 702 阅读 · 0 评论 -
Android开机速度优化简单回顾
Android的开机速度,基本上没人说快的,通常移植完系统后,马上要看的事情就是优化开机时间,以下是简单回忆以下以前做优化的那些事。开机时间都花在哪?优化开机时间,通常做的首先是那有有没有BUG,明显不合理的先解决,由于开发阶段稳定性问题,一些地方可能延时加的大,或者频率设的低,先记下来,后面定期还会再看。这些先不看的话,一般拿到机器,我们统计开机时间,主要看如下几个时间段分布:开机按键时间、亮屏时间(基本固定,除非弄错了,基本检查一遍确定) uboot启动时间 内核启动后到bootanim转载 2020-08-21 15:31:13 · 6121 阅读 · 2 评论 -
Binder Driver缺陷导致定屏问题分析
Binder Driver缺陷导致定屏问题分析引用一、背景知识点1.1 工具简介1.2 Binder简介二、初步分析2.1 问题描述2.2 初步分析三、ramdump分析3.1 结构体binder_thread3.2 binder_transaction结构体3.3 特殊的29163.4 binder_write_read结构体3.5 mOut && mIn3.6 疑难悬案四、真相大白4.1 案件侦破4.2 案卷解读4.3 总结引用本文讲解异步binder call是如何阻塞整个系统的,转载 2020-08-13 21:26:45 · 538 阅读 · 0 评论 -
一台电脑控制多台手机进行DDR压力测试
原创文章,转载请注明出处和作者出自:http://blog.csdn.net/xl19862005作者:Xandy使用如下bat批处理可以用一台电脑控制多台手机进行DDR压力测试@echo offset testTimeInsecond=1800set mbytes=512set threads=8@echo off echo 等待设备连接……:NOCONNECTED原创 2018-01-08 12:15:08 · 1966 阅读 · 0 评论 -
Linux Shell 判断块设备节点是否存在
/************************************************************************* * Linux Shell 判断块设备节点是否存在 * 说明: * 能牌问shell脚本-f不能判断mmc设备节点的问题,查了一下资料,发现不能 * 使用-f来判断,要使用-e或者-b来判断才行。转载 2018-01-23 15:19:33 · 1885 阅读 · 0 评论 -
开源图表库hellocharts之最详细的使用介绍
现在HelloCharts支持以下chart类型:Line chart(cubic lines, filled lines, scattered points)(线图) Column chart(grouped, stacked, negative values)(柱形图) Pie chart(饼图) Bubble chart(泡泡图) Combo chart(column转载 2017-11-29 16:21:40 · 1973 阅读 · 1 评论 -
排查内存泄漏最简单和直观的方法
内存泄漏无疑会严重影响用户体验,一些本应该废弃的资源和对象无法被释放,导致手机内存的浪费,app使用的卡顿,那么如何排查内存泄漏呢?当然,首先我门有google的官方文档可以参考:排查内存泄漏官方文档官方文档(二)大部分博客的方法也来自于此。总的来说,就是使用android studio 的monitor memory功能监测app主进程占用的内存,触发GC操作,而后观察内存的占用情况,如转载 2017-10-25 14:46:12 · 4067 阅读 · 0 评论 -
通过binder实现系统和app匿名内存共享
系统和app数据交互的方式有很多种,如:jni、socket、binder等 这个方法都各有优缺点 1、jni 优点:直接调用,访问快 缺点:代码量大,至少需要实现本地server、jni及java本地调用三部分的代码 2、socket 优点:基于C/S架构,代码量较少 缺点:需要两次内存拷贝,效率低下 3、binder 优点:基于C/S架构,代码量较少,只进行一次内存拷贝,相对于原创 2017-07-03 17:12:55 · 768 阅读 · 0 评论 -
android实现一键切换显示方向
android实现一键切换显示方向功能要求:点击 button,一键实现显示方向0和180度切换IWindowManager mWm;mWm = IWindowManager.Stub.asInterface(ServiceManager.getService("window"));//修改显示方向mWm.freezeRotation(0);//0度mWm.freezeRotation(1)原创 2017-07-03 15:31:28 · 532 阅读 · 0 评论 -
在系统里设置文件默认打开APP
clearPackagePreferredActivities及addPreferredActivity使用转载 2017-04-25 11:59:35 · 2030 阅读 · 0 评论 -
android mtp模式下连接PC后只显示指定文件夹
PC连接上responder设备之后,不是直接对设备中的存储分区进行访问,而是通过vfs的方式间接访问存储分区中的文件,这个作为Initiator端的PC设备来说,就不再需要关心要访问的responder存储分区是什么文件系统了,通过公用的vfs就可以对不同文件系统的存储设备进行读写了原创 2017-03-06 17:13:31 · 5260 阅读 · 2 评论 -
android5.1 单次下滑直接切到quick setting
android5.1默认的系统,单次下拉statusBar时,是不会直接切到quicksetting界面的,需要拉两次才切到quicksetting,作如下修改就可以实现单次下拉直接切到quicksetting在frameworks/base/packages/systemui/src/com/android/systemui/statusbar/phone/NotificationPan原创 2016-08-09 19:37:19 · 937 阅读 · 0 评论 -
android音频通信(三)——双向通信(A2B协议)之手机接收
转载请注明文章出处和作者!出处:http://blog.csdn.net/xl19862005作者:大熊(Xandy) 写在最前: 自从发布android音频通信的两篇博客之后,有很多同仁和有意向合作的人士联系过我,在这里首先深表感谢与支持!但也有一部分朋友希望提供源码和相应的技术资料等等,在这里我要说说我个人对国内目前IT行业的一些风气及看法。原创 2013-04-27 20:30:05 · 16663 阅读 · 46 评论 -
android音频口通信(二)——2FSK信号解调
转载请注明文章出处和作者!出处:http://blog.csdn.net/xl19862005作者:大熊(Xandy)一、解调电路 我的设计中,解调端用的是MSP430的单片机,因为TI这种系列的单片机功耗很低,在休眠状态下,电流可达到uA级,正常工作下电流也可以保持在几个mA级左右。 将手机右声道接至MSP430单片机的P2.3脚原创 2013-01-21 23:01:46 · 14568 阅读 · 17 评论 -
Android让所有应用都竖屏显示或者横屏显示
1. 所有应用竖屏显示:frameworks/base/policy/src/com/android/internal/policy/impl/PhoneWindowManager.javapublic int rotationForOrientationLw(int orientation, int lastRotation, boolean displayEnabl...转载 2018-05-08 17:23:00 · 6742 阅读 · 0 评论 -
一键分析Android的BugReport
在Android系统测试中,经常要抓取log,而内置的BugReport功能无异是最方便全面的。那么问题来了,BugReport包含的信息虽多,但分析起来就成了麻烦,当然觉得麻烦的不只我一个,还有space2。这位前辈为此写了一个名为chkbugreport的开源工具,可以直接把对BugReport进行分析,好吧,我的麻烦被别人解决了。同时受同事启发,把chkbugreport工具做了个强化,实现...转载 2018-06-14 09:17:21 · 2953 阅读 · 0 评论 -
Android Open Accessory 协议分析与开发
1. 背景介绍 2011年Google推出Android开放配件协议AOA(Android Open Accessory Protocol)及配件开发工具包ADK(Accessory Development Kit)。当时开源硬件和硬件创业都比较热,其中以Arduino平台为代表。Google想借着这个硬件平台开拓智能家具的市场,借此推出了AOA协议和对应的开发平台,以便打通Android手机...转载 2019-09-29 12:08:25 · 2109 阅读 · 0 评论 -
taskset的简单用法--进程绑核
什么是绑核所谓绑核,其实就是设定某个进程/线程与某个CPU核的亲和力(affinity)。设定以后,Linux调度器就会让这个进程/线程只在所绑定的核上面去运行。但并不是说该进程/线程就独占这个CPU的核,其他的进程/线程还是可以在这个核上面运行的。如果想要实现某个进程/线程独占某个核,就要使用cpuset命令去实现。其实,很多情况下,为了提高性能,Linux调度器会自动实现尽量让某个进程...转载 2019-07-30 14:58:07 · 3230 阅读 · 1 评论 -
android系统中区分UDisk和SDCard
因项目要求,需要将UDisk和SDCard挂载的名称区分开来,系统默认是将这些可移动存储设备的UUID作为其挂载的目录名称的,如下所示:818D-1319这些都是相应的移动存储器的UUID,这个目录名称在上层APP使用时让人会觉得很抓疯,所以这里通过本文的方法来修改这个挂载目录名。打开system/vold/PublicVolume.cpp这个文件,在doMount这个函数里有如下一段...原创 2019-02-22 18:25:45 · 2074 阅读 · 2 评论 -
Android设置里面默认存储器选项(default write disk)的实现
原生的Android设置里面没有默认存储器的选项,但是MTK偏偏加上了这个功能,可能MTK觉得这个比较有用吧,所以,他们在原生的基础上面做了修改,加上了这个功能。但是高通平台没有这个功能,相对MTK来说,高通比较严谨一点,不会随随便便加上一些功能,但是MTK平台优化了很多东西(有有点也有缺点),开发者这可能是很多山寨手机选择MTK平台的原因吧。 我给“默认存储器”做了一个简单的定义:一...转载 2019-02-15 20:24:17 · 717 阅读 · 0 评论 -
android下存储设备的使用
本文转自android官网,原文地址:https://source.android.google.cn/devices/storage1、概览1.1、存储Android 一直在不断发展,可支持各种存储设备类型和功能。所有 Android 版本均支持配有传统存储(包括便携式存储和内置存储)的设备。便携式存储是指物理介质(如 SD 卡或 USB 设备),用于进行临时数据传输/文件存储。...转载 2019-02-15 17:59:55 · 2156 阅读 · 0 评论 -
Linux内核中断引入用户空间(异步通知机制)
当linux内核空间发生中断后怎么使用户空间的应用程序运行相应的函数呢,当芯片有数据到来时内核会产生一个中断,但是怎样通知应用程序来取数据,以前这个问题一直困扰我很长时间,后来发现linux中有异步通知机制,在用户程序中用signal注册一个响应SIGIO信号的回调函数,然后在驱动程序中向该进程发出SIGIO信号便完成该功能,下面是该功能具体实施方法:1.在驱动中定义一个static stru...转载 2018-12-12 15:50:06 · 471 阅读 · 0 评论 -
android:persistent="true"相关--保证不被系统kill掉
转自:http://blog.csdn.net/zmyde2010/article/details/6756368总结:1、必须是System/app/下面的应用2、android:persistent="true"属性必须设置。3、查看方法:adb shell cat proc/进程id/oom_adj4、修改方法:write /sys/module/lowmemory...转载 2018-11-20 17:46:03 · 3604 阅读 · 0 评论 -
具有系统签名的APK实现APK静默安装
针对具有系统签名权限的APK(系统运用)要实现对其它第三方APK静默安装可用如下代码实现1、manifest中权限申请<uses-permission android:name="android.permission.INSTALL_PACKAGES" /> 2、实现方法public void installSilent(Context context, Str...原创 2018-09-28 11:11:13 · 1712 阅读 · 1 评论 -
android下将指定的进程/线程绑定到指定的CPU
针对平台优化的APP,需要根据具体的CPU型号来将一些任务重,占CPU资源多的线程绑定到CPU上处理能力更强的大核上,可参考如下代码:1、将整个进程中的各个线程绑定到指定CPU核#include <stdio.h>#include <stdlib.h>#include <math.h>#include <sched.h>#inclu...原创 2018-09-18 15:49:52 · 6951 阅读 · 0 评论 -
Android 核心技术
转至android官网https://source.android.com/devices/tech/欢迎访问本网站的 Android 核心技术部分。您可以在这里找到有关常用功能的信息,这些信息可帮助希望修改、移植 Android 软件或向其提供贡献的人员和组织。这是面向工程师的“后台级别”信息。ART 和 DalvikAndroid Runtime (ART) 是 Android 的...转载 2018-08-14 11:38:46 · 1546 阅读 · 0 评论 -
进程优先级
线程与进程的最大区别就是是否共享父进程的地址空间,内核角度来看没有线程与进程之分,都用task_struct结构体来表示,调度器操作的实体便是task_struct。一、 进程优先级进程可划分为普通进程和实时进程,那么优先级与nice值的关系图:优先级值越小表示进程优先级越高,3个进程优先级的概念:静态优先级: 不会时间而改变,内核也不会修改,只能通过系统调用改变nice值的方法区修改。优先级映射...转载 2018-07-11 15:17:00 · 1314 阅读 · 0 评论 -
android下如何限制安装APP的数量
转载请注明文章出处和作者!出处:http://blog.csdn.net/xl19862005作者:大熊(Xandy)由于项目的要求,需要限制用户安装APP的数量,对android app安装流程了解的都知道,核心的东西都在installd这个服务里面,我这里所做的处理也在这里面。installd的源码位于frameworks/native/cmds/i原创 2016-08-03 14:18:00 · 3817 阅读 · 0 评论 -
VectorDrawable-第一章
VectorDrawable转载 2016-07-15 15:48:52 · 523 阅读 · 0 评论 -
VectorDrawable:适应不同分辨率的drawable资源
这篇文章是对VectorDrawable的简单介绍,主要参考了android官方文档。更详细的讲解请参考stylingandroid网站的3篇文章 https://blog.stylingandroid.com/vectordrawables-part-1/ ,或者关注本站将发表的翻译版本。一、VectorDrawable在android5.0(API Level 21)中,我们可转载 2016-07-15 15:47:00 · 1132 阅读 · 0 评论 -
android电池管理系统
1、概述随着移动智能设备的快速发屏,电池的续航能力在很大情况下诱导了大众消费者的购买选择,android系统对电源管理的合理与否直接影响到电池的续航能力,而电池系统作为其中的一部分,主要用于对电池状态的监控(电池电量、电池状态及电池温度等)。下面将详细分析android的电池系统架构。2、Android电池系统架构Android系统中对电池的管理驱动层继承了linux下的power s原创 2014-08-15 10:43:57 · 4586 阅读 · 0 评论 -
MID默认横屏,打开竖屏APK方向反向的问题
在android4.2sdk上,机器默认是横屏,横屏下camera位于机器右上角,安装竖屏APK后,APK旋转180度,需要将camera位置朝下使用。这一点不符合消费者使用习惯,需要在竖屏APK的情况下,camera位置朝上。解决办法:1.在frameworks/base/core/res/res/values/config.xml文件下查找config_reverseDef转载 2014-04-03 18:03:14 · 1431 阅读 · 0 评论 -
工作笔记
1、退出程序返回到主界面 //back home to disable as video,games etc. Intent intent = new Intent(Intent.ACTION_MAIN); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.addCategory(Intent.CATEG原创 2013-12-19 15:02:19 · 1756 阅读 · 0 评论 -
android makefile 文件中使用shell命令
$(shell cp $(LOCAL_PATH)/$(ON_BOARD_EMMC_TYPE)/primary_gpt $(LOCAL_PATH)/);$(shell mv $(LOCAL_PATH)/$(ON_BOARD_EMMC_TYPE)/secondary_gpt $(LOCAL_PATH)/);原创 2013-08-22 15:25:50 · 1518 阅读 · 0 评论 -
android2.3.4增加gsensor
转载请注明文章出处和作者!出处:http://blog.csdn.net/xl19862005作者:大熊(Xandy)硬件平台:TI DM37XX sensor:lsm330dlc(acc + gyr)1、将lsm330dlc驱动代码放到drivers/input/misc目录下,修改此目录下的kconfig和Makefile文件分别增加如下字段:Kcon原创 2013-05-13 11:24:18 · 2435 阅读 · 0 评论 -
调整内核驱动加载的顺序
在做TI的方案开发的时候,一直就不是很满意它的系统启动时间,不光是从xload进入到uboot,uboot运行及加载内核,这几项所耗的时间就大概有10s之久。当内核起来之后,各项外设驱动的加载及初始化所耗的时间也是相当惊人的,从内核加载成功到LCD亮起来显示内核logo(小企鹅),这个时间也大概有5s之久,真的是要受不了了!!看了一下系统启动的log,发现内核加载成功之后到LCD显示l原创 2013-03-25 16:44:30 · 2890 阅读 · 0 评论