Android 區(qū)別真機和模擬器的幾種方法
現(xiàn)在的模擬器的功能太強大,從藍牙,傳感器等配件到IMEI,Mac,以及手機硬件信息什么都可以模擬
為了防止用戶利用模擬器模仿真機進行刷單,刷流量等惡意操作。
需要獲取設備返回的一些信息來鑒別設備的真?zhèn)巍?/strong>
下面是整理的模擬器和真機的區(qū)別
雖然大部分都可以模仿,偽造,但是如果綜合所有維度來監(jiān)控,應該不存在太大問題。
一,native方式。
通過c代碼讀取設備中的配置和硬件相關信息。
1,diskstats
獲取閃存的分區(qū)狀態(tài)信息。
int fd = open(“/proc/diskstats”, O_RDONLY); bytes = read(fd, buf, bytes);
區(qū)別:真機下都有mmcblk0分區(qū),但是模擬器沒有分區(qū)信息。
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])
區(qū)別:真機可以獲取wlan0的ip和mac地址,模擬器只能獲取eth0的ip和mac地址;
3,有用的prop信息。
__system_property_get(key, buf);
區(qū)別: 模擬器沒有ro.boot.serialno和ro.serialno屬性,真機中為機器序列號。
模擬器 ro.hardware屬性為goldfish,真機為各自的型號。
4,cpu信息。
int fd = open(“/proc/cpuinfo”, O_RDONLY); bytes = read(fd, buf, bytes);
區(qū)別:模擬器中cpuinfo的硬件為Goldfish。
5,drivers
int fd = open(“/proc/tty/drivers”, O_RDONLY);
區(qū)別:模擬器中包含goldfish的驅(qū)動
6,模擬器特有文件。
int fd = open(“/dev/socket/qemud”, O_RDONLY); int fd = open(“/dev/qemu_pipe”, O_RDONLY);
區(qū)別:模擬器專有的文件,真機中沒有。
二,傳統(tǒng)的方式:
通過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 區(qū)別真機和模擬器 方法的整理和對比,有需要的朋友可以參考一下.
相關文章
Android自定義View之酷炫數(shù)字圓環(huán)
這篇文章主要為大家詳細介紹了Android自定義View之酷炫數(shù)字圓環(huán),實現(xiàn)效果很酷,,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-01-01Android貝塞爾曲線初步學習第二課 仿QQ未讀消息氣泡拖拽黏連效果
這篇文章主要為大家詳細介紹了Android貝塞爾曲線初步學習的第二課,仿QQ未讀消息氣泡拖拽黏連效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-03-03Android Studio4.0導入OpenCv4.3.0的方法步驟
這篇文章主要介紹了Android Studio4.0導入OpenCv4.3.0的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-10-10Templates實戰(zhàn)之更優(yōu)雅實現(xiàn)自定義View構造方法詳解
本篇文章介紹如何利用Android Studio提供的Live Templates更優(yōu)雅實現(xiàn)自定義View的構造方法,說句人話就是:簡化自定義View構造參數(shù)模板代碼的編寫,實現(xiàn)自動生成,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-09-09