更新记录

1.0.2(2026-06-03)

  • 增强桌面虚拟化环境识别:纯 x86/x86_64 ABI 统一显示为 桌面虚拟化环境,避免仅命中 ABI 时误显示为官方 Android Emulator。
  • 补充 Android-x86、Bliss OS、PrimeOS、Phoenix OS、ChromeOS/ARC、WSA 细分规则,覆盖 Build、getprop 和 Android-x86 常见文件特征。
  • 维持 Android-only 发布口径;不新增敏感权限,不申请 QUERY_ALL_PACKAGES,不读取 IMEI、手机号、SIM 或设备序列号。

1.0.1(2026-06-03)

  • 增强雷电新版识别:补充 ldmnq / dnplayer / ldconsole / ldinit、新版包名、雷电文件路径、x86/x86_64 ABI 和伪装 Build 组合特征。
  • 优化逍遥/MEmu 识别:补充 com.microvirt.launcher2,厂商口径显示为 逍遥/MEmu
  • 增强夜神可改设备识别:补充 900250224 + x86/x86_64 ABI 组合规则,夜神修改为 HUAWEI LIO-AN00 等设备后仍可优先推断为 夜神
  • 增强夜神 Samsung 伪装样本识别:补充 Samsung SM-G977N / beyond1q / beyond1qlteue / universal8895 + x86/x86_64 ABI 组合规则,避免只显示为通用 Android Emulator。
  • 优化 Android 系统属性证据:同一规则去重展示,getprop 属性值脱敏,避免页面日志展示模拟器伪造的 IMEI/IMSI/手机号/SIM 序列号样式值。
  • Android 未命中任何正向信号时返回 diagnostic/no-positive-signal-build-snapshot,便于根据新模拟器样本补规则。
  • 插件市场平台配置仅勾选 Android 真实支持平台;iOS、Harmony、Web、小程序保持明确降级,不伪造检测成功。
  • Android Manifest 仍仅声明 <queries>,不申请 QUERY_ALL_PACKAGES、电话、短信或设备标识相关权限。

1.0.0(2026-06-03)

  • 首发 getEmulatorInfoSync(options?),返回模拟器检测详细报告。
  • Android 端支持 Build 字段、系统属性、包名可见性、文件特征、传感器和硬件弱信号综合评分。
  • 调整主流模拟器强特征评分:雷电、MuMu、夜神、BlueStacks、Genymotion、Android Emulator 等核心强特征可直接达到默认判定阈值 55
  • iOS、Harmony、Web、微信小程序、支付宝小程序提供明确降级结果,不伪造模拟器检测成功。
  • Android Manifest 仅声明 <queries>,不申请 QUERY_ALL_PACKAGES、电话、短信或设备标识相关权限。
查看更多

平台兼容性

uni-app(4.84)

Vue2 Vue3 Chrome Safari app-vue app-nvue Android iOS 鸿蒙
× × × ×
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 小红书小程序 快应用-华为 快应用-联盟
× × × × × × × × × × × ×

uni-app x(4.84)

Chrome Safari Android iOS 鸿蒙 微信小程序
× × × × ×

lizhao-emu-detect

lizhao-emu-detect 是一个模拟器环境检测 UTS API 插件,面向 Android App 风控场景,通过多信号评分判断当前 App 是否运行在模拟器中。插件重点覆盖雷电、MuMu、夜神、BlueStacks、逍遥/MEmu、Genymotion、Android Studio Emulator 等常见环境。

当前版本:1.0.2

1.0.2 修复摘要

  • 增强桌面虚拟化环境识别,将纯 x86/x86_64 归类为 桌面虚拟化环境,并补充 Android-x86、Bliss OS、PrimeOS、Phoenix OS、ChromeOS/ARC、WSA 细分规则。
  • 优化 x86/x86_64 ABI 厂商口径,避免仅命中 ABI 时误显示为官方 Android Emulator。
  • 补充 PC Android、ChromeOS/ARC、WSA 的 Build、getprop 和文件特征守卫,提升非传统商业模拟器环境识别质量。

1.0.1 修复摘要

  • 增强雷电新版识别,覆盖 ldmnq / dnplayer / ldconsole / ldinit、新版包名、x86/x86_64 ABI 和伪装 Build 组合特征。
  • 优化逍遥/MEmu 识别,补充 com.microvirt.launcher2,厂商口径显示为 逍遥/MEmu
  • 增强夜神可改设备识别,覆盖 900250224 构建号搭配 x86/x86_64 ABI 的组合特征,设备改成 HUAWEI LIO-AN00 等机型后仍可优先推断为夜神。
  • 增强夜神 Samsung 伪装样本识别,覆盖 Samsung SM-G977N / beyond1q / beyond1qlteue / universal8895 搭配 x86/x86_64 ABI 的组合特征。
  • Android getprop 证据去重并脱敏,保留命中属性名,不展示属性值。
  • 平台配置只勾选 Android 真实支持平台,iOS、Harmony、Web、小程序保持明确降级。

支持平台

平台 是否支持 说明
Android App 支持 真实检测,返回评分、风险等级、厂商推断和命中证据
iOS App 不支持 返回 supported=false,插件市场配置不勾选
Harmony App 不支持 返回 supported=false,插件市场配置不勾选
Web/H5 不支持 返回 supported=false,插件市场配置不勾选
微信小程序 不支持 返回 supported=false,插件市场配置不勾选
支付宝小程序 不支持 返回 supported=false,插件市场配置不勾选

安装说明

将插件放入项目 uni_modules/lizhao-emu-detect 后,从插件根目录导入:

import { getEmulatorInfoSync } from '@/uni_modules/lizhao-emu-detect'

不要直接导入 utssdk/index.uts 或平台目录文件。

API 列表

  • getEmulatorInfoSync(options?)

getEmulatorInfoSync(options?)

说明

获取当前 App 运行环境的模拟器检测报告。

支持平台

Android 真实检测;iOS / Harmony / Web / 小程序返回明确降级结果,插件市场配置不勾选。

参数

参数 类型 必填 说明 默认值 可选参数
options EmulatorDetectOptions 检测参数 { threshold: 55, includeSignals: true, includeDeviceInfo: true, includeWeakSignals: true } threshold / includeSignals / includeDeviceInfo / includeWeakSignals / extraBuildKeywords / extraPropertyKeywords / extraPackageNames / extraFilePaths
options.threshold number 判定为模拟器的评分阈值,可由业务手动设置;默认 55 55 1-100
options.includeSignals boolean 是否返回命中证据 true true / false
options.includeDeviceInfo boolean 是否返回公开设备信息 true true / false
options.includeWeakSignals boolean 是否启用弱信号 true true / false
options.extraBuildKeywords Array 追加 Build 字段关键字
options.extraPropertyKeywords Array 追加系统属性关键字
options.extraPackageNames Array 追加包名检测规则
options.extraFilePaths Array 追加文件路径检测规则

返回值

字段 类型 说明
supported boolean 当前平台是否支持真实检测
platform string 平台标识
isEmulator boolean 是否判定为模拟器
score number 总评分,最高 100
riskLevel string 风险等级:none / low / medium / high
vendor string 推断出的模拟器厂商或类型
signals Array 命中证据列表
deviceInfo EmulatorDeviceInfo | null 公开设备信息快照
reason string 中文结果说明或降级原因

风险等级

等级 分数 说明
high >= 75 高风险模拟器环境
medium 55-74 达到默认模拟器判定阈值
low 25-54 有可疑信号,但默认不直接拦截
none < 25 未发现明显模拟器信号

说明:vendor 是厂商推断结果,isEmulator 是最终判定结果。Android 默认阈值为 55,雷电、MuMu、夜神、BlueStacks、逍遥/MEmu、Genymotion、Android Studio Emulator 等主流模拟器的核心 Build、系统属性、核心包名、ABI 或文件强特征会直接达到默认阈值;业务额外追加规则和硬件弱信号仍保持较低分,避免真机误伤。

错误码

错误码 含义 说明
9040001 unsupported 当前平台不支持真实检测
9040002 context unavailable Android Context 不可用

当前同步 API 不主动抛出错误;采集失败会进入 reasonsignals 的 info 项。

检测信号说明

Android 端会综合以下信号评分:

  • Build 字段:FINGERPRINT / MODEL / MANUFACTURER / HARDWARE / PRODUCT / BRAND / DEVICE / BOARD / TAGS / SUPPORTED_ABIS,其中 x86 / x86_64 ABI 会作为强模拟器或桌面虚拟化信号。
  • 系统属性:通过 /system/bin/getprop 做 best-effort 读取,检测 ro.kernel.qemugoldfishranchuvbox86noxmumuldplayerldmnqdnplayerldconsoleldinitmicrovirtbluestacksgenymotionandroid_x86android-x86blissprimeosphoenixoschromeoscheetsarcvmwindows subsystem 等关键字;属性证据会脱敏,仅保留属性名和命中规则,不展示属性值。
  • 包名/启动器:检测雷电、MuMu、夜神、BlueStacks、Genymotion、逍遥/MEmu 等已知包名;雷电覆盖 com.ldmnq.launcher / com.ldmnq.launcher3 / com.ldmnq.appstore / com.ldmnq.installer / com.ldmnq.store / com.android.ld.appstore,逍遥/MEmu 覆盖 com.microvirt.launcher / com.microvirt.launcher2
  • 文件特征:检测 QEMU、Goldfish、BlueStacks、夜神、雷电 ldinit / ldmountsf / ldnetwork / ldconsole / libldutils.so 等常见文件路径。
  • 弱信号:传感器数量、缺失相机/GPS/蓝牙/电话 feature。弱信号分数低,不会单独决定模拟器结论。
  • 诊断信号:如果所有正向规则都未命中,会返回 diagnostic/no-positive-signal-build-snapshot,包含公开 Build/ABI 快照,便于根据新模拟器样本继续补规则。

iOS、Harmony、Web、小程序端当前不作为插件市场真实支持平台,调用时返回 supported=false 与明确降级原因,不伪造检测成功。

权限说明

  • 不读取 IMEI。
  • 不读取手机号。
  • 不读取 SIM 信息。
  • 不读取设备序列号。
  • getprop 证据只返回脱敏后的属性名,不返回属性值。
  • 不申请电话权限。
  • 不申请短信权限。
  • 不申请 QUERY_ALL_PACKAGES

Android 11+ 的包名检测依赖 AndroidManifest.xml 中的 <queries> 精准声明。若新增或修改包名规则后需要让包名检测生效,需要重新打并安装 Android 自定义基座。

雷电新版可能会把 brand / manufacturer / model / fingerprint 伪装成真机字段。若日志中 supportedAbis 包含 x86_64x86,插件会按桌面模拟器环境强信号计分;若同时命中 fingerprint 中的雷电样本构建片段,会优先推断厂商为雷电。

夜神部分版本允许用户修改设备品牌和型号,因此不能只依赖 HUAWEI LIO-AN00Samsung SM-G977N 这类可改字段。若 fingerprint 中出现夜神样本构建号 900250224,并且同时暴露 x86_64x86 ABI,插件会追加夜神可改设备组合强信号,厂商优先显示为夜神。另保留 Samsung SM-G977N / beyond1q / beyond1qlteue / universal8895 的样本组合规则。

仅命中 x86_64x86 ABI 时,插件会优先归类为 桌面虚拟化环境,避免把 Android-x86、ChromeOS/ARC、WSA 等环境误写成官方 Android Emulator。若 Build 或系统属性进一步命中 android_x86 / android-x86 / bliss / primeos / phoenixos / chromeos / cheets / arcvm / windows subsystem,会细分为 Android-x86、Bliss OS、PrimeOS、Phoenix OS、ChromeOS/ARC 或 WSA。

自定义基座说明

本插件没有三方 SDK 依赖。以下情况需要重新打 Android 自定义基座:

  • 首次接入插件并希望 Android 11+ 包名检测生效。
  • 修改 utssdk/app-android/AndroidManifest.xml<queries>
  • 新增商业模拟器包名检测规则并写入 Manifest。

不运行自定义基座时,Build、getprop、文件和传感器信号仍可用,但包名可见性可能受限。

示例代码位置

  • 项目演示页:pages/emulatorDetector/emulatorDetector.vue
  • 插件内部示例:uni_modules/lizhao-emu-detect/example/index.vue

uni-app 调用示例

import { getEmulatorInfoSync } from '@/uni_modules/lizhao-emu-detect'

const report = getEmulatorInfoSync({
  threshold: 55,
  includeSignals: true,
  includeDeviceInfo: true
})

if (report.supported && report.isEmulator) {
  console.log('命中模拟器环境', report.vendor, report.score, report.signals)
}

uni-app x 调用示例

import { getEmulatorInfoSync } from '@/uni_modules/lizhao-emu-detect'

const report = getEmulatorInfoSync({
  threshold: 55,
  includeSignals: true,
  includeDeviceInfo: true,
  includeWeakSignals: true
})

console.log('模拟器检测报告:' + JSON.stringify(report))

注意事项

  • 模拟器检测本质是猫鼠游戏,雷电、MuMu、夜神、BlueStacks 等主流模拟器会随版本伪装部分字段,因此不要只依赖单个 Build 字段。
  • 建议业务侧同时结合账号、设备行为、网络、登录历史、服务端策略做综合风控。
  • 默认阈值为 55,可通过 threshold 手动调整;建议先观察真机和目标模拟器样本,再决定是否提高或降低阈值。

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

Android 仅采集 Build 字段、公开系统属性、包名可见性、文件存在性和硬件能力特征;iOS/Harmony/Web/小程序不做真实检测,仅返回明确降级结果;不读取 IMEI、手机号、SIM、设备序列号

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

暂无用户评论。