Andorid学习
文章平均质量分 72
fanged
野生程序员。。。这里主要是一些学习笔记和心得。。。
展开
-
嵌入式设备的分区
它使用了一种称为设备映射器(Device Mapper, dm)的技术,将一个大的物理分区(即 super 分区)映射为多个独立的逻辑分区。最后嵌入式linux的分区,是挂载到某个文件夹,并不是盘符,这些都是和windows电脑分区的区别。里面有一些奇怪的地方,比如/dev/block/dm-*,/dev/fuse,selinuxfs,overlay,binder。第二点就是super -> /dev/block/mmcblk0p13,super这个,照理说这个是最大的分区,却没有看到挂载,再查了一下。原创 2024-08-06 09:44:11 · 118 阅读 · 0 评论 -
JNI示例
其实可以看到,JNI整个也并没有做太多东西,整个也没有对操作系统,语言做一些很深层次的定制,大部分还是基于语言的特性来弄的。有空可以看看JNI那几个宏,就一切都明白了。中间可能会提示Java没有装,装下面几个就可以了。也不用全装,headless装一个就行了。Linux下,没有在Andorid下面搞,安卓开发效率太低了。这里会生成HelloJNI.class。之后会生成头文件,HelloJNI.h。之后就会生成libhello.so。原创 2024-02-21 01:53:44 · 116 阅读 · 0 评论 -
OpenGrok使用
以前都是用的find,或者VScode里面的浏览,但是到了Android这个就不行了,代码太多了。都在用OpenGrok,所以俺也用一下。这里有两个步骤,一个是安装,是一个使用。原创 2024-05-08 00:41:50 · 715 阅读 · 0 评论 -
Android音频系统
最近在做UAC的项目,大概就是接收内核UAC的事件,也就是声音相关事件。然后就是pcm_read和AudioTrackr->write之间互传。感觉略微有点奇怪,所以简单总结一下。原创 2024-06-21 18:50:07 · 438 阅读 · 0 评论 -
Android学习10 -- 认证测试
包含了一系列测试用例,涵盖了 Google Play 应用和服务的各个方面,如应用下载、应用安装、应用更新、应用支付等。Vendor Test Suite,VTS 是由 Google 提供的用于 Android 设备厂商的测试套件,用于验证设备是否符合 Android 兼容性要求。CTS Verifier 包含了一系列测试用例,涵盖了设备的各个方面,如屏幕、相机、传感器、音频、蓝牙等。它包含一系列测试用例,涵盖了设备的各个方面,如硬件功能、软件功能、API 的正确实现等。也是国外运营商的要求。原创 2024-04-09 17:27:51 · 431 阅读 · 2 评论 -
Android学习13 -- 编译系统
安卓的编译真的太多吐槽的地方了,有必须到croot下编译的,有随便改个.c就要七八分钟编译的。我有时候真的不知道这么多开发人员是怎么挺过来的。算了,下面这个写的很好了,我先看看吧。今晚简单看看这个编译系统soong吧。原创 2024-03-13 01:17:56 · 268 阅读 · 0 评论 -
Android学习14 -- VINF和兼容性矩阵
本质上其实就是两部分,设备提供什么能力,系统需要什么能力。然后看两者能否兼容匹配上。这两者都是使用xml进行描述。主要是Android8之后,system和vendor分离,为了确保两者的兼容性搞出来的。周末搞这玩意欲仙欲死,没办法只有看看。VINTF是供应商接口对象(VINTF 对象),准确的说,这个是属于兼容性矩阵概念。有点想起了以前看过的一个电影,异次元杀阵。下面是谷歌官方的图。我看说的一般是在/vendor/etc/vintf下面增加。说是下面这个命令可以列出所有接口。原创 2024-03-17 03:10:19 · 2262 阅读 · 0 评论 -
Android学习7 -- NDK1--概念
JNI我们都知道,存在很久的东西了,那么JNI和NDK有什么关系呢?我的理解,JNI只是NDK技术中的一个,谷歌对NDK的定义是一个开发包,没有像Linux中那么自由,但是好处是明显的,移动端最尴尬的就是跨平台,他把这事给你干了,编译器,调试器,底层库,都给你弄了,写代码之后自动就是ARM,X86多平台,一些库的选择事情他也给你干了,不用自己再去移植。对于想赚差价的中间商,也是有三个好处的。另一个是C/C++的代码更有通用性,移植到其它平台更方便。说到NDK,首先绕不过去的问题就是这玩意存在的意义。原创 2024-03-16 15:10:05 · 143 阅读 · 0 评论 -
高通平台初步
涉及到的部件主要有HLOS,MPSS(medem),aDSP&cDSP,XBL(Boot build),AOP,TZ,WLAN,BTFM,video,WiGig,VENUS,SLPI,CPE,Secure processor。前面都是开源,从TZ开始后面的都是给bin。首先是安装环境,一些常规的,主要是Ubuntu,JDK,repo,ARM交叉编译器,Python,Perl,Samba(可选)。上面的图有点小怪,主要是Libraies,Framework,App,这部分感觉应该是Google的。原创 2024-03-20 14:42:03 · 670 阅读 · 0 评论 -
Android生产测试软件(TODO)
生产测试软件则是用在生产流水线上。两者的功能其实大差不差,但是生产测试软件要考虑到自动化以及流水线的工序等等。之前把这个和安卓工程模式搞混了,现在才知道两个是不同的。工程模式是用在维修手机中的,发现手机的问题。后面空了再看吧,,,来不起了。原创 2024-05-15 01:37:37 · 91 阅读 · 0 评论 -
Repo学习
首先,Repo本体就是一个Python脚本,1500行,随便一个程序员一周也能写出来。但是开发的时候,尤其是真正的工业级开发,很多人只会涉及到一个仓,很少有大佬改多个仓,就算能力够,精力也未见的够。在这一步中,会安装完全版的Repo,还有很重要的Manifest文件。第一次初始化的时候,repo确实很方便,一次正确同步很多仓库。实际上通常使用第三方的平台,都会把这一部分的内容换成自家的,此时里面的数据都是预先就提供,所以这一步就不需要弄。脚本的结构其实也不难,就是标准的switch结构。原创 2024-02-16 23:26:54 · 174 阅读 · 1 评论 -
Android学习2 -- SDK 1(概览)
是如果要自己编译安卓,电脑的硬盘配置和内存都要升级。硬盘要单独的500G,内存最少得搞到32G。目前绝大多数电脑只到32G,要分给虚拟机这么多的话,要么电脑只装ubuntu,要么就升级内存到64。最详细的资料还是去看官网为佳,我这里只能算一个概述或者学习笔记吧。这里有个现实问题,repo不稳定容易断,断了恢复起来很麻烦。将近100G,百度云不开会员限速200来K,得下差不多一周。是国内的话会被墙,所以用官网的命令是下不下来的。Android.bp就是新的构建文件,Android.mk则是老的。原创 2024-02-17 02:03:14 · 622 阅读 · 1 评论 -
Android学习4 -- ADB的使用
本质其实就是一个加强版的串口工具(这样理解大差不差)。adb命令其实对应一个server,在板子上有一个adb的守护进程。晚上大概试用了一下,就只是一个工具,真的是很乏善可陈。除此之外就是命令行工具,此外好像没啥了额。3 支持Android特色,可以安装apk。2 集成了ftp的功能,可以上传文件。1 支持网络,可以多客户端。原创 2024-02-22 23:43:36 · 157 阅读 · 0 评论 -
Android学习5 -- HAL-1 概述
首先IPC有很多种,管道,域套接字,message,共享内存,问题是谷歌为什么要搞出来一套新的呢?在接口中主要定义的还是函数,也就是说比管道这些更上层,更适合Java的调用。就算上层函数调用,其实也很多方式,比如COM,soap,rpc都是干这事的。有大神说直通式就是使用HAL,但还是在一个进程,绑定式是使用HAL,但是数据通过Binder转发。现代HAL(Conventional HAL),使用Iibhardware来管理so,同时下层的驱动使用一个单独的分区,vender.img,和system解绑。原创 2024-02-29 02:40:47 · 1733 阅读 · 0 评论 -
试手一下CameraX(基础)
有JDK的,有要翻墙下Gradle的,有dependencies的,总之就是很难顺利跑起来。记得之前还在上课,因为Gradle的问题也搞出来很多乌龙,折腾半天。真的,这玩意真的是我用过最难用的IDE,也许没有之一。IDE嘛,再加上应用程序框架,其实有很多,比如VC++,QT,IOS,安卓,甚至web也算一种,骨子里内容其实都是那些。GUI框架,各种控件,消息管理,大家你抄我我抄你,东西总的来说差别也不大。Android Studio神奇的是就算你现在别人的全套工程,在你本地也不一定跑的起来。原创 2024-03-02 13:53:28 · 185 阅读 · 0 评论 -
试手一下CameraX(APP)
name,contentValues,mediaStoreOutputOptions都是作为参数使用。在output中,好像是使用了lambda函数,弄了一些内置行为。name,contentValues,outputOptions都是作为参数传进去。大体的流程就是首先取得surface,然后使用cameraProvider.bindToLifecycle,将surface作为参数传进去。这个应该是camerax的控件。增加两个按键,分别是takephoto和capturevideo,并增加按键事件。原创 2024-03-03 22:22:28 · 349 阅读 · 0 评论 -
Android学习1 -- 从嵌入式Linux到嵌入式Android
最近开始投入Android的怀抱。说来惭愧,08年就听说这东西,当时也有同事投入去看,因为恶心Java,始终对这玩意无感,没想到现在不会这个嵌入式都快要没法搞了。为了不中年失业,所以只能回过头又来学。首先还是说Android是基于Linux内核的,所以说骨子里还是linux,但是针对移动端,进行了深度优化。原创 2024-02-27 23:55:07 · 1543 阅读 · 2 评论 -
Android学习3 -- SDK2 (实操三个小目标)
三个实际练手内容。原创 2024-03-06 23:49:43 · 703 阅读 · 0 评论 -
Android的自启动
最近要用到这个,所以也花时间看看。从分层来说,安卓的自启动也分成三种,app的自启动,framework服务的自启动,HAL服务的自启动。现在简单说说这三种把。原创 2024-06-16 15:33:31 · 545 阅读 · 0 评论 -
Android学习12 -- SEAndroid
SELinux(Security-Enhanced Linux),提供了内核级的安全访问,比以前ACL强很多。从上图可以看出,实际上andorid selinux就是在访问文件时,内核中有一些回调钩子,如果配置了,就会去检查。就这么简单。安全上下文是 SELinux 的核心。安全上下文我自己把它分为「进程安全上下文」和「文件安全上下文」。一个「进程安全上下文」一般对应多个「文件安全上下文」。只有两者的安全上下文对应上了,进程才能访问文件。它们的对应关系由政策中的规则决定。查询文件的上下文,ls -Z。原创 2024-03-15 02:25:49 · 268 阅读 · 0 评论 -
安卓启动流程
还是以高通为例子。这次整理并不是很完善,下来会再整理。。。原创 2024-06-13 20:04:35 · 826 阅读 · 0 评论 -
Android在不同层面增加应用
应用代码一般在开发者的项目目录下,packages/apps/YourApp/,比如。用户安装的应用(从Google Play或其他来源安装的APK)位于设备的。直接使用JNI,貌似也是可以的,各有利弊。是由Zygote进程启动的,它包含了大部分系统服务,如。Framework服务的源代码主要位于。Framework服务的代码编译后成为。和其他相关JAR文件,位于设备的。对于系统应用,源代码可能位于。HAL服务的源代码通常位于。系统应用(预装应用)位于。实现HAL服务,用C++文件)的形式存在,位于。原创 2024-06-03 01:55:09 · 369 阅读 · 2 评论 -
Android的刷机模式
不过EDL模式不懂也正常,因为这个是高通独有。感觉有点类似JTAG那种刷机吧。我的理解OTA是操作系统层面的升级,FastBoot是bootloader层面的升级,EDL就是类似JTAG的层面。不看不知道,一看原来这么多。想以前做博通方案,就是一个web刷机包刷到死。到底是技术进步了还是以前太浅薄?常用的应该就是OTA,FastBoot。EDL好像都很少用吧,不过今天确认用到了,还让我自己去焊接,我真无语了。原创 2024-05-31 01:20:00 · 416 阅读 · 0 评论 -
Google Attestation Key
高通RPMB(Replay Protected Memory Block,重放保护内存块)是一种专用于存储敏感数据的安全存储区域,通常用于存储如认证密钥、加密密钥和其他安全性相关的数据。RPMB的主要特点是其重放保护功能,确保数据的完整性和安全性。安卓的key还是不少,比如widevine drm,attestation,ifaa,soter key。现在是出厂的时候要预置这个,如果没有会导致CTS出错。参考下面高通的文档,大概是以下的步骤。从产线的角度来看,手动步骤还是比较多的。原创 2024-05-29 15:36:27 · 562 阅读 · 0 评论 -
Android的Framework(TODO)
(TODO)原创 2024-05-29 01:36:27 · 337 阅读 · 0 评论 -
Android的烧写(基于高通平台)
TODO。原创 2024-05-18 19:33:35 · 115 阅读 · 0 评论