android
文章平均质量分 86
椒盐虾呀
这个作者很懒,什么都没留下…
展开
-
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 · 3858 阅读 · 2 评论 -
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 · 1269 阅读 · 0 评论 -
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 · 1664 阅读 · 0 评论 -
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 · 422 阅读 · 0 评论 -
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 · 5555 阅读 · 5 评论 -
Qualcomm messaging Interface(QMI)消息定义概述
QMI概述QMI是高通提供的一种多处理器进程间通信的功能接口,用于AP和BP侧的交互,通俗说法就是让终端设备TE(可以是手机,PDA,计算机)对高通BP侧的AMSS系统进行操作,如调用函数,读取数据,设置其中的NV项等。其具有的特点如下:具有同步和异步接口;支持在在多个处理器之间进行通信;良好的可扩展性;支持多客户端并发运行;支持多个服务端并发运行,且每个服务端还对应多个客户端;每个服务端还支持版...原创 2018-06-29 09:18:34 · 14630 阅读 · 0 评论 -
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 · 3361 阅读 · 1 评论 -
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 · 746 阅读 · 0 评论 -
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 · 783 阅读 · 0 评论 -
我们开始搞一个 Android 项目啦
原创 2018-07-03 15:55:59 · 463 阅读 · 0 评论 -
Sensor系列之SensorDaemon与DSPS端通信过程
本文导读:SensorDaemon服务端流程解析Qualcomm messaging Interface(QMI)消息定义概述Sensor架构系列之dsps架构分析之前的文章我们知道了SensorDaemon服务端的启动以及dsps的架构及主要组成模块,今天我们继续深入挖掘下SensorDaemon与dsps具体的通信构建过程。首先回顾下,SensorDaemon的启动过程。1.init.qcom...原创 2018-07-05 13:39:24 · 2368 阅读 · 0 评论 -
Sensor系列之aDSP端Sensor Driver流程
--所有的存在都是为了走向毁灭而设计的。--我们被囚禁在这....--生与死的无尽螺旋里。--这是诅咒?--还是惩罚?--面对着将无解谜题交予我们的神明,我们会有反抗的一天吗?本系列导航:Android简单的计步器应用实现Android Native到HAL源码剖析,以sensor为例Android Sensor HAL层初始化流程(基于Qualcomm平台)Sensor系...原创 2018-07-06 19:19:28 · 5727 阅读 · 4 评论 -
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 · 7966 阅读 · 0 评论 -
ActivityManagerService对于app缺少运行时权限而crash的一种友好处理方法
我们都知道runtime权限是google在android上权限管理的又一大重要改变,在应用程序安装过程中,只会grant install部分的基本权限,而对于dangerous的权限,应用程序需要在运行时主动申请,并动态的由用户来确认是否需要给予对应的权限。当然,google在开发者文档中也详细的介绍了关于新的权限申请机制,也给app开发人员带来了新的机遇与挑战,但是对于很多旧版本的app或...原创 2018-09-19 15:27:06 · 1614 阅读 · 0 评论 -
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 · 987 阅读 · 0 评论 -
android for work(AFW)
本文介绍了 Android N 中提供的新 Android for Work 功能。QR 码配置Android for Work 现在支持使用 QR 码来配置企业负责的设备。安装向导现在允许您通过扫描 QR 码来配置设备。工作资料安全性挑战个人资料所有者可以要求用户为在工作资料中运行的应用指定安全性挑战。系统会在用户尝试打开任何工作应用时显示安全性挑战。如果用户成功完成安全性挑战,系统可解锁工作资...原创 2018-06-14 16:03:17 · 2334 阅读 · 0 评论 -
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 · 264 阅读 · 0 评论 -
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 · 2003 阅读 · 0 评论 -
线程运行状态探索
本篇文章主要探索线程的各种运行状态,包括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 · 401 阅读 · 0 评论 -
计步器(Pedometer)实现原理简介
之前有一篇文章简单的实现了一个计步器app,今天我们将会从理论上剖析下计步器的实现原理。计步器原理及功能介绍计步器(pedometer)是一个配戴在身上,用來计算走路步数的小配件。从公共卫生与健康医学的角度看,计步器的功能是在累积一定时间的走路步數,借着步数的累计,了解身体的活动水准,提升携带者的活动动机,以增进健康为最终目的。计步器的原理是利用机械运动带动感应器,并由电子电路完成计数后的后续工作...原创 2018-06-04 11:36:30 · 9335 阅读 · 1 评论 -
Android Native到HAL源码剖析,以sensor为例
Google为了保护硬件厂商的信息,在Android中添加了一层,它就是大名鼎鼎的HAL层。在看HAL的编写方法的过程中,会发现整个模块貌似没有一个入口。一般说来模块都要有个入口,比如应用程序的main函数,可以被加载器进行加载执行,dll文件有dllmain,而对于我们自己写的动态链接库,我们可以对库中导出的任何符号进行调用。那么问题来了,Android中的HAL是具有通用性的,需要上层...原创 2018-06-05 13:54:26 · 5724 阅读 · 2 评论 -
Android简单的计步器应用实现
相信大家对微信,小米手环这两个东西都不陌生,而且这两个东西都提供了一个计数器的功能,统计你每天行走的步数,可能有的人每天最开心的事就是看到自己又霸占了微信步数排行榜第一,离瘦瘦瘦真的是越来越近了。今天我们就来看一看Android中的计步器应用是怎么实现的。硬件支持首先如果要能够实现计算步数的功能,是需要hardware支持的,即你的设备(手机/手环)都需要有计步器硬件的支持。在android中我们...原创 2018-05-30 10:44:36 · 9766 阅读 · 8 评论 -
Android多用户原理
android从4.2开始便添加了多用户功能,其具体的管理者为UserManager.多用户模式的启用系统判断当前设备是否支持多用户模式的依据是配置文件config.xml 中的config_multiuserMaximumUsers 和config_enableMultiUserUI 配置项。 <!-- Maximum number of supported users -->...原创 2018-05-30 14:59:58 · 2792 阅读 · 0 评论 -
Sensor系列之SensorDaemon服务端流程解析
在前面的文章中,我们分析到Sensor HAL层的启动以及数据获取过程,我们提到,SensorContext以及Sensor在初始化的时候会通过sensor1_open创建一个客户端的socket,这个socket会不停的从服务端读取数据,并通过注册的回调来处理得到的数据,这个服务端的socket就是我们今天分析的主角,SensorDaemon守护进程,那么SensorDaemon在Sensor架...原创 2018-06-21 13:51:14 · 2839 阅读 · 0 评论 -
Android M PackageManagerService 启动过程分析
前言在Android系统中,和用户关系最密切的service应该是PackageManager了。一般来说,用户想要在Android设备上进行自己感兴趣的活动,都少不了apk的支持。不论是打电话,上网,发短信还是玩一些自己喜欢的游戏,这些内容在android的世界里都是以apk的形式存在的。所以,apk的安装,卸载是与每个用户是息息相关的。我们今天的任务就是解析PackageManager的工作原...原创 2018-06-14 11:01:23 · 1188 阅读 · 0 评论 -
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 · 1617 阅读 · 0 评论 -
Android M PackageManager应用程序权限管理源码剖析及runtime permission实战
上一篇文章我们介绍了android的包管理器PackageManager对于应用程序apk的安装流程,今天我们主要研究应用程序权限的管理部分。Android应用权限授予部分主要分为两部分,第一部分是在PKMS启动之后,且扫描完所有的app后,会对应用程序分配linux用户组ID,即授予他们所申请的资源访问权限。第一部分主要是对install等权限进行无条件授予,而许多核心app的默认权限则...原创 2018-06-14 15:22:28 · 2345 阅读 · 0 评论 -
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 · 935 阅读 · 0 评论 -
HelloWord之JNI实例
闲来无事,所以自己练习了一遍jni实现,开始的时候程序一直找不到对应的lib库,好生苦恼,后来发现是jni生成的lib库没有添加到对应的lib库环境中,导致查找不到。。。。。HelloWord.javaclass HelloWorld { public native void displayHelloWorld(); static {原创 2017-03-08 17:58:37 · 248 阅读 · 0 评论