从命令行获取设备的Android SDK版本

从命令行获取设备的Android SDK版本,android,shell,sdk,version,Android,Shell,Sdk,Version,我计划构建一个自动化系统,用于将Android构建部署到各种设备上,以使多平台开发更加舒适。有没有办法通过android shell或adb获得连接设备的sdk版本 将有一台连接了多个测试设备的计算机,我计划编写一个脚本,从构建服务器获取每个设备的正确构建,在各自的设备上安装不同的APK,启动它们并收集日志信息,通过一些其他程序提供,这些程序的规格与要点无关 关键是,我需要知道每个设备运行的sdk版本,以安装正确的apk,我希望我可以通过adb实现这一点,但我似乎找不到访问它的方法,除非构建一个

我计划构建一个自动化系统,用于将Android构建部署到各种设备上,以使多平台开发更加舒适。有没有办法通过android shell或adb获得连接设备的sdk版本

将有一台连接了多个测试设备的计算机,我计划编写一个脚本,从构建服务器获取每个设备的正确构建,在各自的设备上安装不同的APK,启动它们并收集日志信息,通过一些其他程序提供,这些程序的规格与要点无关


关键是,我需要知道每个设备运行的sdk版本,以安装正确的apk,我希望我可以通过adb实现这一点,但我似乎找不到访问它的方法,除非构建一个与所有版本兼容的微型应用程序,其唯一目的是输出android.os.Build.VERSION.SDK或我的脚本可以读取的类似内容

您可以使用以下命令:

adb shell grep ro.build.version.sdk= system/build.prop
它将输出如下内容:

ro.build.version.sdk=10

我认为您可以通过访问带有adb外壳的设备来更改目录,以便在系统中定位您,并执行一系列build.prop操作。在这里,你会发现,例如,ro.build.description=google_sdk-eng 2.2,ro.build.version.release=2.2等,我还发现了一种获得Android确切版本的方法,例如4.2.2,基于以下web文章,你需要使用类似unix的操作系统-Linux和Mac OSX都很好,windows用户可以使用cygwin或同等软件

在命令行中:

echo version=$(adb shell getprop | awk-F):“'/build.version.release/{print$2}')| tr-d'[]”

以下是我的Nexus 4的结果:

version=4.2.2

adb shell getprop ro.build.version.sdk

注意@Tim:即使在所有主机操作系统上都不支持grep的手机上也可以使用。(即,在
toolbox
不支持
grep
的旧手机上,您需要在手机上安装
busybox

感谢Tim和Tor Morten;很抱歉回复太晚,这几个星期都很忙。ro.build.version.sdk很好地满足了我的需要:)Tim得到了接受,因为他的措辞更适合从脚本运行以获取值。一些旧的android手机没有“grep”,但是你可以这样做:
adb shell cat system/build.prop | grep ro.build.version.sdk=
@AlexFlint:他们没有grep,但我可以使用
。|grep…
?@ThomasWeller区别在于是在设备上还是在您的计算机上运行grep命令。如果您碰巧在运行模拟器和物理设备,您可以使用
adb设备
,然后也使用上面命令中的序列号。i、 e.
adb-s[yourSerial]shell getprop ro.build.version.sdk
@Kelton.Temby是的,我经常使用
-s serial
,因为我经常连接多部手机。另外,
ANDROID\u SERIAL
可用于指定手机序列号。