更新记录
1.0.0(2026-08-11)
- 首发 x-idcode
- 隐私同意门禁 + basic/full 双模式
- OAID/AndroidID/指纹/环境检测
- 上游 Android_CN_OAID 4.2.17
平台兼容性
uni-app
| Vue2 |
Vue3 |
Chrome |
Safari |
app-vue |
app-nvue |
Android |
iOS |
鸿蒙 |
| × |
× |
× |
× |
× |
× |
× |
× |
× |
| 微信小程序 |
支付宝小程序 |
抖音小程序 |
百度小程序 |
快手小程序 |
京东小程序 |
鸿蒙元服务 |
QQ小程序 |
飞书小程序 |
小红书小程序 |
快应用-华为 |
快应用-联盟 |
| × |
× |
× |
× |
× |
× |
× |
× |
× |
× |
× |
× |
uni-app x(4.27)
| Chrome |
Safari |
Android |
iOS |
鸿蒙 |
微信小程序 |
| × |
× |
5.0 |
12 |
× |
× |
x-idcode
基于开源库 Android_CN_OAID(~2.8k★,Mulan PSL v2)封装的 uni-app x UTS 设备标识插件。
本插件明确声明:核心 OAID/AAID 能力来自开源免费的 Android_CN_OAID,并非 MSA 官方闭源 SDK。请在业务侧完成隐私政策同意后再调用。
平台
| 平台 |
能力 |
| Android |
OAID/AAID、AndroidID、PseudoID、GUID、IMEI(受限)、指纹、环境检测 |
| iOS / Web |
Stub(返回 9030003),避免误用广告标识 |
差异化
- 隐私门禁:未
setPrivacyAgreed({ agreed: true }) 前,任何 ID API 直接失败 9030001
- 双模式:
basic(OAID + AndroidID + fingerprint)/ full(再含 PseudoID、GUID、IMEI)
- 设备指纹:
SHA-256(oaid|androidId|pseudoId) 截断 32 位十六进制
- 环境检测:模拟器 / Root / 开发者模式
- 内存缓存:
getIds / getOAID 默认走缓存,forceRefresh: true 强制刷新
依赖(Android)
com.github.gzu-liyujiang:Android_CN_OAID:4.2.17
- 华为 / 荣耀官方 ads-identifier(提升对应机型成功率)
- Maven:JitPack + Huawei + Honor
API
import {
setPrivacyAgreed,
isPrivacyAgreed,
supportedOAID,
getIds,
getOAID,
getAndroidID,
getPseudoID,
getGUID,
getIMEI,
getDeviceEnv,
clearCache
} from '@/uni_modules/x-idcode'
// 1. 用户同意隐私政策后
setPrivacyAgreed({ agreed: true })
// 2. 批量获取(推荐)
getIds({
mode: 'basic', // 或 'full'
forceRefresh: false,
success: (res) => {
console.log(res.oaid, res.androidId, res.fingerprint)
},
fail: (e) => {
console.error(e.errCode, e.errMsg)
}
})
// 3. 仅 OAID
getOAID({
success: (res) => console.log(res.oaid)
})
// 4. 环境
getDeviceEnv({
success: (res) => console.log(res.isEmulator, res.isRooted, res.isDeveloperMode)
})
错误码
| 码 |
含义 |
| 9030001 |
隐私未同意 |
| 9030002 |
获取失败 |
| 9030003 |
平台不支持 |
| 9030004 |
参数非法 |
合规与权限
- 必须在用户同意隐私政策后再调用
setPrivacyAgreed 与任何 ID API。
full 模式下 IMEI 仅 Android 10 以下可能有值,且依赖 READ_PHONE_STATE(运行时需自行申请)。
- 本插件已通过 Manifest 移除上游库自带的
WRITE_SETTINGS / WRITE_EXTERNAL_STORAGE。
- 插件本身不上传任何标识,是否上报由业务决定。
自定义基座
首次或依赖变更后,需在 HBuilderX 制作自定义调试基座,勾选 x-idcode。
致谢与许可