
android
文章平均质量分 56
九霄的爸爸
这个作者很懒,什么都没留下…
展开
-
Aosp 15 编译遇到问题排查
到 device/google/raviole-kernels/ 目录下看只存在5.10的内核版本,咋办?在执行 lunch 原来熟悉的选择就有了。我这里选择pixel 6 谷歌手机。lunch 选择 28。下载完成之后发现跟14 系统有很大区别。最近想编译aosp 15 的系统。再次lunch 成功 ,然后make 编译。这里只需要敲enter 键选择默认配置,原来熟悉lunch 选择界面没有了。从谷歌官方源码下载一个呗,但是执行到这里会报错。原创 2025-02-05 20:02:24 · 315 阅读 · 0 评论 -
安卓获取APP对应的Android id的原理分析
android_id 的生成原理是由系统生成的随机数,并与应用 app 签名,经过 HmacSHA256 算法生成的;从 android 8 以后开始就是随机的了,每个应用获取到的简要步骤;获取的方式如下所示:androidId = android.provider.Settings.Secure.getString(context.getContentResolver(), android.provider.Settings.Secure.ANDROID_ID);...原创 2020-11-13 17:04:30 · 1908 阅读 · 0 评论 -
阿里云搭建git + repo 的rk3326源码无限制仓库记录
最近帮朋友搭建一个阿里云代码服务器。简单记录一下过程。源码: rk3326android 8.0服务器: 阿里云阿里云服务端: 简称 Server管理端: Admin客户端: client1、首先在服务的新建git 用户sudo adduser --system --shell /bin/sh --gecos 'git SCM user' --group --disabled-password --home /home/git git这种方法是网上比较常见的方法,创建的是一个禁用密码的原创 2020-07-20 09:43:48 · 744 阅读 · 0 评论 -
Android串口丢包重发的重传协议,一种流式重传协议
前言最近在做一款产品,主要功能是android 接收到音频数据通过串口实时发送MCU处理,要求延迟小,速度快,传输稳定性有保障。我们都知道串口是一种不可信任性传输。不能保障传输数据完整性,在产品测试过程中也发现低概率性出现数据丢包现象。所以需要设计一种支持流式可靠性传输协议。产品需要Android串口跟MCU串口通信传输音频流,每次传输大概1M左右,MCU接收到音频后需要立马处理,所以需要尽可能快接收数据处理,不能接收每一帧会回传校验结果。只有等到有错误帧才返回给Android 请求重发错误帧,如果一次原创 2020-07-16 16:32:50 · 1533 阅读 · 2 评论 -
android一键改机之真改机build.prop
本篇文章讲解如果真正修改手机硬件参数。app 会通过判断当前手机的imei、mac、imsi等参数来判断此手机多次注册过app。一般情况下的权重是 imei > imsi > mac > android_id 。Android 获取 imei 等信息的源码主要在TelephonyManager.java中,app 能获取这些参数只有这一种途径,通过adb 和shell是获取...原创 2020-02-12 12:47:00 · 12385 阅读 · 8 评论 -
动态修改Android参数信息的方法绕过改机检测
有很多朋友咨询过我如果修改Android的系统参数 比如 ro.build.id ro.product.name ro.product.device ro.product.model等参数。对应在APP端的java代码就是Build.ID Build.PRODUCT Build.MODEL等参数。不同于Xposed VirtualApp 双开助手DualSpaceGo双开双开精灵 这些软...原创 2019-12-23 13:08:05 · 4869 阅读 · 0 评论 -
android 实现 APP 保活且正常升级的方法
翻译机App保活技术调研报告Android系统核心App需要在Android开机期间一直后台运行,如果被杀死会立即重启。这个功能的实现是在App的AndroidManifest.xml添加android:persistent="true"属性控制。但是Android 8.0之后含有Persist的App禁止升级。如果我们把翻译服务相关的Ap设置android:persistent="true"...原创 2019-10-24 11:25:43 · 4669 阅读 · 15 评论 -
imx8开发之~源码下载
由于imx8新出的,市面上资料很少,所以自己把遇到问题写出来imx8 源码下载路径,如果没有账号就申请一个,由于我们是做无人驾驶公交的方向,所有我们选择的是自动驾驶版本。android_o8.1.0_2.0.0_auto-beta_image_8qmek2.tar.gz下载网址https://cache.nxp.com/secured/bsps/android_o8.1.0_2.0.0_...原创 2019-04-24 18:14:48 · 2764 阅读 · 2 评论 -
imx8开发之~源码编译
首先要下载相关的工具链In addition to the packages requested on the Android website, the following packages are also needed:$ sudo apt-get install uuid uuid-dev$ sudo apt-get install zlib1g-dev liblz-dev$ sud...原创 2019-04-30 09:40:07 · 3358 阅读 · 0 评论 -
基于九鼎核心板的rk3288 双屏开发
rk3288支持双屏异显,一般使用的是mipi、lvds 和HDMI进行异显示,我们这边使用的是mipi和lvds。mipi 是主屏10寸。lvds副屏7.85寸。双屏显示要注意以下问题1、双屏异显时,一个显示接口当主屏,另一个当副屏;主副屏由板级dts文件确定,启动后无法动态更改;2、 当两路显示接口显示不同分辨率时,rk3288只能为一路显示接口提供精确时钟,另一路显示接口时钟会有微小频...原创 2019-05-09 14:58:07 · 2592 阅读 · 0 评论 -
rk3288 双摄使用camera2开发
本文是基于rk3288 usbcamera这篇文章的更新版本,上篇文章 是基于第三方框架UvcCameraDemo开发的。自己想基于Android系统提供的camera2的接口开发。由于我们的usb接口不是在主host上,报错如下02-27 06:36:02.674 2425 2494 E RequestThread-0: Timed out while waiting for request...原创 2019-05-09 16:22:43 · 3086 阅读 · 2 评论 -
imx8开发之~自动编译脚本编写
系统编译的总编译脚本#!/bin/bashsource build/envsetup.shlunch mek_8q-userdebugmake -j4./make_uboot.sh./make_kernel.sh./make_boot_dt.sh 编译 uboot 脚本#!/bin/bashsource build/envsetup.shlunch mek_8q-userd...原创 2019-05-10 17:26:04 · 1094 阅读 · 0 评论 -
Android 64位机器system app兼容32位apk问题分析(共享system uid )
rk3399 是一款基于arm64的机器,我们这边一款产品是基于rk3399 Android 7.1版本的开发,我们的 vtest.apk包含多个so,在正常userdebug模式下不会出现兼容性问题,如果切换到user版本就会出现概率性崩溃的问题。并且崩溃不是vtest.apk而且其他system apk 比如StressTest、 keychain、exchange等apk 概率性崩溃。首...原创 2019-12-02 14:23:53 · 4548 阅读 · 1 评论 -
Android编译预制过高版本app导致编译错误解决
先上错误代码No private recovery resources for TARGET_DEVICE rk3399_firefly_mipi_boxStarting build with ninjaninja: Entering directory `.'[ 50% 1/2] build out/target/product/rk3399_firefly_mipi_box/obj/A...原创 2019-12-02 14:23:41 · 8984 阅读 · 9 评论 -
Android 手机开机不断重启故障分析
1、目前拿到编号为066E的故障翻译机,通过Android logcat日志分析初始报错现象是Android系统的zygote的AndroidRuntime在不断重启。具体现象如下:1. 07-26 07:48:43.625 2378 2378 D AndroidRuntime: >>>>>> START com.android.internal.os...原创 2019-07-04 20:29:49 · 5267 阅读 · 4 评论 -
Android 添加中文medium字体
2.1 Android字体显示框架图Android显示字体medium字体主要流程:a).View布局文件或者代码中选择medium字体b).Framework根据View设置的字体选择相应medium的字体库c).根据framework提供的字体库Skia引擎绘制相应medium的字体主要流程图如下:3. NotoSansCJKsc-Medium中文字体使用方法Android可以...原创 2019-08-21 08:57:34 · 8544 阅读 · 0 评论 -
android app模拟 persistent 属性可以保活且正常升级的一种方式
背景:Android系统核心App和Service需要在Android开机期间一直后台运行,如果被杀死会立即重启。这个功能的实现是在App和Service的AndroidManifest.xml添加android:persistent="true"属性控制。但是Android 8.0之后含有Persist的App和Service禁止升级。如果我们把服务相关的App和Service设置androi...原创 2019-09-24 09:00:30 · 3390 阅读 · 0 评论 -
解压RK3288的boot.img修改init.rc 添加开机自启动脚本
最近找别人开发一款智能AI机器人,由于方案厂商现在代码还没有交付。每次只提供ROM。现在公司要求要开机启动系统检测脚本。我们都知道Android现在权限管理很严格。而且我的脚本是用shell脚本完成的。所以无法监听开机广播。只能修改init.rc文件。但是我们知道init.rc文件存在在文件Android boot.img的ramdisk文件系统中,你虽然每次可以通过adb remount 挂载s原创 2017-11-24 16:22:00 · 8044 阅读 · 5 评论 -
rk3368一些定制修改
因为这些改动都是很早之前做的,也不想分析为什么这么改了,只是简单列出来修改代码。文件去除rk3368 双击电源键打开摄像头frameworks/base/core/res/res/values/config.xml删掉这一行<bool name="config_cameraDoubleTapPowerGestureEnabled">true</bool>设置...原创 2019-01-11 10:20:05 · 2494 阅读 · 0 评论 -
rk3368禁止显示luncher和开机启动的壁纸
修改地址如下:rameworks/base/core/res/res/values/config.xml因为有点懒就直接列出diff 差异 &lt;string name="image_wallpaper_component" translatable="false"&gt;com.android.systemui/com.android.systemui.ImageWallpaper&原创 2019-01-11 10:20:43 · 568 阅读 · 0 评论 -
多次点击camera键或者电源键 调起app
当时这个需求是,连续点击camera键启动扫码app。由于怕和其他app共享一个广播,所以自己定义了一个广播ACTION_CAMERA_BUTTON.DC扫码app监听ACTION_CAMERA_BUTTON.DC这个广播。修改文件frameworks/base/policy/src/com/android/internal/policy/impl/PhoneFallbackEventH...原创 2018-12-26 14:20:08 · 384 阅读 · 0 评论 -
Android串口Serial服务解析
正常Android设备的串口一般是用作debug调试使用,随着Android设备使用越来越广,比如智能pos、智能扫码机都会用到Android主板和单片机进行通信,如果Android主板和单片机通信数据量大可以使用USB,若是通信数据量小可以使用串口进行通信,因为串口通信简单并且稳定性高,最近做的一个项目就是Android使用串口和加密芯片进行通信,Android主板使用的是rk3288和rk33...原创 2019-12-02 14:22:54 · 10879 阅读 · 6 评论 -
使用命令生成update.zip以及添加升级包检验签名功能
一般普通ota升级都是直接调用RecoverySystem.installPackage,让系统进入recovery,然后在recovery升级Android系统,但是存在一个缺点。如果他人使用非系统签名的update.zip升级包。也会使系统进入recovery模式。然后升级失败。死在recovery模式。所以每次升级之前要校验签名使用相同。 使用api接口是RecoverySystem....原创 2019-12-02 14:25:04 · 7069 阅读 · 0 评论 -
解决rk3288启动SurfaceFlinger 初始化失败问题
最近编译rk3288源码遇到一个奇怪的问题,正常编译使用的Android源码。如果做一些改动之后。再烧录启动失败很是苦恼,主要报下面错误 kernel 失败日志[ 4.088148] EXT4-fs (mmcblk0p12): recovery complete[ 4.088569] EXT4-fs (mmcblk0p12): mounted filesystem with o...原创 2018-06-13 12:41:08 · 7720 阅读 · 3 评论 -
Android GpioService从app到驱动
因为最近项目Android要用到APP控制相关GPIO控制,因为网上大部分都是app直接通过JNI控制GPIO,这样做存在一个问题,GPIO被多个app打开会报错。同时也违背了Android设计初衷。这里demo也是从其他项目拷贝过来的。自己修改的。源码使用的是Android 5.1 的rk3288.使用控制led灯的方式来实现gpioservice。 通过JNI方式一般流程是app-&...原创 2019-12-02 14:24:54 · 1981 阅读 · 1 评论 -
Android性能测试用例
Android性能测试1 概要本测试主要用于测试Android硬件机器人的Android系统性能,主要关注于系统稳定性,测试内容包括硬件驱动(功放、MIC、LED、按键、WIFI)稳定性、应用稳定性(云知声和平安APK系统的CPU和内存使用率)。2辅助工具2.1工具简介科大讯飞 ITEST是一款Android应用与底层Linux进程性能监控的神器。目前已经在各类APP产品测试中广泛使用,相比其它的监原创 2017-11-01 15:46:26 · 6820 阅读 · 1 评论 -
有关wifi配置工具wpa_cli以及wpa_supplicant简单分析
最近在公司开发新产品智能Android机器人,开始使用的是rk3229开发板,在调试wifi的时候经常用到工具wap_cli,开始使用demo板调试的时候wpa_cli可以正常使用。但是由于产品需要支持蓝牙功能,所以换了博通的AP6212的wifi模块。demo使用的rtl8616wifi模块。后来发现新硬件上的wap_cli不能使用。很影响调试进度。报错如下Failed to connect to原创 2017-10-23 11:46:30 · 20677 阅读 · 4 评论 -
声波配网研究
最近公司再做智能音箱项目。准备airkiss和声波配网进行二选一。airkiss是通过wifi广播的形式进行传输ssid和pwd。测试下来抗干扰性好。声波配网简单。不需要有wifi只要有mic输入解码即可,所以自己移植了网址 http://www.sinvoice.com/上面的Android sdk进行声波联网测试。 这个公司由于收费牵扯到版权。所以有商业化用到他们公司产品请联系sinvo原创 2017-09-21 15:35:42 · 5651 阅读 · 2 评论 -
MT8127_Android_scatter.txt 文件添加backup分区
最近在做mtk盒子时候。发现用flash_tool烧写rom的时不能正常识别backup 分区(上图)。需要手动添加backup.img。特别麻烦。通过代码查看发现MT8127_Android_scatter.txt 文件主要由mediatek/build/tools/ptgen/MT8127/ptgen.pl 生成。open (SCAT_NAME, ">$SCAT_NAME") or原创 2014-12-08 16:56:01 · 9955 阅读 · 10 评论 -
Android 使用非阻塞的方式读写串口
上一篇博客简单介绍了Android 串口使用demo,项目开发中由于app 同学要求 例如 getMcuversion() 返回值是 当前单片机版本号,由于我们串口是阻塞的 ,所以我们接收到串口返回值后,readthread 仍不会结束。所以传递当前read结果防是有两种,一种通过handler方式将read结果发给getMcuversion(){},但是我们无法预知何时能读到结果。另外一种就是...原创 2019-12-02 14:24:40 · 3199 阅读 · 0 评论 -
Android 8.0 system app加载so Permission denied 解决
在预置包含react native 的Android app 预置到mtk 6739的系统中,此app 具体 platform 签名。此app启动会加载一些 facebook的so库发现此app 如果预置到system/app下,启动会报错。开始以为是没有把相关的so库 放到 system/app/xx/lib 下。在Android 6.0我都是可以正常启动的。发现在8.0 仍然会报错。报...原创 2019-11-06 11:09:38 · 10514 阅读 · 1 评论 -
禁止状态栏下拉
源码文件frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java public void disable(int state) { //add start state = state | StatusBarManager.DISABLE_NOT...原创 2018-12-26 14:07:43 · 1238 阅读 · 3 评论 -
Android 4.2寸屏幕显示4.0的效果
我们之前有一款产品,显示屏时4.2寸的,但是屏幕模组是4.0寸的,导致显示的时候,Android系统状态栏有很小的一部分被遮住了,显示不全。就想着能不能修改系统默认显示大小,解决这个问题。平时大家调试app适配的时候,经常会使用wm工具wm size可以查看当前屏幕分辨率,也可以设置屏幕分辨率(当然也就一般调试问题wm size)。eg: wm size 720x1280这是我们当前...原创 2018-11-20 14:27:38 · 927 阅读 · 0 评论 -
Android 8.1 添加 自定义可切换桌面
现在产品有一个需求,在工厂测试的时候启动时Android原生桌面launcher3,测试完毕后启动我们产品默认的app。所以自己在Android启动 桌面的时候做一个属性判断,如果属性persist.defaulthome = false就启动launcher3, = true就启动我们产品app。在Android 8.1 有seLinux权限管理很严格...原创 2019-12-02 14:24:12 · 1556 阅读 · 0 评论 -
rk3368支持外置SD或TF的OTA卡升级
默认rk3368不支持外置SD卡升级,升级时候会报错。Android系统 为6.0首先在bootable/recovery/roots.h下添加void ensure_usb_mounted();void ensure_sd_mounted();文件 recovery.cppvoid ensure_sd_mounted(){ int i; for(i = 0; i &...原创 2018-11-19 15:09:48 · 1960 阅读 · 0 评论 -
谷歌输入法设置隐藏
由于我们产品没有Android底部三个导航键,并且开机之后就启动我们自己的app,一旦进入输入法设置之后就无法退出当前界面。只能重新启动机器,这是一个很操蛋的bug,之前有测试的同学告诉我。我上一个版本没有设置这个选项,通过查询log得知,我之前版本是没有做user_setup_complete 初始化设置。有两种解决办法。第一中就是直接系统第一次开机的时候不设置 Settings.S...原创 2018-11-19 14:14:24 · 1842 阅读 · 1 评论 -
Android 8.1 关机
之前发送Intent i = new Intent("android.intent.action.ACTION_REQUEST_SHUTDOWN");会报android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.ACTION_REQUEST_S...原创 2019-12-02 14:24:24 · 2502 阅读 · 0 评论 -
Android 8.1 添加属性SystemProperties.set可执行权限
在Android 8.1由于selinux权限的限制。默认SystemProperties.set执行报avc denied,即使给 app android:sharedUserId="android.uid.system"权限也不行,如果想执行必须修改一些文件。device/mediatek/sepolicy/basic/non_plat/property.tetype persist_de...原创 2019-12-02 14:25:24 · 6741 阅读 · 1 评论 -
svn inport 错误
我曾在使用svn import . http://192.168.1.242/svn/m6_4.2 上传 android代码时,svn把.a以及.so文件全部忽略了, 重新check out的代码就不包含这些文件了。。怎么编译都不能通过。。听过svn help import 知道 默认时报.so文件过滤 。所以svn import --force --no-ignore . http:/原创 2013-09-23 13:29:54 · 1001 阅读 · 0 评论