Android手机助手识别机型浅析

最近在做PAD项目,QA提交了一个bug,用iTools管理PAD时,iTools显示的设备与目标机型的设备型号不一致,在其他豌豆荚,百度等手机助手并没有遇到这个问题。为了解决该问题,首先查询机器system目录下的prop.build中关于设备的说明是否有影响。主要包含:

ro.product.model=型号_modle

ro.product.brand=品牌_brand

ro.product.name=手机名称_name

 ……

ro.product.cpu.abi=armeabi-v7a

ro.product.cpu.abi2=armeabi

ro.product.manufacturer=制造商_manufacturer

但是发现识别的设备名称为其他品牌,可以确定该品牌不是通过prop.build文件获取。另外在测试过程中发现,如果断网的情况下,设备名称会等同于model名称,因此可以知道iTools会根据某个ID,在自己的网上数据库去查找对应的设备型号。

通过用usblayzer查看usb的VID,PID,并对应http://www.linux-usb.org/usb.ids中的VID,发现此VID为某厂商的VID,因此估计iTools是根据USB的VID,PID进行获取对应的设备名称。所以我们将原来的VID PID改成台电PAD的VID与PID,因为台电在断网与联网情况下识别都是与model名称一致。通过查询可以知道VID=18d1是google的,pid为0007.所以修改android4.4/device/softwinner/fiber-a31stm的init.sun6i.usb.rc文件中:

on property:sys.usb.config=mtp

   write /sys/class/android_usb/android0/enable   0

   write /sys/class/android_usb/android0/idVendor       18d1

   write /sys/class/android_usb/android0/idProduct      0007

   write /sys/class/android_usb/android0/functions       ${sys.usb.config}

   write /sys/class/android_usb/android0/enable   1

   setprop sys.usb.state ${sys.usb.config}

.......
该文件中所有的VID都要修改成一样的18d1,PID可以错开,但是不能与google的注册设备冲突。如下:

VID->18d1  Google Inc.

PID->      0d02  Celkon A88

       2d00  Android-powered device in accessory mode

       2d01  Android-powered device in accessory mode withADB support

       4e11  Nexus One

       4e12  Nexus One (debug)

       4e13  Nexus One (tether)

       4e20  Nexus S (fastboot)

       4e21  Nexus S

       4e22  Nexus S (debug)

       4e24  Nexus S (tether)

       4e40  Nexus 7 (fastboot)

       4e41  Nexus 7 (MTP)

       4e42  Nexus 7 (debug)

       4e43  Nexus 7 (PTP)

       4ee1  Nexus 4 / 10

       4ee2  Nexus 4 (debug)

       4ee3  Nexus 4 (tether)

       4ee4  Nexus 4 (debug + tether)

       7102  Toshiba Thrive tablet

       b004  Pandigital / B&N Novel 9" tablet

       d109  LG G2x MTP

       d10a  LG G2x MTP (debug)


经过修改,设备名称与model名称一致。

总结:iTools连接时,会先用USBVID PID到自己的网络数据库匹配设备名称,如果有网络并且数据库有数据,则采用网络端数据,如果没有网络或者有网络但是数据库没有对应VID PID,则是有model一致型号。

 



你可能感兴趣的:(Android底层开发与调试)