百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

Windows下运行 Android CTS

bigegpt 2024-08-07 17:51 6 浏览

1. 背景

在windows下运行android CTS的文章, 在网上找了一圈, 发现都是老版本的, 而且官方也明确说了, 不支持在window上运行.

Caution: CTS currently supports 64-bit Linux and Mac OS host machines. CTS will not work on Windows OS.

不支持在windows上运行

本篇文章提供2个可以用的方法.

2. 了解运行原理

首先分析下载好的文件8.1的zip包里面的cts-tradefed这个文件, 这个直接用文本工具打开即可.

可以看到下面是检查一些必须工具是否可用

aapt

adb 这个需要配置环境变量, 在Android 8+以上的最好使用 1.0.39+以上的版本

java 版本需要1.8以上

checkFile() {

if [ ! -f "$1" ]; then

echo "Unable to locate $1"

exit

fi;

}

checkPath() {

if ! type -P $1 &> /dev/null; then

echo "Unable to find $1 in path."

exit

fi;

}

checkPath aapt # 检查aapt和adb java版本. 这个版本要求是 adb是1.0.39以上. java是1.8以上

checkPath adb

checkPath java

# check java version

if [ "${EXPERIMENTAL_USE_OPENJDK9}" == "" ]; then

JAVA_VERSION=$(java -version 2>&1 | head -n 2 | grep '[ "]1\.[678][\. "$]')

if [ "${JAVA_VERSION}" == "" ]; then

echo "Wrong java version. 1.6, 1.7 or 1.8 is required."

exit

fi

else

JAVA_VERSION=$(java -version 2>&1 | head -n 2 | grep '^java .* "9.*')

if [ "${JAVA_VERSION}" == "" ]; then

echo "Wrong java version. Version 9 is required."

exit

fi

fi

再往下走.

这里看注释就好了, 第一个是检查系统版本的, 很显然, 官方也没有撒谎, 就是没有windows或者NT的字眼, 我就是不支持windows, 第二个就是检查android的编译环境, 这个就是设置CTS的运行目录.

# get OS

HOST=`uname`

if [ "$HOST" == "Linux" ]; then

OS="linux-x86"

elif [ "$HOST" == "Darwin" ]; then

OS="darwin-x86"

else

echo "Unrecognized OS"

exit

fi

# check if in Android build env

if [ ! -z "${ANDROID_BUILD_TOP}" ]; then

if [ ! -z "${ANDROID_HOST_OUT}" ]; then

CTS_ROOT=${ANDROID_HOST_OUT}/cts

else

CTS_ROOT=${ANDROID_BUILD_TOP}/${OUT_DIR:-out}/host/${OS}/cts

fi

if [ ! -d ${CTS_ROOT} ]; then

echo "Could not find $CTS_ROOT in Android build environment. Try 'make cts'"

exit

fi;

fi;

if [ -z ${CTS_ROOT} ]; then

# assume we're in an extracted cts install

CTS_ROOT="$(dirname $(readlink -e $0))/../.."

fi;

可以看到把CTS_ROOT里面的jar包都添加到JAR_PATH里面去了.

这部分代码的后面部分就是, 导入其他共享库. 在windows就没得到咯:)

JAR_DIR=${CTS_ROOT}/android-cts/tools

JARS="tradefed

hosttestlib

compatibility-host-util

compatibility-host-util-tests

cts-tradefed

cts-tradefed-tests

compatibility-common-util-tests

compatibility-tradefed-tests

host-libprotobuf-java-full"

for JAR in $JARS; do

checkFile ${JAR_DIR}/${JAR}.jar

JAR_PATH=${JAR_PATH}:${JAR_DIR}/${JAR}.jar

done

OPTIONAL_JARS="

google-tradefed

google-tradefed-tests

google-tf-prod-tests"

for JAR in $OPTIONAL_JARS; do

if [ -f "${JAR_DIR}/${JAR}.jar" ]; then

JAR_PATH=${JAR_PATH}:${JAR_DIR}/${JAR}.jar

fi;

done

# load any shared libraries for host-side executables

LIB_DIR=${CTS_ROOT}/android-cts/lib

if [ "$HOST" == "Linux" ]; then

LD_LIBRARY_PATH=${LIB_DIR}:${LIB_DIR}64:${LD_LIBRARY_PATH}

export LD_LIBRARY_PATH

elif [ "$HOST" == "Darwin" ]; then

DYLD_LIBRARY_PATH=${LIB_DIR}:${LIB_DIR}64:${DYLD_LIBRARY_PATH}

export DYLD_LIBRARY_PATH

fi

# include any host-side test jars

for j in ${CTS_ROOT}/android-cts/testcases/*.jar; do

JAR_PATH=${JAR_PATH}:$j

done

最后一行就是把这个CTS运行起来的代码.

java $RDBG_FLAG -Xmx4g -XX:+HeapDumpOnOutOfMemoryError -cp ${JAR_PATH} -DCTS_ROOT=${CTS_ROOT} com.android.compatibility.common.tradefed.command.CompatibilityConsole "$@"

3. 制作BAT批处理文件

需要把CTS和安卓SDK环境加进来,

把解压好的tools目录的jar包加载到JAR_PATH里面, 然后就可以运行了.

@echo off

set SDK_ROOT=D:\dev\SDK

set CTS_ROOT=D:\dev\android-cts

set "RUN_PATH="

set "JAR_PATH="

set PATH=%PATH%;%SDK_ROOT%\platform-tools\;%SDK_ROOT%\tools\;%SDK_ROOT%\build-tools\27.0.3\

SETLOCAL ENABLEDELAYEDEXPANSION

:: include \android-cts\tools

for %%f in (%CTS_ROOT%\android-cts\tools\*.jar) do set RUN_PATH=%%f;!RUN_PATH!

:: include any host-side test jars

for %%f in (%CTS_ROOT%\android-cts\testcases\*.jar) do set JAR_PATH=%%f;!JAR_PATH!

java -Xmx200M -cp %RUN_PATH%%JAR_PATH% -DCTS_ROOT=%CTS_ROOT% com.android.compatibility.common.tradefed.command.CompatibilityConsole

4. 还有一种方法.

因为CTS官方是不支持windows的, 但是VTS 是可以在windows上运行的. 因此只需要修改VTS为CTS即可.

ps, 这 2 个脚本都上传到github了, 有需要的自取. https://github.com/rikiesxiao/cts_tradefed_win

5. 参考文档

Windows 批处理

stackoverflow问题指点

CTS 官方参考文档

CTS 源代码

VTS 文档

如果你喜欢的话,可以关注个人微信公众号:「叉叉敌」

相关推荐

php-fpm的配置和优化

目录概述php-fpm配置php-fpm进程优化配置慢日志查询配置php7进阶到架构师相关阅读概述这是关于php进阶到架构之php7核心技术与实战学习的系列课程:php-fpm的配置和优化学习目标:理...

成功安装 Magento2.4.3最新版教程「技术干货」

外贸独立站设计公司xingbell.com经过多次的反复实验,最新版的magento2.4.3在oneinstack的环境下的详细安装教程如下:一.vps系统:LinuxCentOS7.7.19...

十分钟让你学会LNMP架构负载均衡

业务架构、应用架构、数据架构和技术架构一、几个基本概念1、pv值pv值(pageviews):页面的浏览量概念:一个网站的所有页面,在一天内,被浏览的总次数。(大型网站通常是上千万的级别)2、u...

php从远程URL获取(mp4 mp3)音视频的流媒体数据

/***从远程URL中获取媒体(如mp4mp3)的内容*@parammixed$file_url*@parammixed$media_type...

Zabbix5.0安装部署

全盘展示运行状态,减轻运维人员的重复性工作量,提高系统排错速度,加速运维知识学习积累。1.png1、环境安装关闭SELinux并重启系统2.png安装httpd、mariadb、php运行yum-...

php 常见配置详解

以下是PHP常见的配置项及其含义:error_reporting:设置错误报告级别,可以控制PHP显示哪些错误。例如,设置为E_ALL将显示所有错误,而设置为0将禁止显示任何错误。displa...

实践分享|基于基石智算 DeepSeek API + WordPress 插件自动生成访客回复

基石智算举办的DeepSeek案例大赛汇集了不少基于CoresHubDeepSeekAPI服务或模型部署服务的精彩实践。本次我们将分享个人实践:通过DeepSeekAPI+Word...

如何在Eclipse中搭建Zabbix源码的调试和开发环境

Zabbix是一款非常优秀的企业级软件,被设计用于对数万台服务器、虚拟机和网络设备的数百万个监控项进行实时监控。Zabbix是开放源码和免费的,这就意味着当出现bug时,我们可以很方便地通过调试源码来...

MySQL自我保护参数

#头条创作挑战赛#之前(MySQL自我保护工具--pt-kill)提到用pt-kill工具来kill相关的会话,来达到保护数据库的目的,本文再通过修改数据库参数的方式达到阻断长时间运行的SQL的目...

Python闭包深度解析:掌握数据封装的高级技巧

闭包作为Python高级编程特性之一,为开发者提供了一种优雅的方式来实现数据封装和状态保持。这一概念源于函数式编程理论,在现代Python开发中发挥着重要作用。理解和掌握闭包的使用不仅能够提升代码的表...

Java服务网格故障注入与熔断实战

在分布式系统的高可用性挑战中,服务网格的故障注入与熔断机制是检验系统韧性的终极试金石。以下是10道逐步升级的"地狱关卡",每个关卡都对应真实生产环境中可能遇到的致命场景,并附具体场景示...

MySQL数据库性能优化全攻略:程序员必知的七大核心策略

作为程序员,我们每天都要与数据库打交道。当系统用户量突破百万级时,数据库往往成为性能瓶颈的首要怀疑对象。本文将深入探讨MySQL优化的七大核心策略,并提供可直接落地的优化方案,助您构建高效稳定的数据库...

如何在 Windows 11 上使用单个命令安装 XAMPP

XAMPP是一种广泛使用的软件,用于在Windows操作系统上快速运行LAMP服务器包,包括Windows11。尽管LAMP通常用于Linux系统,但XAMPP并不使用Li...

uTorrent怎样将bt种子转换为磁力

如何用uTorrent把BT种子转为磁力链接?以下方法希望能帮到你。1、在uTorrent窗口里,点击工具栏的按钮,所示。2、在打开窗口里,选取要转为磁力的种子文件,然后点击打开按钮,参照图示操作...

支持向量机SVM 分类和回归的实例

支持向量机(SupportVectorMachine)是Cortes和Vapnik于1995年首先提出的,它在解决小样本、非线性及高维模式识别中表现出许多特有的优势,并能够推广应用到函数拟合等其他...