
今天跟大家分享一下,如何通过Python实现一个轻量级的库来获取电脑上连接的AndroID设备信息,为什么说轻量呢因为整个库也就4KB,相比其他诸如Appetizer这样动辄就8MB多的库要轻很多,而且也基本满足项目中的需求。
这个库只有一个文件,通过封装AndroID的ADB命令实现,返回的是一个包含所有设备信息的标准Json格式的列表方便解析,下面简单介绍一下:
检查环境变量
# 判断是否设置环境变量ANDROID_HOMEif "ANDROID_HOME" in os.environ: command = os.path.join( os.environ["ANDROID_HOME"],"platform-tools","adb")else: raise EnvironmentError( "Adb not found in $ANDROID_HOME path: %s." % os.environ["ANDROID_HOME"])
命令执行
class Shell: def __init__(self): pass @staticmethod def invoke(cmd): output,errors = subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE).communicate() o = output.decode("utf-8") return oADB命令封装
class ADB(object): """ 参数: device_ID """ def __init__(self,device_ID=""): if device_ID == "": self.device_ID = "" else: self.device_ID = "-s %s" % device_ID def adb(self,args): cmd = "%s %s %s" % (command,self.device_ID,str(args)) return Shell.invoke(cmd) def shell(self,args): cmd = "%s %s shell %s" % (command,str(args),) return Shell.invoke(cmd) def get_device_state(self): """ 获取设备状态: offline | bootloader | device """ return self.adb("get-state").stdout.read().strip() def get_device_ID(self): """ 获取设备ID号,return serialNo """ return self.adb("get-serialno").stdout.read().strip() def get_androID_version(self): """ 获取设备中的AndroID版本号,如4.2.2 """ return self.shell( "getprop ro.build.version.release").strip() def get_sdk_version(self): """ 获取设备SDK版本号,如:24 """ return self.shell("getprop ro.build.version.sdk").strip() def get_product_brand(self): """ 获取设备品牌,如:HUAWEI """ return self.shell("getprop ro.product.brand").strip() def get_product_model(self): """ 获取设备型号,如:MHA-AL00 """ return self.shell("getprop ro.product.model").strip() def get_product_rom(self): """ 获取设备ROM名,如:MHA-AL00C00B213 """ return self.shell("getprop ro.build.display.ID").strip()设备信息获取
class DeviceInfo: def __init__(self,uID,os_type,os_version,sdk_version,brand,model,rom_version): self.uID = uID self.os_type = os_type self.os_version = os_version self.sdk_version = sdk_version self.brand = brand self.model = model self.rom_version = rom_versionclass Device: def __init__(self): pass @staticmethod def get_androID_devices(): androID_devices_List = [] androID_devices_infos = [] for device in Shell.invoke('adb devices').splitlines(): if 'device' in device and 'devices' not in device: device = device.split('\t')[0] androID_devices_List.append(device) for device_uID in androID_devices_List: device_info = DeviceInfo(device_uID,"AndroID",ADB(device_uID).get_androID_version(),ADB(device_uID).get_sdk_version(),ADB(device_uID).get_product_brand(),ADB(device_uID).get_product_model(),ADB(device_uID).get_product_rom()) androID_devices_infos.append(device_info.__dict__) return androID_devices_infos设备信息数据结构
[ { "uID": "BY2WKN1519078327","rom_version": "Che2-ul00 V100R001CHNC00B287","brand": "Honor","os_version": "4.4.2","sdk_version": "19","os_type": "AndroID","model": "Che2-ul00" },{ "uID": "GWY0217414001213","rom_version": "MHA-AL00C00B213","brand": "HUAWEI","os_version": "7.0","sdk_version": "24","model": "MHA-AL00" }]总结
以上所述是小编给大家介绍的通过Python 获取AndroID设备信息的轻量级框架,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对编程小技巧网站的支持!
总结以上是内存溢出为你收集整理的通过Python 获取Android设备信息的轻量级框架全部内容,希望文章能够帮你解决通过Python 获取Android设备信息的轻量级框架所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)