当前位置: 首页 > news >正文

GNSS CTS GNSS Start and Location Flow of Android15

目录

  • 1. 本文概述
  • 2.CTS 测试
  • 3.Gnss Flow
    • 3.1 Gnss Start Flow
    • 3.2 Gnss Location Output Flow

1. 本文概述

本来是为了做Android 14 Gnss CTS 的相关环境的搭建和测试,然后在测试中遇到了一些问题,去寻找CTS源码(/cts/tests/tests/location/src/android/location/cts/GnssTtffTests.java),找测试failed的原因,因此去简单了解了哈Android的源码;另外出于好奇,结合CTS 中测项去捋了捋从Framework层到HIDL启动gnss 和 位置上报的流程。

如下是一些学习和参考的链接:

  1. 肝疼了3万字的Android源码学习指南 : 可简单了解Android 的架构和Android 初始化的流程
  2. 源码在线查看网站 : 貌似这个网站访问不了(code 时间点:20240908)
  3. CTS 环境搭建 : 主要是一些软件的安装如adb,appt2,python,JDK等,然后就是CTS 套件,需要根据自己的测试版本来选择下载; (我是下载的Android 14 R5 Compatibility Test Suite (CTS) - ARM)
  4. Gnss flow 解析参考 :还是有一定的参考价值,但是这个是Andorid 11的,貌似Android 15的flow 有一些变化;当时对照着看,没有看走

贴一张android 启动流程图(来自链接1)
请添加图片描述

2.CTS 测试

  1. 安装测试环境,参考第一部分的链接3
  2. Gnss CTS test
    • 启动cts : ./android-cts/tools/cts-tradefed
    • 运行 gnss cts: run cts -m CtsGnssLocationTestCase
    • 如果运行失败了,执行 l r (list result)查看结果,将失败的在跑一次 run retry -r sessionid
    • 最后的测试日志&结果可以在android-cts/log or android-cts/result 中查看

3.Gnss Flow

由于访问不了https://cs.android.com/,就不再重新去追一次流程了,贴上之前追好了的图片(有些简陋,将就看,CodeBase 属于Android15)

3.1 Gnss Start Flow

App -> Framework -> JNI -> HIDL -> Drive
请添加图片描述

3.2 Gnss Location Output Flow

App <- Framework <- JNI <- HIDL <- Drive
需要注意下JNI部分: method_reportLocation = env->GetMethodId(clazz, “reportLocation”, “(ZLandroid/location/Location;)V”); 该语句表示会调用Java层(GnssNative.jave)中的reportLocation(bool, Location)函数,注意有两个参数请添加图片描述
贴一张JAVA 和JNI 的函数参数签名的对照表(来自链接)
在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Spring框架IOC
  • vulhub远程执行命令漏洞CVE-2022-22963
  • flutter的入口和原生交互
  • Svn常用操作技巧详细说明
  • ES模块导入、导出学习笔记
  • Python条形码生成
  • Linux中的时间
  • Python中的`range()`函数及其用法
  • 九、制作卡牌预制体
  • windows清理图标缓存
  • 群晖最新版(DSM 7.2) 下使用 Web Station 部署 flask 项目
  • Xilinx FPGA 原语解析(二):IBUFDS差分输入缓冲器(示例源码及仿真)
  • Nosql数据库
  • 算法复杂度的简单介绍
  • 程序的格式框架与缩进
  • [ 一起学React系列 -- 8 ] React中的文件上传
  • 【刷算法】求1+2+3+...+n
  • ES6系列(二)变量的解构赋值
  • interface和setter,getter
  • JWT究竟是什么呢?
  • LeetCode18.四数之和 JavaScript
  • mongo索引构建
  • React16时代,该用什么姿势写 React ?
  • select2 取值 遍历 设置默认值
  • Vim Clutch | 面向脚踏板编程……
  • 闭包,sync使用细节
  • 创建一个Struts2项目maven 方式
  • 番外篇1:在Windows环境下安装JDK
  • 海量大数据大屏分析展示一步到位:DataWorks数据服务+MaxCompute Lightning对接DataV最佳实践...
  • 快速体验 Sentinel 集群限流功能,只需简单几步
  • 前端工程化(Gulp、Webpack)-webpack
  • 移动互联网+智能运营体系搭建=你家有金矿啊!
  • 正则学习笔记
  • 京东物流联手山西图灵打造智能供应链,让阅读更有趣 ...
  • 新海诚画集[秒速5センチメートル:樱花抄·春]
  • ​​​​​​​sokit v1.3抓手机应用socket数据包: Socket是传输控制层协议,WebSocket是应用层协议。
  • ​十个常见的 Python 脚本 (详细介绍 + 代码举例)
  • ## 1.3.Git命令
  • (function(){})()的分步解析
  • (html5)在移动端input输入搜索项后 输入法下面为什么不想百度那样出现前往? 而我的出现的是换行...
  • (pojstep1.1.2)2654(直叙式模拟)
  • (Python) SOAP Web Service (HTTP POST)
  • (多级缓存)缓存同步
  • (附源码)spring boot火车票售卖系统 毕业设计 211004
  • (附源码)springboot学生选课系统 毕业设计 612555
  • (学习总结16)C++模版2
  • (转)ABI是什么
  • (自用)网络编程
  • *p++,*(p++),*++p,(*p)++区别?
  • .NET Framework 的 bug?try-catch-when 中如果 when 语句抛出异常,程序将彻底崩溃
  • .NET MAUI学习笔记——2.构建第一个程序_初级篇
  • .net 后台导出excel ,word
  • .Net+SQL Server企业应用性能优化笔记4——精确查找瓶颈
  • .Net多线程Threading相关详解
  • .net网站发布-允许更新此预编译站点