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

Android CTS环境搭建

CTS即Compatibility Test Suite意为兼容性测试,是Google推出的Android平台兼容性测试机制。其目的是尽早发现不兼容性,并确保软件在整个开发过程中保持兼容性。只有通过CTS认证的设备才能合法的安装并使用Google market等Google应用。

搭建CTS测试环境需满足如下要求

  • 主机设置
    CTS支持64位Linux计算机,Windows或MacOS不支持CTS。
    适用于Ubuntu的Java开发工具包。
    确保已安装最新版本的adb和aapt2,并将该工具的位置添加到计算机系统路径中。
    Python3支持的设置如virtualenv。
    网络环境-外网&代理配置。

  • Android设备设置
    主固件及外设等物理要求
    开机向导和设置
    其它Google要求

  • CTS测试工具
    Linux命令行工具,至少连接一台被测设备。

主机设置

1、Linux环境:个人使用Ubuntu 24.04 LTS系统版本。

2、JDK环境: Ubuntu 24.04提供了两个主要的Java选项(OpenJDK & Oracle JDK),我们使用apt安装OpenJDK。

# 更新软件源
sudo apt update
# 查找openjdk
sudo apt search openjdk
# 安装openjdk 11(用于cts)
sudo apt install openjdk-11-jdk
# 安装openjdk 21(用于sdkmanager)
sudo apt install openjdk-21-jdk
# 检查java是否安装成功
java -version
javac -version
# 更换版本,注意javac也同步更换,保持一致
sudo update-alternatives --config java
sudo update-alternatives --config javac

配置java环境变量

# 进入该文件进行编辑 
vim .bashrc# 在文件最后添加以下内容
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
export CLASSPATH=.:%JAVA_HOME%/lib:%JAVA_HOME%/jre/lib
export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin# wq保存后让新增的环境变量生效
source .bashrc

3、SDK环境
配置参考:https://stackoverflow.com/questions/34556884/how-to-install-android-sdk-on-ubuntu

sdkmanager是一个命令行工具,可以用它来查看、安装、更新和卸载Android SDK的软件包。如果使用Android Studio,则无需使用此工具。
Android SDK下载路径:https://developer.android.google.cn/studio?hl=zh-cn

在这里插入图片描述

  • 解压commandlinetools-linux-11076708_latest.zip,在解压目录/cmdline-tools/bin目录下运行./sdkmanager --list,此时遇到一个错误1:

Error: LinkageError occurred while loading main class com.android.sdklib.tool.sdkmanager.SdkManagerCli
java.lang.UnsupportedClassVersionError: com/android/sdklib/tool/sdkmanager/SdkManagerCli has been compiled by a more recent version of the Java Runtime (class file version 61.0), this version of the Java Runtime only recognizes class file versions up to 55.0

说明JDK的环境和Class编译版本号不匹配,需要升级。
可以选择一个commandlinetools的历史版本比如:https://dl.google.com/android/repository/commandlinetools-linux-7583922_latest.zip

也可以升级JDK:通过JDK version和class file version(Class编译版本号)对应关系,可以查询到版本至少为JDK 17。我们安装当前最新的OpenJDK 21即可。

  • 错误1解决之后再次输入sdkmanager相关命令,此时遇到了报错2:

Error: Could not determine SDK root.
Error: Either specify it explicitly with --sdk_root= or move this package into its expected location: /cmdline-tools/latest/

提示很明显,需要把commandline-tools文件夹下的内容放在lastet文件夹下,多了一个latest层级目录。

# 在/usr/lib/android-sdk/cmdline-tools目录下执行
mkdir latest
mv bin/ lib/ NOTICE.txt source.properties -t latest/

以上sdkmanager命令问题解决后,就可以安装相应的sdk tools了。

  • 安装最新的平台工具以及适用于API级别33的SDK工具:
./sdkmanager "platform-tools" "platforms;android-33" "build-tools;33.0.3"

sdkmanager如何使用请参考文档:https://developer.android.google.cn/tools/sdkmanager?hl=zh-cn

安装完再查看对应的目录是否生成相关文件夹,然后配置SDK环境变量。

***@ist-ubuntu:/usr/lib/android-sdk$ ls
build-tools  cmdline-tools  licenses  platforms  platform-tools
export ANDROID_HOME=/usr/lib/android-sdk
export PATH=$PATH:$ANDROID_HOME/cmdline-tools/latest/bin
export PATH=$PATH:$ANDROID_HOME/build-tools/33.0.3
export PATH=$PATH:$ANDROID_HOME/platform-tools

最后敲下adb verison和aapt2 -h检查下是否有输出,确保adb和aapt2位于系统路径中。

4、Python环境

# 检查系统是否安装python3
python3 --version
# Python虚拟环境相关工具
sudo apt install virtualenv
# virtualenv是否安装成功
virtualenv -h

5、网络环境
确保PC设备和Android设备均处于外网环境中,并设置JAVA_TOOL_OPTIONS使用代理。

export JAVA_TOOL_OPTIONS='-Djava.net.useSystemProxies=true'

Android设备设置

1、主固件及外设:升级主固件(测CTS使用user版本固件,测STS使用userdebug版本固件),需要的外设都接上。

2、开机向导和设置
①开机向导按默认的选项,能跳过的都跳过,不要登录Google账号,不要设置锁屏密码,不要进入子用户。
②语言切到英语,时区选择美国纽约;
③Settings->Wi-Fi,电脑和设备连接同一个外网WiFi;
④Settings->Security->Screenlock选择None;
⑤如果产品(如laptop类产品)带物理键盘,Languages & input->Physical keyboard->Show virtual keyboard,勾选该选项;
⑥连续点击Settings->About tablet(phone)->Build Number,使被隐藏的Developer Options显示出来;Setting->Developer Options-USB debugging开关打开;
⑦ Settings->Developeroptions->Stayawake,勾选该选项;
⑧ Settings->Location打开定位服务(默认是打开的,不要关闭);
⑨Settings->Display->Sleep设置成最长时间,将亮度调节到最暗(测试时间较长,以节省电量);

2、Google要求

  • 跑CTS之前需要锁定设备
# 查询值orange是未锁定,green是锁定。
adb shell getprop | grep verified

在这里插入图片描述

  • 烧录谷歌keyattestation key
# 查询是否烧录谷歌key
adb shell getprop ro.boot.deviceid
# 确认product名称
adb shell getprop | grep -i fingerprint

CTS测试工具

CTS是一款通过命令行操作的工具。目前CTS没有提供windows版本,只能在Linux下测试。
如针对Android 13的DUT,可下载这个【Android 13 R8 兼容性测试套件 (CTS) - ARM】
下载地址:https://source.android.google.cn/docs/compatibility/cts/downloads?hl=zh-cn

注:不得重命名下载的解压后的文件夹。例如,android-cts-*.zip内的android-cts必须保持相同的名称才能正常运行。

  • adb至少连接一个被测设备。然后从解压缩CTS软件包中启动CTS控制台cts-tradefed脚本:
./android-cts/tools/cts-tradefed
# 查看测试模块列表
cts-tf > list modules
# 测试其中的一个指定模块
cts-tf > run cts -m CtsWindowManagerDeviceTestCases

在这里插入图片描述

  • CTS测试结果解读请参考文档:https://source.android.google.cn/docs/compatibility/cts/interpret?hl=zh-cn
    在这里插入图片描述
http://www.lryc.cn/news/379442.html

相关文章:

  • 比较Zig、Rust和C++
  • 路由的params参数,命名路由,路由的params参数,命名路由
  • java:CompletableFuture的简单例子
  • element的table获取当前表格行
  • html做一个分组散点图图的软件
  • 【SQL】UNION 与 UNION ALL 的区别
  • 分类判决界面---W-H、H-K算法
  • Python基础教程(三十):math模块
  • 你只是重新发现了一些东西
  • 【英伟达GPU的挑战者】Groq—AI大模型推理的革命者
  • Python学习路线
  • C++ std::forward()
  • 常见的8种排序(含代码):插入排序、冒泡排序、希尔排序、快速排序、简单选择排序、归并排序、堆排序、基数排序
  • go语言day2
  • vue echarts画多柱状图+多折线图
  • cesium for unity 打包webgl失败,提示不支持
  • python开发基础——day7 序列类型方法
  • 用java写一个二叉树翻转
  • 数学建模系列(3/4):典型建模方法
  • AI播客下载:Machine Learning Street Talk(AI机器学习)
  • 鱼缸补水器工作原理是什么
  • Linux-Tomcat服务配置到系统服务
  • Python抓取高考网图片
  • Vue配置项data
  • 在IDEA 2024.1.3 (Community Edition)中创建Maven项目
  • 动手学深度学习(Pytorch版)代码实践 -卷积神经网络-28批量规范化
  • Apache Paimon系列之:Append Table和Append Queue
  • Vue使用vue-esign实现在线签名 加入水印
  • 与码无关:分数限制下,选好专业还是选好学校?
  • 什么是负载均衡技术?