当前位置: 首页 > news >正文

东信身份证阅读器鸿蒙6.0开发实战:从零开始,手把手教你如何使用DevEco Studio开发app读取身份证信息

标签:鸿蒙、OpenHarmony、USB DDK、ACCESS_DDK_USB、HAP 安装、DevEco Studio、身份证读卡器、外设开发


🔥 前言

最近在做鸿蒙系统下USB 东信EST-100身份证阅读器对接开发,新手容易犯的错误,都体验了一把:包名冲突、权限申请、HAP 签名安装、OpenHarmony 重启失效等。本文基于DevEco Studio 6.0.2 Release

完整记录:

✅ 工程创建 ✅ SDK 配置 ✅ AGC 权限申请 ✅ 读卡 SDK 集成 ✅ HAP 安装

一套流程直接跑通,适合做鸿蒙外设、USB 驱动、读卡器开发的同学参考。


📌 一、开发环境与 SDK 要求

1. 开发工具

  • IDE:DevEco Studio 6.0.2 Release
  • SDK 路径:E:\ADevEcoStudioSDK(可自定义)

2. 强制版本要求

  • 最低 API 11,低于 11 不支持 USB DDK
  • HarmonyOS / OpenHarmony 配置分开处理

📌 二、新建 Empty Ability 工程

  1. Create Project → 选择Empty Ability
  2. 项目配置关键点:
    • Project name:自定义(如simpledemo
    • Bundle name:必须改成自己的!(默认com.example.donseereader会冲突)
    • Compatible SDK:4.1.0 (11) 及以上
    • Device type:Phone/Tablet/2in1
  3. 等待工程同步完成。

📌 三、核心配置:HarmonyOS vs OpenHarmony

1. HarmonyOS 配置(build-profile.json5)

json

"products": [ { "name": "default", "signingConfig": "default", "compatibleSdkVersion": "4.1.0(11)", "runtimeOS": "HarmonyOS", "targetSdkVersion": "5.1.1(19)" } ]

2. OpenHarmony 配置(必须改,否则重启 APP 失效)

json

"products": [ { "name": "default", "signingConfig": "default", "targetSdkVersion": 20, "compatibleSdkVersion": 20, "compileSdkVersion": 20, "runtimeOS": "OpenHarmony", "buildOption": { "strictMode": { "caseSensitiveCheck": true, "useNormalizedOHMUrl": true } } } ]

📌 四、2 个高频报错 100% 解决

❌ 报错 1:Bundle name already in use(包名被占用)

原因:Demo 默认包名重复解决:Project Structure → Modules → 直接修改 Bundle name 为自定义即可。


❌ 报错 2:缺少 ACCESS_DDK_USB 权限

原因:USB DDK 是受限权限,必须去 AGC 平台申请解决:下文完整权限申请流程


📌 五、AGC 申请 ACCESS_DDK_USB 权限(必看)

  1. 打开华为开发者官网:https://developer.huawei.com/consumer/cn/
  2. 进入你的应用 →开放能力管理 → ACL 权限
  3. 搜索并勾选申请:
    • ohos.permission.ACCESS_DDK_USB
    • ohos.permission.ACCESS_DDK_USB_SERIAL
  4. 申请原因示例:

    公司产品基于鸿蒙系统,需要使用 USB 读卡器,申请 USB DDK 权限

  5. 提交后重新签名即可拿到临时证书调试,不用等审核完成。

📌 六、工程内声明权限配置

1. module.json5 添加权限

json

"requestPermissions": [ { "name": "ohos.permission.ACCESS_EXTENSIONAL_DEVICE_DRIVER" }, { "name": "ohos.permission.ACCESS_DDK_USB", "reason": "$string:ddk_usb_reason_text", "usedScene": { "abilities": ["DriverExtAbility"], "when": "inuse" } } ]

2. string.json 添加权限描述

json

{ "name": "ddk_usb_reason_text", "value": "申请ACCESS_DDK_USB权限" }

📌 七、集成东信EST-100身份证阅读器 DonseeDeviceLib 读卡 SDK

步骤 1:放入 HAR 包

DonseeDeviceLib.har复制到:entry/src/libs

步骤 2:oh-package.json5 添加依赖

json

"dependencies": { "donseedevicelib": "file:./src/libs/DonseeDeviceLib.har" }

步骤 3:ETS 页面导入类

typescript

运行

import DonseeDevice from 'donseedevicelib/src/main/ets/model/DonseeDevice'; import { IDCardInfor } from 'donseedevicelib/src/main/ets/model/IDCardInfor';

步骤 4:调用读卡 API

typescript

运行

// 打开USB读卡器 let ret = DonseeDevice.Donsee_Open("USB"); // 读取身份证 let idInfo: IDCardInfor = DonseeDevice.Donsee_ReadIDCard(1);

📌 八、获取 UDID + HAP 安装命令(hdc_std)

1. 先连接设备调试 USB 口

2. 常用命令(直接复制用)

cmd

:: 查看设备是否连接 hdc_std list targets :: 获取设备UDID(发给开发打签名用) hdc_std shell bm get -u :: 首次安装 hdc_std install entry-default-signed.hap :: 覆盖安装(升级) hdc_std install -r entry-default-signed.hap :: 卸载应用 hdc_std uninstall com.example.donseereader :: 查看所有包名 hdc_std shell bm dump -a

📌 九、安装失败 code:9568289 解决

错误信息:install failed due to grant request permissions failed解决方法

  1. 确认 AGC 已申请ACCESS_DDK_USB
  2. 重新配置签名
  3. Rebuild Project
  4. 再次执行 hdc 安装命令

📌 十、运行效果

成功运行后可实现:

  • USB 读卡器打开 / 连接
  • 身份证信息完整读取:姓名、性别、民族、出生日期、住址、身份证号、签发机关、有效期

📌 十一、流程总结(一张图记住)

  1. 新建工程 → 改包名
  2. 配置 build-profile.json5
  3. 声明 DDK 权限
  4. AGC 申请权限
  5. 集成读卡 SDK
  6. 编译签名 HAP
  7. hdc 获取 UDID、安装 HAP
  8. 运行读卡测试

📌 总结

本文覆盖鸿蒙 USB 外设开发从 0 到 1,解决最痛的 3 个问题:✅ 包名冲突✅ ACCESS_DDK_USB 权限申请✅ HAP 安装失败如果你在做:身份证读卡器、社保卡读卡器、USB 外设、鸿蒙 DDK 驱动开发,这篇文章可以直接当手册用。


👉 欢迎交流

有问题直接评论区留言,我会一一回复~点赞 + 收藏 + 关注,持续更新鸿蒙外设开发实战!

http://www.cnnetsun.cn/news/2505632.html

相关文章:

  • Spring-Ai-Alibaba [02] chatclient-demo
  • 3步掌握Joy-Con手柄修复:开源控制工具完全指南
  • Yalla季报图解:营收7901万美元 净利2840万美元同比降22%
  • QGraphicsView的记录
  • claude api 中转怎么接入:国内配置方法、Base URL 填写与模型选择指南
  • Unity卡牌翻转与翻书效果的3D空间建模与Shader实现
  • Unity-MCP协议:让AI成为可调度的智能开发协作者
  • ZenTimings:专业级AMD Ryzen内存时序监控与优化工具深度解析
  • Gemini 3.5 砍半定价、4倍提速强势入场,Claude Opus 4.7 还守得住编程王座吗?
  • “10车道变4车道“——一家建筑施工企业CFO的数字化突围实录
  • QMCDecode终极指南:5分钟快速掌握QQ音乐加密格式转换技巧
  • 终极C盘瘦身指南:FreeMove一键释放Windows磁盘空间的完整教程
  • Unity中List.Find的正确用法与性能避坑指南
  • Windows右键菜单终极优化指南:用ContextMenuManager让你的右键菜单秒开如飞
  • iOS 27 语音控制获 AI 升级:自然语言操控 iPhone,Siri 革新终于有眉目
  • UE5.5 + Audio2Face 2023.2 深度配置指南:USD驱动、Control Rig与实时口型同步
  • Autobuy-JD:京东自动抢购工具终极指南 - 5分钟实现智能秒杀
  • 华硕笔记本终极性能优化指南:GHelper如何一键释放你的设备潜能?
  • 大麦网API签名机制解析:从抓包到Python复现全流程
  • Unity URP下高性能尾气与扬尘粒子系统实现
  • 04.MySQL索引优化与慢查询日志和事务四大特性
  • 基于NRK3301离线语音芯片的智能加湿器开发全流程解析
  • 突破性B站视频下载方案:DownKyi一站式高效下载深度解析
  • Spring WebFlux响应式编程实战:从原理到高并发应用场景解析
  • Linux运维实战:告别死记硬背,掌握高效命令组合与场景化思维
  • Arty S7 FPGA开发板实战指南:从硬件解析到项目开发
  • 网络延迟排查实战:从概念到工具,定位系统卡顿根因
  • 电脑直投电视投屏器,仅48KB,完全免费,超级好用
  • 【企业级数据治理与语义层】【03】物化视图选择问题:从NP-hard到工程近似
  • CANN-Ascend-C流水线编程-昇腾NPU上Cube和Vector怎么协作