自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(38)
  • 资源 (2)
  • 收藏
  • 关注

原创 Sensor系列之aDSP端Sensor Driver流程

--所有的存在都是为了走向毁灭而设计的。--我们被囚禁在这....--生与死的无尽螺旋里。--这是诅咒?--还是惩罚?--面对着将无解谜题交予我们的神明,我们会有反抗的一天吗?本系列导航:Android简单的计步器应用实现Android Native到HAL源码剖析,以sensor为例Android Sensor HAL层初始化流程(基于Qualcomm平台)Sensor系...

2018-07-06 19:19:28 5700 4

原创 fingerprint-faceunlock连续使用72小时后,需要输入密码进行强认证解锁

fingerprint-faceunlock连续使用72小时后,需要输入密码进行强认证解锁流程探索Google官方术语中,password, pin or pattern这三种类型的屏幕锁称为strong method authentication,强方法认证,而像指纹/面容解锁的方式则称作辅助的认证方式(weak authentication)。为了安全起见,当上一次强认证解锁后达到一定的时间,例如72小时,则需要用户进行强制认证进行解锁设备,本文主要叙述timeout发生后要求强制解锁认证的流程

2021-03-19 17:07:09 2284 1

原创 Android R系统Fingerprint指纹流程归纳

Android R中fingerprint新适配以及解锁的系统层逻辑归纳

2021-03-19 16:40:04 1994

原创 d2j-dex2jar之DexException :not support version

d2j-dex2jar之DexException :not support version近期使用dex2jar反编译apk,遇到报错,这里记录下解决过程。命令详细错误如下:./d2j-dex2jar.sh ../classes.dex dex2jar ../classes.dex -> ./classes-dex2jar.jarcom.googlecode.d2j.DexException: not support version. at com.googlecode.d2j.r

2020-12-30 10:13:16 3802 2

原创 ActivityManagerService对于app缺少运行时权限而crash的一种友好处理方法

我们都知道runtime权限是google在android上权限管理的又一大重要改变,在应用程序安装过程中,只会grant install部分的基本权限,而对于dangerous的权限,应用程序需要在运行时主动申请,并动态的由用户来确认是否需要给予对应的权限。当然,google在开发者文档中也详细的介绍了关于新的权限申请机制,也给app开发人员带来了新的机遇与挑战,但是对于很多旧版本的app或...

2018-09-19 15:27:06 1603

原创 android探索之UID u0_axxx的由来

通过PackageManager的学习,我们知道,android的UID和linux的UID根本是两回事,Linux的UID是用于针对多用户操作系统中用于区分用户的。而Android中的UID是用于系统进行权限管理的,相信大家在shell环境中进行ps命令查询的时候,屏幕都会输出如下的信息,那么,对于输出信息中的USER一栏中具体的system,radio,u0_a1(CanlendarProvi...

2018-08-09 10:57:41 7928

原创 linux tar命令使用方法详注

tiny.hui@build-server:$ tar --usage用法: tar [-AcdrtuxGnSkUWOmpsMBiajJzZhPlRvwo?] [-g FILE] [-f ARCHIVE] [-F 名称] [-L NUMBER] [-b BLOCKS] [-H FORMAT] [-V TEXT] [-I PROG] [-C DIR...

2018-07-24 13:00:24 704

原创 搭建Gitlab仓库管理系统

GitLab  是一个基于git的仓库管理程序,也是一个方便软件开发的强大完整应用。这里主要整理一下基于ubuntu 14.04中gitlab的构建过程。一,安装相关软件sudo apt-get install vim git curl openssh-server ca-certificates postfix若有遇到需要安装依赖包,首先通过如下命令获取对应的安装包版本:su...

2018-07-18 15:41:29 982

原创 android JNI数据结构传递实例

之前遇到一个项目,在C代码端有个数据结构需要app层传递数据,其结构体如下:typedef struct{ uint8_t type; union { char name[PL_MAX_NAME + 1]; char loc[PL_MAX_LOC + 1]; pl_prod_type_t pr...

2018-07-09 16:50:51 779

原创 android应用实例之默认浏览器检测

本文主要使用PackageManager相关API来检索系统默认的浏览器是哪一个,请参考。package com.example.testdefaultbrowser;import android.net.Uri;import android.os.Bundle;import android.app.Activity;import android.content.Context;imp...

2018-07-09 16:07:21 744

原创 Sensor系列之SensorDaemon与DSPS端通信过程

本文导读:SensorDaemon服务端流程解析Qualcomm messaging Interface(QMI)消息定义概述Sensor架构系列之dsps架构分析之前的文章我们知道了SensorDaemon服务端的启动以及dsps的架构及主要组成模块,今天我们继续深入挖掘下SensorDaemon与dsps具体的通信构建过程。首先回顾下,SensorDaemon的启动过程。1.init.qcom...

2018-07-05 13:39:24 2354

原创 我们开始搞一个 Android 项目啦

2018-07-03 15:55:59 462

原创 如何在 Linux 和 Windows 之间共享文件?

用一些来自 Linux 社区的工具,在 Linux 和 Windows 之间共享文件是超容易的。让我们看看可以做这件事的两种不同方法

2018-07-03 15:46:41 350

原创 Linux 文件系统详解

在Linux文件中,我们都会看到如下的文件目录及组织方式,如 /etc(不是用于“其它”文件),/usr(不是用于“用户”文件)和 /bin (不是“垃圾桶”)的意思。本博文将帮助你更快地了解这些。结构从终端窗口探索 Linux 文件系统是有道理的,因为终端,尽管只是文本界面,才是更好地显示 Linux 目录树结构的工具。事实上,帮助你了解这一切的、应该首先安装的第一个工具的名为:tree。如果你...

2018-07-03 15:38:43 354

原创 Sensor系列之dsps架构分析

前面的博文中,我们已经接触并分析了Sensors HAL Library,sensor1 remoting layer(libsensor1)以及SensorDaemon的相关流程,这里先串一下各个部分的主要功能。Sensor HAL Library: android的通用HAL接口,高通实现了自己的部分,相关文件为sensors_hal.cppsensor1 remoting layer(lib...

2018-07-02 13:50:02 3352 1

原创 Qualcomm messaging Interface(QMI)消息定义概述

QMI概述QMI是高通提供的一种多处理器进程间通信的功能接口,用于AP和BP侧的交互,通俗说法就是让终端设备TE(可以是手机,PDA,计算机)对高通BP侧的AMSS系统进行操作,如调用函数,读取数据,设置其中的NV项等。其具有的特点如下:具有同步和异步接口;支持在在多个处理器之间进行通信;良好的可扩展性;支持多客户端并发运行;支持多个服务端并发运行,且每个服务端还对应多个客户端;每个服务端还支持版...

2018-06-29 09:18:34 14572

原创 Sensor系列之SensorDaemon服务端流程解析

在前面的文章中,我们分析到Sensor HAL层的启动以及数据获取过程,我们提到,SensorContext以及Sensor在初始化的时候会通过sensor1_open创建一个客户端的socket,这个socket会不停的从服务端读取数据,并通过注册的回调来处理得到的数据,这个服务端的socket就是我们今天分析的主角,SensorDaemon守护进程,那么SensorDaemon在Sensor架...

2018-06-21 13:51:14 2833

原创 Sensor系列之Sensor HAL层数据获取,基于Qualcomm平台

前面我们分析了Android Sensor HAL层源码分析(基于Qualcomm平台),该篇博文主要讲解了Sensor HAL的初始化,以及hal层是怎样获取所有sensor列表的。今天我们来进一步了解下sensor hal层的数据获取流程。我们知道Native层SensorService启动后,会进入我们的treadLoop方法:bool SensorService::threadLoop()...

2018-06-15 15:46:34 5533 5

原创 android 原生输入法修改适配无TP设备实战

初衷由于项目需求,当前的设备没有TP,因此系统默认软键盘输入法无法点击输入,考虑0费用下,我将android原生的Soft Keyboard输入法进行了改造,让其可以通过物理按键获取到焦点,从而进行按键输入。下面是本次修改所作出的全部patch,请参考。diff --git a/samples/SoftKeyboard/res/xml/qwerty.xml b/samples/SoftKeyboa...

2018-06-14 16:29:25 417

原创 android系统ime指令

介绍几种android系统中ime的shell指令:enable指定的输入法root@kylin32:/data/anr # ime enable com.iflytek.inputmethod.gionee/.FlyIME Input method com.iflytek.inputmethod.gionee/.FlyIME: now enabled列出输入法信息,只显示service...

2018-06-14 16:24:26 1652

原创 android修改系统默认输入法

本文给出怎样修改android系统默认输入法安卓修改配置默认输入法,并且在实体硬键盘存在情况下,默认弹起输入法软键盘。frameworks/base下应用如下patch:diff --git a/packages/SettingsProvider/res/values/defaults.xml b/packages/SettingsProvider/res/values/defaults.x...

2018-06-14 16:20:39 1266

原创 android输入法测试demo

一个简单的输入法测试demopackage com.example.testime;import java.util.List;import android.os.Bundle;import android.provider.Settings;import android.app.Activity;import android.content.Context;import andr...

2018-06-14 16:18:59 980

原创 android for work(AFW)

本文介绍了 Android N 中提供的新 Android for Work 功能。QR 码配置Android for Work 现在支持使用 QR 码来配置企业负责的设备。安装向导现在允许您通过扫描 QR 码来配置设备。工作资料安全性挑战个人资料所有者可以要求用户为在工作资料中运行的应用指定安全性挑战。系统会在用户尝试打开任何工作应用时显示安全性挑战。如果用户成功完成安全性挑战,系统可解锁工作资...

2018-06-14 16:03:17 2327

原创 git命令速查表

2018-06-14 16:00:07 161

原创 PackageManager的intent匹配查询流程

上一篇文章我们分析了PackageManager应用程序权限管理,包括runtime权限等等,今天我们分析下packageManager是怎样查询匹配intent。本章设计源码路径:frameworks/base/services/core/java/com/android/server/pm/PackageManagerService.javaframeworks/base/services/...

2018-06-14 15:51:08 916

原创 Android M PackageManager应用程序权限管理源码剖析及runtime permission实战

上一篇文章我们介绍了android的包管理器PackageManager对于应用程序apk的安装流程,今天我们主要研究应用程序权限的管理部分。Android应用权限授予部分主要分为两部分,第一部分是在PKMS启动之后,且扫描完所有的app后,会对应用程序分配linux用户组ID,即授予他们所申请的资源访问权限。第一部分主要是对install等权限进行无条件授予,而许多核心app的默认权限则...

2018-06-14 15:22:28 2329

原创 Android M PackageManager对于应用程序apk的安装流程分析

应用程序安装有很多种方法,开发者最常见的就是使用adb install命令或者pm install脚本命令。很多的应用市场也都有自己的封装,android原生的安装应用为PackageInsteller。本篇涉及源码路径:system/core/adb/ commandline.cppframeworks/base/cmds/pm/src/com/android/commands/pm/Pm.j...

2018-06-14 14:47:15 1614

原创 Android M PackageManagerService 启动过程分析

前言在Android系统中,和用户关系最密切的service应该是PackageManager了。一般来说,用户想要在Android设备上进行自己感兴趣的活动,都少不了apk的支持。不论是打电话,上网,发短信还是玩一些自己喜欢的游戏,这些内容在android的世界里都是以apk的形式存在的。所以,apk的安装,卸载是与每个用户是息息相关的。我们今天的任务就是解析PackageManager的工作原...

2018-06-14 11:01:23 1182

原创 Android Native到HAL源码剖析,以sensor为例

Google为了保护硬件厂商的信息,在Android中添加了一层,它就是大名鼎鼎的HAL层。在看HAL的编写方法的过程中,会发现整个模块貌似没有一个入口。一般说来模块都要有个入口,比如应用程序的main函数,可以被加载器进行加载执行,dll文件有dllmain,而对于我们自己写的动态链接库,我们可以对库中导出的任何符号进行调用。那么问题来了,Android中的HAL是具有通用性的,需要上层...

2018-06-05 13:54:26 5699 2

原创 计步器(Pedometer)实现原理简介

之前有一篇文章简单的实现了一个计步器app,今天我们将会从理论上剖析下计步器的实现原理。计步器原理及功能介绍计步器(pedometer)是一个配戴在身上,用來计算走路步数的小配件。从公共卫生与健康医学的角度看,计步器的功能是在累积一定时间的走路步數,借着步数的累计,了解身体的活动水准,提升携带者的活动动机,以增进健康为最终目的。计步器的原理是利用机械运动带动感应器,并由电子电路完成计数后的后续工作...

2018-06-04 11:36:30 9288 1

原创 Android多用户原理

android从4.2开始便添加了多用户功能,其具体的管理者为UserManager.多用户模式的启用系统判断当前设备是否支持多用户模式的依据是配置文件config.xml 中的config_multiuserMaximumUsers 和config_enableMultiUserUI 配置项。 <!-- Maximum number of supported users --&gt...

2018-05-30 14:59:58 2769

原创 Android简单的计步器应用实现

相信大家对微信,小米手环这两个东西都不陌生,而且这两个东西都提供了一个计数器的功能,统计你每天行走的步数,可能有的人每天最开心的事就是看到自己又霸占了微信步数排行榜第一,离瘦瘦瘦真的是越来越近了。今天我们就来看一看Android中的计步器应用是怎么实现的。硬件支持首先如果要能够实现计算步数的功能,是需要hardware支持的,即你的设备(手机/手环)都需要有计步器硬件的支持。在android中我们...

2018-05-30 10:44:36 9756 8

原创 线程运行状态探索

本篇文章主要探索线程的各种运行状态,包括new, runnable,block, native, terminate等。1.      New状态下的线程public  void newThread(){    Thread th = new Thread();    Log.i("linhui","thread state:"+th.getState());}02-01 04:18:52.520...

2018-04-26 16:53:30 388

原创 ANR 死锁案例分析

Monkey跑出framework crash,最终发现是由于ANR产生了死锁,在WD检查锁时,kill掉了System Server进程引起的。下面看看ANR的线程trace来分析死锁原因。从主线程调用栈看,主线程block,而block的原因是等待锁:0x3fd06119,而该锁正在被thread80持有:DALVIK THREADS(89):"main"prio=5 tid=1 Blocke...

2018-04-26 16:46:46 1992

原创 Z-Wave技术与zipgateway源码剖析

Z-Wave技术文档目录 1 Z-Wave简介................................................................................................................... 21.1 什么是Z-Wave技术................................................

2018-04-26 15:02:58 3078

原创 hello驱动程序开发实战

有必要查询下Linux内核# uname -r2.6.28-11-generic# ls /usr/src/linux-headers-2.6.28-11 linux-headers-2.6.28-11-generic由此可见内核版本和内核头文件版本是一致的,都是2.6.28-11。(如果不一致的话在insmod一步必定出错:Error inserting './hello.ko': -1 Inv...

2018-04-26 14:50:53 262

原创 虚拟机大瘦身

本篇主要讲解怎样给windows、linux虚拟机瘦身,节省空间。windows 虚拟机:下载ccleaner,在虚拟机中安装并清理后,关闭虚拟机。在settings-->左边hard disk中,先执行defragment disk,再执行compact disk,即可。也就是先整理碎片,再压缩 ubuntu虚拟机: 在虚拟机中执行:sudo vmware-tool

2017-03-08 20:51:09 374

原创 HelloWord之JNI实例

闲来无事,所以自己练习了一遍jni实现,开始的时候程序一直找不到对应的lib库,好生苦恼,后来发现是jni生成的lib库没有添加到对应的lib库环境中,导致查找不到。。。。。HelloWord.javaclass HelloWorld {    public native void displayHelloWorld();    static {      

2017-03-08 17:58:37 247

zwave协议新功能smart start inclusion原理介绍

zwave智能家居协议6.81 sdk新增功能smart start的文档介绍,详细叙述smart start功能。

2018-06-12

QMI, AP massage to bp process

Qualcomm平台QMI机制流程图。 内容:AP侧如何发送一个请求到BP侧,QMI是怎么对请求进行编码成QMUX消息,怎么将编码后的QMUX消息加头组合成一种AP和BP可共同识别的消息格式,最后是怎么发送到BP侧的。

2018-06-08

空空如也

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

TA关注的人

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