Android 区别真机和模拟器的几种方法

现在的模拟器的功能太强大,从蓝牙,传感器等配件到IMEI,Mac,以及手机硬件信息什么都可以模拟

为了防止用户利用模拟器模仿真机进行刷单,刷流量等恶意操作。

需要获取设备返回的一些信息来鉴别设备的真伪。

下面是整理的模拟器和真机的区别

虽然大部分都可以模仿,伪造,但是如果综合所有维度来监控,应该不存在太大问题。

一,native方式。

通过c代码读取设备中的配置和硬件相关信息。

1,diskstats

获取闪存的分区状态信息。

int fd = open(“/proc/diskstats”, O_RDONLY); bytes = read(fd, buf, bytes);

区别:真机下都有mmcblk0分区,但是模拟器没有分区信息。

2,mac地址。

通过socket和ioctl读取mac地址。

sockfd = socket(AF_INET, SOCK_DGRAM, 0); ioctl(sockfd, SIOCGIFCONF, (char*)&ifc); ioctl(sockfd, SIOCGIFADDR, &ifr[i]) ioctl(sockfd, SIOCGIFHWADDR, (char*)&ifr[i])

区别:真机可以获取wlan0的ip和mac地址,模拟器只能获取eth0的ip和mac地址;

3,有用的prop信息。

__system_property_get(key, buf);

区别: 模拟器没有ro.boot.serialno和ro.serialno属性,真机中为机器序列号。

模拟器 ro.hardware属性为goldfish,真机为各自的型号。

4,cpu信息。

int fd = open(“/proc/cpuinfo”, O_RDONLY); bytes = read(fd, buf, bytes);

区别:模拟器中cpuinfo的硬件为Goldfish。

5,drivers

int fd = open(“/proc/tty/drivers”, O_RDONLY);

区别:模拟器中包含goldfish的驱动

6,模拟器特有文件。

int fd = open(“/dev/socket/qemud”, O_RDONLY); int fd = open(“/dev/qemu_pipe”, O_RDONLY);

区别:模拟器专有的文件,真机中没有。

二,传统的方式:

通过Java层的代码获取,可以有以下方式:

1,IMEI和IMSI

IMEI  移动设备国际身份码。

IMSI  IMSI国际移动用户识别码,储存在SIM卡中

final TelephonyManager tm = (TelephonyManager) getBaseContext().getSystemService(Context.TELEPHONY_SERVICE); String imei = tm.getDeviceId(); String imsi = tm.getSubscriberId();

设备1:354273055927169 / null(无卡)

设备2:862966024243759 / 460011040618938

模拟器:000000000000000 / 310260000000000

2,Serial序列号

String serial = android.os.Build.SERIAL;

设备1:4df78680771b117b

设备2:OBAI5HDQZPDIRCQG

模拟器:unknown

3,android_id

String android_id = Secure.getString(getContentResolver(), Secure.ANDROID_ID);

设备和模拟器都有,16位。

4,Mac地址

WifiManager wifimanage=(WifiManager)getSystemService(Context.WIFI_SERVICE); WifiInfo wifiinfo= wifimanage.getConnectionInfo();

设备1:88:32:9b:1e:49:20

设备2:f8:a4:5f:fd:56:17

模拟器:null

以上就是对Android 区别真机和模拟器 方法的整理和对比,有需要的朋友可以参考一下.

时间: 2024-08-15 08:32:42

Android 区别真机和模拟器的几种方法的相关文章

Android 区别真机和模拟器的几种方法_Android

现在的模拟器的功能太强大,从蓝牙,传感器等配件到IMEI,Mac,以及手机硬件信息什么都可以模拟 为了防止用户利用模拟器模仿真机进行刷单,刷流量等恶意操作. 需要获取设备返回的一些信息来鉴别设备的真伪. 下面是整理的模拟器和真机的区别 虽然大部分都可以模仿,伪造,但是如果综合所有维度来监控,应该不存在太大问题. 一,native方式. 通过c代码读取设备中的配置和硬件相关信息. 1,diskstats 获取闪存的分区状态信息. int fd = open("/proc/diskstats&quo

Android 【真机】与【模拟器】触摸屏事件的模拟差异分析

Android 真机和模拟器的差异问题,是永恒的话题,问不完的为什么,解不完的迷.模拟器的存在,有它的作用,但不要什么都相信模拟器.除非你是Android纯上层应用开发人员或者爱好者,否则我建议你扔掉模拟器.它理想化的引导给我们添了不少麻烦.当然,这也是件好事.最起码,让我有兴趣去寻求答案,让我收获了更多.  问题的缘由是有个自动化测试的需求,我需要写脚本模拟点击触摸屏的一系列操作,以代替手工测试(话说~遇上连续启动1000次camera并且拍照后退出这种变态测试,你们都是怎么做的?).以此来证

android在真机调试时手机端与pc端通信失败

问题描述 android在真机调试时手机端与pc端通信失败 我写的一个通信程序,在android模拟器与pc端可以正常通信,但是用真机调试时就连接不上,查看错误日志,显示不能连接/192.168.....? 解决方案 用的什么协议?这么看来可能是你的地址写错了 解决方案二: 你的意思是不能部署项目到手机还是网络通信的时候连接不上?如果是前者的话应该是驱动的问题或者重启下ADB,如果是后者的话你就看看你的服务器端的地址是不是可以访问,如果连接的是同一个局域网内IP地址对的话是可以的通信的,那就是代

真机和模拟器图标显示相反的问题

问题描述 真机和模拟器图标显示相反的问题 大神 来看一下这个问题,模拟器的可视化窗口上显示正常,跑到真机上图标就反了,怎么回事啊??? 解决方案 关于任务栏上android模拟器的小机器人图标不显示的问题的解决 解决方案二: 你咋不把源码贴出来呢? 解决方案三: 你咋不把源码贴出来呢?

手机-Android Studioo 真机调试不输出Log

问题描述 Android Studioo 真机调试不输出Log 用手机调试,系统log正常输出,我定义的log就输出不来,前几天还可以,求解 解决方案 Android ?手机真机调试 没有log输出,logcat下提示: Unable to open log device '/dev/log/main': No such file or directory 这是因为我们的手机没有开起log记录,下面以华为U8860为例开启手机的log功能: 1.在拨号界面输入:*解决方案二:2846579解决方

ios 打包的时候出现linker error,但是项目可以在真机以及模拟器上运行。

问题描述 ios 打包的时候出现linker error,但是项目可以在真机以及模拟器上运行. 但是我发现,只要把build setting里面的 vaild architectures 中的arm64给删除了,就可以打包了,不过这样的话,模拟器运行就会报红,请问是什么原因啊 解决方案 好像碰到过这个问题,应该是你导入的第三方文件分模拟器和真机标蓝的是真机,下边是模拟器 解决方案二: 不支持模拟器也可以的,不会影响你.

android开发真机测试问题

问题描述 android开发真机测试问题 真机测试走到这一步Installing ButtonText.apk... 就一直不动,但手机里已经安装好了该apk. 不过真机不会自动运行该APK,过一会就提示Failed to install ButtonText.apk on device 'HT14RT227816!2013-05-08 16:50:41 - ButtonText [2013-05-08 16:50:41 - ButtonText] Launch canceled! 解决方案 好

android studio真机运行出错

问题描述 android studio真机运行出错 解决方案 jni的库有没有部署,路径是否正确

android studio真机调试 程序安装位置?

问题描述 android studio真机调试 程序安装位置? android studio真机调试 ,找不到程序的安装位置. Log.i("sbsb",getApplicationContext().getFilesDir().getAbsolutePath()); 结果为:/data/data/com.sbsb.photoupload/files 但是手机中并不存在这个路径..这是怎么回事? 解决方案 有的文件在电脑上就是看不到,你服不服 解决方案二: Android Studio