android真机和模拟器(emulator)的判断

最近收到领导需求要判断真机和模拟器。先前项目里是有的。可能当时能用,但现在都不能用了。然后,baidu上能够找到的其实都不能用了。包括说使用cache来区分cpu架构是哈佛结构还是冯诺伊曼结构来判断的——这个其实是最不靠谱的,因为硬件结构是会优化的,并且也不会是一成不变的。各位可以自行去查看一下arm架构cpu内核所采用的结构,包括pc的cpu所采用的结构就会明白我为什么这么说了。但还是要肯定一下最初提出这个思路并给出代码的同学,是真的很厉害,可惜思路偏了。但copy机器码到内存中再去执行的思路可以学习一下。

判断真机还是模拟器,通过cpu信息是个好的思路,因为至少目前来讲,intel和amd公司基本上是以pc的cpu为主,绝大部分手机的cpu使用的是arm架构的cpu。那个读取 /proc/cpuinfo的就算了,因为这个是个虚拟文件,下载linux的内核源码看一下就知道,修改它是很容易的。android系统就是基于linux的。x86架构的cpu提供了一个cpuid的汇编指令,但这个不适用于arm架构的。arm架构的cpu厂商信息是通过cp15协处理器来存放的,但这个我看不懂linux里面操作它获取信息的源码,放弃。

linux有提供很多有用的命令和信息。但有些命令到了android7.0之后去执行是需要root权限的,不过这个不要紧,android模拟器本身就不会不root,原因大家想一下也会明白。鉴于我们项目才使用上cpu这个判断方式,为了防止模拟器厂商马上就把这个判断给堵住了,我不太方便把判断代码直接贴出来,希望看到这文章的同学们能够理解。下面是几种方式的具体思路,任意一种都可以区分开来:

1,通过查看cpu信息,简单粗暴的认为当前环境为intel和amd公司的cpu时,就是在模拟器上跑。

2,通过查看是否有键盘

3,通过查看usb信息

4,通过查看硬盘容量

另,请在c++代码中使用 popen 命令来执行,具体命令里再配合 grep 命令。相信各位同学一定知道怎么做了。

下面是两行关键的伪代码。祝大家顺利。

FILE *fp = popen(YOUR_CMD, "r");

fgets(buf, buf_size, fp)

如果用尽全力折腾一段时间而又的确需要这个判断又实在不知道怎么写代码的话,可以邮件我: weni23@qq.com

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在uniapp中连接MuMu模拟器,你可以按照以下步骤进行操作: 1. 首先,创建一个uniapp项目并确保可以正常启动\[1\]。 2. 下载并启动MuMu模拟器。你可以点击MuMu模拟器右下角的屏幕旋转按钮将其转为竖屏\[1\]。 3. 打开HbuilderX,并选择运行->运行到手机或模拟器->Android模拟器端口设置\[1\]。 4. 在HbuilderX中再次选择运行->运行到手机或模拟器->App真机运行,并等待下载完成\[1\]。 5. 再次点击运行->运行到手机或模拟器->点击运行\[1\]。 6. 连接成功后,你可以在编辑器中编写代码,编辑器会自动进行编译\[1\]。 需要注意的是,有些教程可能会让你使用HbuilderX路径下的adb.exe文件路径来配置MuMu模拟器,但这样配置可能导致HbuilderX无法识别MuMu模拟器。建议使用MuMu模拟器自带的adb_service路径,路径为MuMu模拟器安装路径/emulator/nemu/vmonitor/bin/adb_server.exe。此外,MuMu模拟器的端口号固定为7555,你需要将这两者填入环境变量中\[2\]。 希望以上信息对你有所帮助! #### 引用[.reference_title] - *1* [01、uniapp连接MUMU模拟器](https://blog.csdn.net/bin_2659017380/article/details/124993501)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Uni-app运行到mumu模拟器](https://blog.csdn.net/qq_41790461/article/details/118785996)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值