
ANDROID
文章平均质量分 59
那颗流星
提炼升华
展开
-
CTS环境搭建
网上有很多搭建cts环境的方法,如Android GMS(cts/gts/cts-v)认证 - 简书。这里是从驱动工程师的角度来搭建一个简易的cts环境,因为一些cts失败项需要驱动工程师修改,但修改后又没有环境去验证。如果能搭建一个简易的cts环境,就能极大促进工作效率。笔者用的是Ubuntu20.04的OS。获取CTS工具下载地址,有条件的可以直接下载,或者让GMS的同事发一份过来。安装openjdkapt install openjdk-11-jre-headless...原创 2022-04-10 17:18:37 · 5141 阅读 · 0 评论 -
Android新建按键值
遗憾的是,该修改会导致失败cts测试失败。原创 2021-09-12 00:07:19 · 423 阅读 · 0 评论 -
Android高版本remount方法
对应高版本的Android系统,不能直接remount,需要解锁后才能remount,记录下方法。sprd1.进入bootloaderadb reboot bootloader2.获取每台机器唯一的idfastboot oem get_identifier_token303132333435363738394142434445463.生成认证文件certificate.bin./vendor/sprd/proprietories-source/packimage_...原创 2021-04-11 15:50:51 · 4191 阅读 · 0 评论 -
Android手机提示正在慢速充电的解决方法
新的项目,手机充电的时候,systemui显示慢速充电。通过电流计测量,充电电流为1.7A,电压5v,这个功率还挺高的,怎么就提示慢速充电了呢。查看代码http://aospxref.com/android-11.0.0_r21/xref/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java protected String comput原创 2021-01-30 15:07:13 · 6821 阅读 · 1 评论 -
Android按键功能重定义
对于按键,键码和功能Android已有定义http://androidxref.com/9.0.0_r3/xref/frameworks/base/data/keyboards/Generic.kl驱动按下面的方式将键值汇报上去后#define KEY_VOLUMEUP 115input_report_key(input_dev, KEY_VOLUMEUP, 1);input_sync(input_dev);getevent可以看到键码是73(0x73对应十进制115)...原创 2020-09-13 20:45:37 · 612 阅读 · 0 评论 -
Android Q预编译静态库实例
如果厂商提供了一个静态库,如何编译进系统呢,可参考external/demo/Android.bpcc_prebuilt_library_static { name: "hub", compile_multilib: "both", multilib: { lib32: { srcs: ["hub.a"], }, lib64: { srcs: ["hub.a"],原创 2020-09-12 15:43:43 · 1993 阅读 · 1 评论 -
Android下配置手电筒
Android下的手电筒是跟后摄的闪光灯绑定的,如果项目不带摄像头,那要怎么修改的。给出方案,大家参考下驱动层提供节点进行读写同时添加selinux权限。原创 2020-08-03 12:40:11 · 379 阅读 · 0 评论 -
Android调试小技巧
1.同屏软件vysor(https://www.vysor.io/)目前没有linux版本,但可以在谷歌浏览器中安装vysor插件。2.截图screencap -p /data/1.png3.修改屏幕尺寸物理屏幕显示不正常,但可用同屏软件看效果查看分辨率,wm size修改分辨率,如wm size 1920x10804.ro.sf.lcd_density宽度:width 高度:high计算ro.sf.lcd_density=((width^2+high^2)^0.5)原创 2020-05-16 20:28:58 · 2134 阅读 · 0 评论 -
Android关机方法
低电量会自动关机,走如下流程frameworks/base/services/java/com/android/server/power/PowerManagerService.java(http://aospxref.com/android-4.4.4_r2.0.1/xref/frameworks/base/services/java/com/android/server/power/Pow...原创 2020-04-19 18:18:58 · 1508 阅读 · 0 评论 -
Android6.0将某个分区作为内置sdcard
将机器从Android5.1升级到Android6.0后,发现内置sdcard只有2G容量,由于我们公司是将某个分区作为内置sdcard,具体方法是先将某个分区挂到某个文件夹,再通过sdcard服务将该文件夹虚拟成内置sdcard,可参考http://my.oschina.net/xcy2011sky/blog/492590。仿照之前的移植,第一步算是成功了,第二步找不到对应的地方修改。通过参考某原创 2016-07-12 16:02:00 · 3415 阅读 · 12 评论 -
Android下创建软连接的两种方式
在Andorid下创建软链接的两种方式,一是symlink,而是ln。 symlink的用法举例,在init.rc将/system/vendor软链接到/vendor,/vendor不需要手工创建(symlink /system/vendor /vendor)。目前,实验的时候发现要将/system/vendor软链接到/vendor/vendor下会失败。 为了将实现上诉的原创 2016-12-04 20:05:25 · 19408 阅读 · 0 评论 -
Android下使用chcon修改文件的安全上下文(file_contexts)
在init.rc中运行某一可执行程序时,需要修改selinux规则,否则会提示要为该服务添加selinux角色。其中的一步是在file_contexts添加节点或文件的安全安全上下文,如device/qcom/sepolicy/common/file_contexts/dev/coresight-tmc-etr-stream u:object_r:q原创 2017-01-01 19:26:27 · 11231 阅读 · 2 评论 -
无线adb调试
在开发的过程中,需要使用无线adb,可参考如下配置在串口(su),输入如下命令setprop service.adb.tcp.port 5555stop adbd start adbd或者在adb shell中输入adb tcpip 5555然后将手机和电脑接入到同一网段中(都接入路由器,或者拿另一台手机开一个热点(不需联网),手机和电脑到接入到该热点中),...原创 2017-04-08 01:50:00 · 3926 阅读 · 0 评论 -
记一次Android的音频卡断
进行新平台的开发,发现Android系统播放音乐很卡(很少遇到这种情况,因为Android系统的音频播放都没有问题,最多的情况是软件修改导致的问题)。最近一周都被卡断困扰。从串口和logcat信息看,有异常出现。直接提case跟qcom咨询,提供了一个补丁(该补丁是3月份的),没什么效果。我下载的Andorid源码是8月份的,应该会包含该修改。由于硬件的同事说完全没有修改过qcom的音频部原创 2016-11-27 03:54:31 · 2534 阅读 · 0 评论 -
屏蔽Android中userdata分区加密
在recovery下需要挂载userdata分区,对某些数据进行删除,但无法挂载成功。怀疑是挂载参数有问题,于是在shell终端上输入命令mount -t ext4 /dev/block/boot-device/userdata,提示无效的参数。后来发现,升级完后,不进入系统,在终端上输入该命令,可以挂载userdata分区成功。那应该是系统对该分区进行了处理,导致挂载不成功。查看分区表,原创 2016-11-13 21:29:19 · 10441 阅读 · 1 评论 -
添加额外的路径到Android系统中
1.开机启动扫描某一路径下的app在frameworks/base/services/core/java/com/android/server/pm/PackageManagerService.java,有如下代码。 // Collected privileged system packages. final File privilegedAppDir =原创 2016-09-25 18:11:56 · 890 阅读 · 0 评论 -
在Android上修改读取IMEI码的方法
我们知道,如果是移动设备,厂家都提供了IMEI码写入及读出的方法。但由于我们的是非移动设备,可是我们也需要写入IMEI码,供第三方的软件读取,如正版地图等。我们找到frameworks/base/telephony/java/android/telephony/TelephonyManager.java这个文件,通过添加代码,让第三方的软件读取我们自定义的IMEI码即可。 +import java原创 2015-11-06 12:59:58 · 14395 阅读 · 2 评论 -
property_get函数使用
int property_get(const char *key, char *value, const char *default_value);int property_set(const char *key, const char *value); 例char buf[20]="ssssssssssss";char tempbuf[PROPERTY_VALUE_MAX]原创 2015-12-17 18:07:16 · 40200 阅读 · 4 评论 -
使用adb命令启动Android程序
有时需要在shell中启动Android应用程序,可通过如下方法格式为adb shell am start -n 包名/入口activity名称,如adb shell am start -a android.intent.action.MAIN -c android.intent.category.LAUNCHER -n com.kugou.android/com.kugou.andr原创 2016-09-15 13:49:35 · 8831 阅读 · 1 评论 -
Android添加apn的方法
对于新的物联网卡,需要添加apn才能正常使用。apn一般由运营商提供,拿到apn后,我们可以使用手工添加apn的方式来验证apn能否正常使用。手工验证可以后,将可以将apn的信息添加到apns-conf.xml(可通过find -name apns-conf.xml,一般在vendor目录),仿照apn-conf,xml的写法,添加额外的apn信息即可。关于apn加载流程可参考http原创 2017-03-19 21:50:22 · 7872 阅读 · 0 评论 -
快速解决Android中的selinux权限问题
关于selinux的详细资料,请查阅http://blog.youkuaiyun.com/innost/article/details/19299937在Android开发的过程中,遇到关于selinux相关的东西,当时还一下子看不懂,现在好像有点眉目了。比如,内核打印这个提示type=1400 audit(32.939:25): avc: denied { open } for pid=2...原创 2017-04-01 13:53:25 · 43510 阅读 · 10 评论 -
从Android系统分区中获取镜像
首先,介绍dd命令的用法dd 1.作用 dd命令用来复制文件,并根据参数将数据转换和格式化。 2.格式 dd [options] 3.[opitions]主要参数 bs=字节:强迫 ibs=及obs=。 cbs=字节:每次转换指定的。 conv=关键字:根据以逗号分隔的关键字表示的方式来转换文件。 count=块数目:只复制指定的输入数据。 ibs=字节:每次读取指定原创 2015-12-16 14:06:56 · 10948 阅读 · 0 评论 -
Android按键唤醒原理
系统默认的唤醒按键值http://androidxref.com/9.0.0_r3/xref/frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.javapublic int interceptKeyBeforeQueueing(KeyEvent event, int policy...原创 2019-07-14 18:47:22 · 3476 阅读 · 0 评论 -
selinux状态获取过程
以Android8.0为例system/core/init/init.cppstatic void selinux_initialize(bool in_kernel_domain) { bool kernel_enforcing = (security_getenforce() == 1); bool is_enforcing = selinux...原创 2019-06-01 21:37:40 · 1811 阅读 · 0 评论 -
Android忽略编译某一文件夹
Andoird编译有时需要忽略某一个文件夹,如tests,可使用如下方法build/core/main.mksubdir_makefiles := \ $(shell build/tools/findleaves.py --prune=$(OUT_DIR) --prune=.repo --prune=.git $(subdirs) Android.mksubdir_ma...原创 2019-05-18 15:47:28 · 3712 阅读 · 0 评论 -
Android应用执行脚本的一种方法
Android应用有时需要执行脚本,但该脚本需要root用户才能执行,这时可借用有root权限的进程来实现。具体方法在init.rc添加一服务,如service cmd /system/bin/cmd class main user root disabled oneshotapp将需要执行的命令写到某系统属性如persist.sys.cmd,然后通过...原创 2019-03-09 17:22:07 · 7958 阅读 · 0 评论 -
Android后台抓取系统日记
要抓取系统日记,只需运行adb logcat即可,但需要在终端上运行命令才行。由于权限限制,只有系统应用才能读取系统的log,第三方应用只能读到部分log。现在的手机平台都是在拨号界面输入暗码,即可调用app抓取日记(如mtk平台输可调用mtklogger),于是自己写了一个demo(Android7.0 mtk)。输入字符串启动应用原理packages/servic...原创 2018-04-16 17:05:03 · 3492 阅读 · 5 评论 -
平板关机动画显示异常
由于平板的界面可以自由的旋转,假设默认的lcd是横屏的,旋转到竖屏时,关机动画会先切换到横屏,然后显示动画。出现了一瞬间界面只有一半的情况,这可能是Android本身的bug。这里的解决方法是当竖屏的时候,不要切换到横屏显示动画,直接竖屏刷图(并将横屏时的图片旋转90进行显示)。相应的修改如下 Index: vendor/qcom/proprietary/qrdplus/原创 2018-01-04 17:49:59 · 1479 阅读 · 1 评论 -
精简Android系统下的APP
当我们拿到Androd源码后,进行编译和烧写,发现里面有许许多多的内置apk和测试apk,这时就需要对系统里的apk进行精简了。 精简APP时候注意了,要先rm -rf out/target/produtc/xxx/system,然后在编译。这是因为Android在编译后,并不会删除之前到应用,导致我们屏蔽了该应用,但system镜像中还包含该应用的情况。 ...原创 2015-11-06 22:59:59 · 3902 阅读 · 1 评论 -
Android编译环境的搭建
这里以Ubuntu12.04为例讲诉如何搭建Android源码的编译环境1.更改ubuntu12.04的更新源工欲善其事,必先利其器。由于ubuntu的软件更新源地址默认设国外,下载软件的速度相当较慢,这里将ubuntu的软件更新源设为网易的服务站点。sudo gedit /etc/apt/sources.list,删除全部内容,并添加以下内容。deb http://mirro...原创 2015-08-25 19:18:57 · 886 阅读 · 0 评论 -
高通平台的寄存器读工具
高通平台自带寄存器的读工具/system/bin/r,使用时只需/system/bin/r+寄存器就可获取寄存器的值。这两个工具的源码位于/system/core目录下r.c。#include #include #include #include #include #include #include #if __LP64__#define strtoptr strtoul原创 2017-04-09 00:16:15 · 3352 阅读 · 0 评论 -
Android 四大组件五大布局
Android四大组件:Activity、Service、Broadcast Receiver、ContentProvider。 Activity是Android程序与用户交互的窗口,从视觉效果来看,一个Activity占据当前的窗口,响应所有窗口事件,具备有控件,菜单等界面元素。从内部逻辑来看,Activity需要为了保持各个界面状态,需要做很多持久化的事情,还需要妥善管理生命周期,和一转载 2016-08-30 11:41:15 · 514 阅读 · 0 评论 -
Android驱动加载方法
service loaddriver /system/driver/load.sh class main user root group root oneshot#! /system/bin/shinsmod /system/driver/touchscreen.koinsmod /system/driver/hello.ko#include原创 2016-01-06 19:36:05 · 3006 阅读 · 0 评论 -
Android源码及SDK国内镜像下载
SDK国内镜像下载,参考http://www.oschina.net/question/1399261_195245启动 Android SDK Manager ,打开主界面,依次选择「Tools」、「Options...」,弹出『Android SDK Manager - Settings』窗口;在『Android SDK Manager - Settings』窗口中,在「H原创 2015-11-19 15:45:13 · 1131 阅读 · 0 评论 -
Android实现OTG功能
本文摘自https://source.android.com/devices/storage/config-example.htmlAndroid 5.x and earlierPhysical primary onlyThis is a typical configuration for a device with single external storagedevice原创 2015-11-29 20:26:26 · 7906 阅读 · 0 评论 -
将Android下的可执行文件以静态库的形式进行编译
toolbox是Android中专用的busybox,从嵌入式Linux转过来都会大大地吐槽功能简陋。但实质上也有很多特有的很好用的功能。比如getevent命令来调试所有的输入事件。这里记录一下移植过程。原本以为会很难,所以一直放很久才开始做,最终很简单,只需要稍加修改Android.mk就可以编译出一个静态链接的toolbox。以下diff文件就是改动信息。diff --git a/s原创 2015-12-01 23:59:44 · 1810 阅读 · 0 评论 -
Android下在终端上运行命令提示no such tool的解决方法
在recovery下做移植,在init进程由有一个服务是加载我们产品驱动的,该进程一跑起来就挂了,由在该服务在init.rc中,该服务不断重启。串口中只提示一个错误吗。于是想直接在终端上手动运行该程序,看能否得到更多的信息。直接运行adb shell,提示缺少库文件,按照http://blog.youkuaiyun.com/mike8825/article/details/50168809里面的方法移植相应的原创 2015-12-06 00:24:58 · 2552 阅读 · 0 评论 -
ramdisk.img和system.img解压
ramdisk.img解压file ramdisk.imgramdisk.img:gzip compressed data,from Unixmv ramdisk.img ramdisk.img.gz (重命名)gzip -d ramdisk.img.gz (解压)file ramdisk.imgramdisk.img: ASCII cpio archive (原创 2015-12-16 14:21:51 · 583 阅读 · 0 评论 -
Android下手动挂载分区
mkdir mysystemmount -t ext4 /dev/block/mmcblk0p20 /mysystem/(挂载某分区)mount -t vfat /dev/block/sdb1 /mysystem(挂载U盘)原创 2015-12-16 21:07:21 · 2943 阅读 · 0 评论 -
Android下的so库实例
mkdir test,touch main.c,max.c,main.c#include extern int max(int,int);int main(){ int a=5,b=3; int c; c=max(a,b); printf("the max number is %d\n",c); return 0;}max.c原创 2015-12-24 16:40:06 · 561 阅读 · 0 评论