目录
Application Development Overview
Preparations for Development
Building Your First HarmonyOS Application (ArkTS)
Application Package Overview
Application Package Structure
HAP
HAR
HSP
Application Installation, Uninstall, and Update
Consistency Verification for Application Installation and Update
Application Configuration Files
app.json5 Configuration File
module.json5 Configuration File
Creating a Static Shortcut of the Application
Creating an Application Clone
Creating an Application Multi-Instance
Configuring an Application Icon and Label
Configuring the Context Menu for Applications (PC/2-in-1 Device)
Converting HAR to HSP
Converting HSP to HAR
Converting HAP to HAR
Integrated HSP
Integrating bin Files into Application Packages (PC/2-in-1 Device)
Calling APIs Across HAR/HSP Modules on the Native Side
Developing and Using App Plugins (PC/2-in-1 Device)
FAQs About Application Packages
Application Package Glossary
Resource Categories and Access
Getting Started with ArkTS
Introduction to ArkTS
ArkTS Coding Style Guide
ArkTS Migration Background
TypeScript to ArkTS Cookbook
Adaptation Cases
ArkTS Performant Programming Practices
Migrating from Java to ArkTS
Migrating from Swift to ArkTS
HarmonyOS Glossary
Before You Start
About This Kit
Application Model Overview
Application- or Component-Level Configuration
UIAbility Overview
UIAbility Lifecycle
UIAbility Launch Type
UIAbility Usage
Data Synchronization Between UIAbility and UI Page
Starting UIAbility Within the Same Application
Cross-Device Migration Through Call Invocation
UIAbility Backup and Restore
EmbeddedUIExtensionAbility
Using AppServiceExtensionAbility for Background Services
AbilityStage Component Manager
Context
Want Overview
Matching Rules of Explicit Want and Implicit Want
Using Explicit Want to Start an Application Component
Common action and entities Values (Not Recommended)
Component Startup Rules (Stage Model)
Obtaining/Setting Environment Variables
Process Model Overview
ArkTS Child Process Development
Creating/Terminating Native Child Processes (C/C++)
Independent Process Development Guide
Thread Model
Application Configuration File (Stage Model)
Application Lifecycle Overview
Application Startup Process
App Startup Settings
AppStartup
Application Preloading
Application Quick Start
App Exit
Exiting an Application (PC/2-in-1 Device)
App Restart
Obtaining the Cause of Abnormal Application Exit
Overview of Application Redirection
Overview of Starting a Specified Application
(Optional) Using canOpenLink to Check Application Accessibility
Obtaining the URL of the Target Application
Using Deep Linking for Application Redirection
Using App Linking for Application Redirection
Switching from Explicit Want Redirection to Linking Redirection
Application Link Description
Overview of Starting an Application of the Specified Type
Using startAbilityByType to Start a Navigation Application
Using startAbilityByType to Start an Email Application
Using mailto to Start an Email Application
Using startAbilityByType to Start a Financial Application
Using startAbilityByType to Start a Flight Application
Using startAbilityByType to Start an Express Delivery Application
Using startAbilityByType to Start an Image Editing Application
Using startAbility to Start a File Application
Starting a System Application
Overview of Inter-App Redirection
Redirection for Social Sharing
Ad Redirection
Redirection After Special Text Recognition
Redirection and Launching Between Web Pages and Apps
Ark Agentic Framework Overview
InsightIntent Framework Overview
Intent Development Overview
Developing Intents Using Configuration Files
Developing Intents Using Decorators
Appendix: Standard Intent Access Specifications
Debugging Intents
Application Skill Development Guide Based on ArkTS Scripts
On-Device A2A Framework Overview
Using the AgentExtensionAbility Component to Implement Agent Services
AgentExtensionAbility Configuration File
Modular Object Model Overview (C/C++)
Using ModularObjectExtensionAbility to Implement Modular Objects (C/C++)
Implementing IPC Communication for ModularObjectExtensionAbility with Taihe (C/C++)
Using ModularObjectDispatcher for Dynamic Interface Invocation (C/C++)
Ability Kit Terminology
About This Kit
Button-annotated Scenarios
Screen Reading Scenarios with Content Specified
Screen Reading Scenarios of Illustrations/Videos/Animations
Scenarios Where a New Focus Position Is Set
Multi-dimensional Nesting Scenarios
Multi-Component Scenarios
Multilingual Scenarios
Scenarios Where the Screen Reading Focus Is Disabled
Scenarios Involving Component Status Changes
Scenarios Involving Component Relocation
Automatic Centering of Cards
Whole-Component Focus on List Items
Scenarios Involving Dynamically Changed Content
Focus Navigation for Pop-Ups
Operating Error Scenarios
Customizing the Control Status Announcement
Customizing Scroll Steps for Accessibility Operations
Customizing the Focus Navigation Order
Proactive Page Change Notification
Testing Screen Reader
Declaring the Integration with the System-Wide Senior Mode
Synchronizing the In-App Senior Mode with System Settings
Obtaining the Senior Mode Status
About This Kit
Unified Data Definition Overview
UTDs (ArkTS)
UTDs (C/C++)
Uniform Data Structs (ArkTS)
Uniform Data Structs (C/C++)
Content Cards Based on Uniform Data Structs (ArkTS)
Prebuilt UTDs
Application Data Persistence Overview
Persisting User Preferences (ArkTS)
Persisting User Preferences (C/C++)
Persisting KV Store Data (ArkTS)
Persisting RDB Store Data (ArkTS)
Persisting RDB Store Data (C/C++)
Persisting Vector Store Data (ArkTS)
Persisting Vector Store Data (C/C++)
Overview of Cross-Device Application Data Sync
Cross-Device Sync of KV Stores (ArkTS)
Cross-Device Sync of RDB Stores (ArkTS)
Cross-Device Sync of Distributed Data Objects (ArkTS)
Overview of Device-Cloud Data Sync for the Same App
Deploying the Cloud Environment for Device-Cloud Data Sync
Developing RDB Store for Device-Cloud Data Synchronization (ArkTS)
Data Reliability and Security Overview
Database Backup and Restore (ArkTS)
Database Backup and Restore (C/C++)
Database Encryption (ArkTS)
Database Encryption (C/C++)
Access Control by Device and Data Level (ArkTS)
Access Control by Device and Data Level (C/C++)
Using an EL5 Database (ArkTS)
Overview of Cross-Application Data Sharing
Sharing Configurations Between Applications (ArkTS)
Sharing Data via Unified Data Channels (ArkTS)
Sharing Data via Unified Data Channels (C/C++)
Application Data Vectorization (ArkTS)
Preferences Database Debugging Tool Guide
vector-store Database Debugging Tool Guide
SQLite Debugging Tool
ArkData Glossary
ArkData FAQs
About This Kit
Overview of the ArkTS Common Library
XML Overview
XML Generation
XML Parsing
XML Conversion
Buffer and FastBuffer
JSON Extension Library
Overview of the ArkTS Container Library
Linear Containers
Nonlinear Containers
Basic Library FAQ
Overview of Concurrency
Asynchronous Concurrency (Promise and Async/Await)
Overview of Multithreaded Concurrency
TaskPool
TaskPool Usage Guidelines
Worker
Comparison Between TaskPool and Worker
Overview of ArkTS Inter-Thread Communication
Overview of Inter-Thread Communication Objects
Regular Object
Container Object
ArrayBuffer Object
SharedArrayBuffer Object
Transferable Object (NativeBinding Object)
Overview of Sendable Objects
Usage Rules and Constraints for Sendable
Asynchronous Lock
Asynchronous Waiting
ASON Parsing and Generation
Shared Container
Shared Module
Freezing Sendable Objects
Use Scenarios of Sendable
Using TaskPool for Independent Time-consuming Tasks
Using TaskPool for Multiple Time-consuming Tasks
Communication Between the TaskPool Task and Host Thread
Real-Time Communication Between the Worker Thread and Host Thread
Synchronous Calls to Host Thread Interfaces from Worker
High-Performance Communication Between Multi-Level Workers
Queue-Jumping Message Communication from Worker to Host Thread
Overview of Multithreaded Development
Overview of Concurrency in Time-Consuming Tasks
CPU Intensive Task Development (TaskPool and Worker)
I/O Intensive Task Development (TaskPool)
Synchronous Task Development (TaskPool and Worker)
Overview of Concurrency in Continuous Tasks
Continuous Task Development (TaskPool)
Overview of Concurrency in Resident Tasks
Resident Task Development (Worker)
Batch Database Operations
Concurrent Loading of Service Modules
Global Configuration
ArkUI Data Updates
C++ Inter-Thread Data Sharing
Specifying Task Concurrency with TaskPool
ArkUI Waterfall Rendering
Obtaining the Recently Accessed List
Canceling Tasks in Multithreading with TaskPool
Multithreaded Operations with Custom Native Transferable Objects
Multithreaded Operations with Custom Native Sendable Objects
Persistent Worker Threads Handling Concurrent Tasks via TaskPool
Sendable Object Refactoring Practice
Common Concurrency Issues
ArkTS Cross-Language Interaction
Overview of ArkTS Runtime
GC
Overview of Modular Operation
Dynamic Import
Lazy Import
Dynamically Loading Native Modules in Synchronous Mode
Statically Loading Native Modules
Loading Modules Using Node-API
Side Effects and Optimization of Module Loading
Modularization Debugging Tools
Modularization FAQ
ArkTS Runtime FAQs
Overview of the ArkTS Compilation Toolchain
Overview of Ark Bytecode
Ark Bytecode File Format
Ark Bytecode Fundamentals
Naming Conventions for Ark Bytecode Functions
Customizing Ark Bytecode During Compilation
Ark Bytecode Generation FAQs
Disassembler
Overview of ArkGuard for Source Code Obfuscation
ArkGuard Principles and Capabilities for Source Code Obfuscation
ArkGuard Obfuscation Configuration Options
ArkGuard Obfuscation Keep Options
Using ArkGuard for Source Code Obfuscation
ArkGuard Obfuscation Practice Guide
Package-specific Source Code Obfuscation Recommendations
Common Issues with ArkGuard in Source Code Obfuscation
Overview of ArkGuard for Bytecode Obfuscation
ArkGuard Principles and Capabilities for Bytecode Obfuscation
Using ArkGuard for Bytecode Obfuscation
Package-specific Bytecode Obfuscation Recommendations
Common Issues with ArkGuard in Bytecode Obfuscation
Configuring arkOptions in build-profile.json5
ArkTS Terminology
About This Kit
UI Development (ArkTS-based Declarative Development Paradigm) Overview
Basic Syntax Overview
UI Decorator Overview
Declarative UI Description
Creating a Custom Component
Custom Component Lifecycle
Lifecycle of a Custom Component (Recommended)
Custom Component Layout
Constraints on Access Modifiers of Custom Component Member Variables
@Reusable Decorator: Reusing V1 Components
@ReusableV2 Decorator: Reusing V2 Components
Global Reuse: Centralized Component Recycling and Reuse
Development Practices of Custom Component Reuse
Diagnosis and Analysis of Component Reuse Issues
Freezing a Custom Component (V1)
Freezing a Custom Component (V2)
Component Encapsulation
Component Extension Overview
@Builder Decorator: Custom Builder Function
@LocalBuilder Decorator: Maintaining Component Relationships
@BuilderParam Decorator: Referencing the @Builder Function
wrapBuilder: Encapsulating Global @Builder
mutableBuilder: Implementing Dynamic Update of Global @Builder
@Styles Decorator: Defining Reusable Component Styles
@Extend Decorator: Defining Extended Component Styles
stateStyles: Applying Polymorphic Styles
@AnimatableExtend Decorator: Defining Animatable Properties
@Require Decorator: Validating Constructor Input Parameters
State Management Overview
State Management Principles
Differences Between State Management V1 and V2 Update Mechanisms
MVVM (V1)
MVVM (V2)
@State Decorator: State Owned by Component
@Prop Decorator: Implementing One-Way Synchronization from Parent to Child Components
@Link Decorator: Implementing Two-Way Synchronization Between Parent and Child Components
@Provide and @Consume Decorators: Two-Way Synchronization with Descendant Components
@Observed and @ObjectLink Decorators: Observing Property Changes in Nested Class Objects
@Watch Decorator: Getting Notified of State Variable Changes
@Track Decorator: Implementing Class Object Property-Level Updates
Application State Management Overview
LocalStorage: Storing Page-Level UI State
AppStorage: Storing Application-wide UI State
PersistentStorage: Persisting UI State
Environment: Querying the Device Environment
@Local Decorator: Representing the Internal State of Components
@Param Decorator: Inputting External Parameters to Components
@Once: Implementing Initialization Once
@Event Decorator: Standardizing Component Output
@Provider and @Consumer Decorators: Synchronizing Across Component Levels in a Two-Way Manner
@ObservedV2 and @Trace Decorators: Observing Property Changes in Classes
@Monitor Decorator: Listening for Value Changes of the State Variables
@SyncMonitor Decorator: Synchronous Listening for Value Changes of the State Variables
@Computed Decorator: Declaring Computed Properties
@Type Decorator: Marking the Types of the Class Property
AppStorageV2: Storing Application-wide UI State
PersistenceV2: Persisting UI States
getTarget API: Obtaining Original Objects
makeObserved API: Changing Unobservable Data to Observable Data
canBeObserved API: Determining Whether an Object Can Be Observed
addMonitor and clearMonitor APIs: Dynamically Adding and Removing Listeners
applySync/flushUpdates/flushUIUpdates APIs: Synchronous Update
$$ Syntax: Implementing Two-Way Synchronization for Built-in Components
!! Syntax: Enabling Two-Way Binding
V1 to V2 Migration Overview
Migration for Component State Variables
Migration for Data Object State Variables
Migration for In-Application State Variables
Migration for Component Reuse
Migration for Repeated Content Rendering
Migration for Built-in Objects
Widget State Variable Migration
Migration for AnimateTo Usage
Guidelines for Mixed Use of State Management V1 and V2 (Before API Version 19)
Mixed Use of State Management V1 and V2 (API Version 19 and Later)
In-Component State Management FAQs
Data Object State Management FAQs
In-App State Management and Other FAQs
Common Methods for Locating the Problem That Component Refresh Is Not Triggered When State Variables Change
State Management Terms
Rendering Control Overview
if/else: Conditional Rendering
ForEach: Rendering Repeated Content
LazyForEach: Lazy Data Loading
Repeat: Reusing Components for Repeated Content Rendering
ContentSlot: Enabling Hybrid Development
@Env: Environment Variable
@CustomEnv: Custom Environment Variable
Component Navigation and Page Routing Overview
Navigation Architecture
Subpage
Page Routing
Transition Animation
Cross-Package Routing
Split-View Layout
Page Routing (@ohos.router) (Not Recommended)
Transition from Router to Navigation
Layout Overview
Linear Layout (Row/Column)
Stack Layout (Stack)
Flex Layout (Flex)
Relative Layout (RelativeContainer)
Responsive Grid Layout (GridRow/GridCol)
Dynamic Layout (DynamicLayout)
Container Breakpoint (ContainerReader)
Using Tabs (Tabs)
Immersive Effect Development
Layout Optimization
List and Grid Overview
Creating a List (List)
Creating an Arc List (ArcList) (Recommended for Circular Screens)
Creating a Grid (Grid/GridItem)
Grid Item Drag-and-Drop
Creating a Waterfall Flow (WaterFlow)
Common Waterfall Operations
Creating Lazy Layouts (LazyColumnLayout/LazyVGridLayout/LazyVWaterFlowLayout)
Creating a Lazy Custom Layout (LazyDynamicLayout)
Common List Flows
Introduction to Text
Text Display (Text/Span)
Text Input (TextInput/TextArea/Search)
Rich Text Editing (RichEditor)
Symbol Glyph (SymbolGlyph/SymbolSpan)
Styled String (StyledString/MutableStyledString)
Text and Image Layout
Soft Keyboard Management
Selection and Development of Rich Text Display
Text Expansion and Collapse
Custom Keyboard
Image Display (Image)
Video Playback (Video)
Creating a Swiper (Swiper)
Creating an Arc Carousel Component (ArcSwiper) (Recommended for Circular Screens)
colorFilter-based Image Filter Effect
Image Resizing with the resizable Attribute
Button and Selection Component Overview
Button
Arc Button (ArcButton) (Recommended for Circular Screens)
Radio Button (Radio)
Toggle
Custom Rendering (XComponent)
Progress Indicator (Progress)
Popup Window Overview
Dialog Overview
Global Custom Dialog Box Independent of UI Components (openCustomDialog)
Basic Custom Dialog (CustomDialog)
Fixed-Style Dialog Box
Page-Level Dialog Box
Dialog Box Layer Management
Dialog Controller
Dialog Box Focus Policy
Dialog Mask Control
Menu Overview
Menu Control (Menu)
Global Menu Independent of UI Components (openMenu)
Popup Overview
Popup
Global Popup Independent of UI Components (openPopup)
Modal Page Overview
Binding a Semi-Modal Sheet (bindSheet)
Binding a Full-Modal Page (bindContentCover)
Using Toasts (Toast)
Managing Overlays (OverlayManager)
Custom Dialog Selection and Development
Immersive Light Sense Overview
Enabling Immersive Light Sensing
Immersive System Material Visual Effects
Immersive Lighting Power Consumption Optimization
FAQs About Immersive Light Sensing
Typical Scenarios of Immersive Light Sensing
Geometric Shape Drawing Overview
Drawing Geometric Shapes (Shape)
Clipping Shapes (clipShape)
Interaction Response Overview
Interaction Mechanism Overview
Handling Touchscreen Input Events
Handling Mouse Input Events
Handling Touchpad Input Events
Handling Keyboard Input Events
Handling Gamepad Input Events
Handling Crown Events
Supporting Smart Gesture Input Events
Gesture Binding
Single Gesture
Combined Gestures
Multi-level Gesture Events
Gesture Conflict Handling
Implementing Unified Drag and Drop
Implementing Focus Support
Animation Overview
Property Animation Overview
Implementing Property Animation
Custom Property Animation
Transition Animation Overview
Enter/Exit Transition
Modal Transition
Shared Element Transition
Rotation Transition Animation
Page Transition Animation (Not Recommended)
Particle Animation
Component Animation
Animation Curve Overview
Traditional Curve
Spring Curve
Animation Smoothing
Shadow Effect
Color Effect
Motion Blur
Comparison Between Motion Blur and Static Blur
Efficient Use of Blur
Frame Freezing and Blurring Troubleshooting
Frame Animation (ohos.animator)
Optimizing Animation Performance
Customization Capability Overview
Custom Composition
Custom Node Overview
Custom Placeholder Nodes
Custom Component Node (FrameNode)
Custom Render Node (RenderNode)
Custom Declarative Node (BuilderNode)
Setting Custom Node Cross-Language Attributes
Dynamic Component Creation
Drawing Custom Graphics on the Canvas (Canvas)
Custom Drawing Modifier (DrawModifier)
Custom Extension Capability Overview
Content Modifier (ContentModifier)
Attribute Modifier (AttributeModifier)
Attribute Updater (AttributeUpdater)
Implementing UI Internationalization
Accessibility Development
Supporting Aging-Friendly Design
Implementing Dark and Light Mode Adaptation
Configuring In-Application Theme Skinning
Using the UI Context API for UI Operations (UIContext)
Using Component Snapshot (ComponentSnapshot)
Long Screenshot
Detecting Component Visibility
Inspecting Page Layouts
Media Query (@ohos.mediaquery)
Full-Screen Launch of Atomic Services (FullScreenLaunchComponent)
In-Application Embedded Component (EmbeddedComponent)
NDK-Based UI Development Overview
Embedding ArkTS Components
Integrating with ArkTS Pages
Using Layout Components
Setting Common Layout Attributes
Using Navigation Components
Implementing a List Layout
Implementing a Waterfall Flow Layout
Using Grids
Using the Text Component
Using Styled Strings
Adding a Text Event Listener for a Text Box
Image Display (Image)
Using the Swiper Container
Building Form Components
Building a Dialog Box
Animation Overview
Animation Development
Using the Sliding Selector (Picker)
Adding an Event Listener
Binding Basic Input Events
Binding Gesture Events
Binding Drag Events
Building Custom Components
Custom Drawing
Integrating Accessibility Through Custom Drawing
Launching EmbeddedUIExtensionAbility with EmbeddedComponent
Querying and Operating NDK Nodes
NDK Multi-Instance Scenario Development
NDK Multi-thread Component Creation
Building a Rendering Node
UI Development (JavaScript-compatible Web-like Development Paradigm) Overview
File Organization
"js" Tag
app.js
HML
CSS
JavaScript
Lifecycle
Resource Limitations and Access
Multi-Language Capability
Component Overview
Layout Description
Adding Title and Paragraph Text
Adding an Image
Adding a Comment Area
Adding a Container
Adding Interactions
Developing Animations
Defining Gesture Events
Defining Page Routes
list Development
dialog Development
form Development
stepper Development
tabs Development
swiper Development
text Development
input Development
button Development
picker Development
image Development
image-animator Development
rating Development
slider Development
chart Development
switch Development
toolbar Development
menu Development
marquee Development
qrcode Development
search Development
Canvas
CanvasRenderingContext2D
Path2D
OffscreenCanvasRenderingContext2D
Grid Layout
Basics
Graph Drawing
Path Drawing
Text Drawing
Attribute Style Animation
Animation with the transform Attribute
Animation with the background-position Attribute
Animation for SVG Components
Component Animation
Animation Effect
Animation Frame
Custom Components
Using WebGL to Draw Graphics
UI Stability Issue Analysis Overview
Common UI-Related Application Crash Issues
Common UI Application Freezing Issues
Debugging UI Display Exceptions
UI Context Debugging
UI Preview
UI Profiling
High-Performance UI Development
Navigation FAQs
FAQs About Custom Nodes
FAQs About Buttons and Selection Components
Popup Component FAQs
FAQs About Text Components
FAQs About Dynamic Attribute Setting
FAQs About Imperative Nodes
FAQs About UI Parallelization
Common Gesture Event Conflicts
Window Overview
Window Type Development Overview
Subwindow Development
Dialog Window Development
Global Floating Window Development
Float View Development
Floating Ball Development
PiP Development Overview
Using XComponent to Develop PiP (ArkTS)
Using typeNode to Develop PiP (ArkTS)
Using NDK APIs to Develop PiP (C/C++)
PiP FAQs
Window Mode Overview
Introduction to Multi-Window
Declaring the Support for Multi-Window
Adapting the Application Layout to Multi-Window
Implementing the Avoid Area for the Window-top Control Bar
Freeform Window Overview
App Adaptation for Freeform Windows
Window Lifecycle
Window Rotation
Window Rotation Practical Cases
Window Layout
Window Focus
Window Z-Order
Immersive Window
Screenshot and Privacy Mode (ArkTS)
Controlling Brightness and Always-On (ArkTS)
Setting Window Animation Effects (ArkTS)
Controlling Window Appearance (ArkTS)
Using WindowManager to Manage Multimodal Input Events (C/C++)
Application Starting Window Overview
Configuring the Application Starting Window
Configuring Starting Window Resources
Window Metadata Configuration
Glossary
Window Development FAQs
Common Log Issues and Troubleshooting in Window Development
Display Management Overview
Using OH_DisplayManager to Obtain Basic Display Information and Listen for Status Changes (C/C++)
Using Display to Obtain Display Properties and Listen for Status Changes (ArkTS)
Glossary
Display Development FAQs
ArkUI Glossary
About This Kit
ArkWeb Process
Lifecycle of the Web Component
Developing User-Agent
Managing Cookies and Data Storage
Setting Dark Mode
Opening Pages in a New Window
Managing Location Permissions
Using Incognito Mode
Using Motion and Orientation Sensors
Rendering Modes of the Web Component
Fitting In the Page Content Layout
Optimizing the Page Flash During the Redirection
Obtaining the Web Page Content Height
Invoking Frontend Page Functions on the Application
Invoking Application Functions on the Frontend Page
Establishing a Data Channel Between the Application and the Frontend Page
Mutual Invoking Between the Application and the Frontend Page (C/C++)
Establishing a Data Channel Between the Application and the Frontend Page (C/C++)
Implementing Nested Scrolling
Implementing Content Scrolling
Docking to the Soft Keyboard
Managing Focus
Interacting with Applications Using Gestures
Zooming Web Pages
Displaying Web Page Dialog Boxes
Interacting with Web Pages Using the Drag-and-Drop Feature of the Web Component
Simulated Click Detection for Web Applications
Resolving Cross-Origin Resource Access
Intelligent Tracking Prevention
Using the Ad Blocking Feature
Using Secure Shield Mode
Loading Web Pages
Using the Web Component Interception Capability
Managing Page Redirection and Browsing History Navigation
Intercepting Network Requests Initiated by the Web Component
Customizing Page Request Responses
Accelerating Web Page Access
Setting the Backward-Forward Cache
Migrating Web Components Between Different Windows
Uploading Files
Downloading Files
Starting a Camera and Microphone
Taking Over the Media Playback on Web Pages
Enabling Picture-in-Picture
Enabling Immersive Full-Screen Video Playback
Printing Frontend Pages
Saving a Frontend Page as a PDF File
Previewing PDF Files
Calculating and Adjusting Safe Area Insets
Using Web Component Menus to Process Web Content
Processing Web Page Content by Interacting with the System Clipboard
Using Smart Text Data Detector
Implementing Long Screenshot for the Web Component
Using Same-Layer Rendering
Rendering Native Components at the Same Layer
Using Offline Web Components
Using WebNativeMessagingExtensionAbility to Implement Communication Between Browser Extensions and Applications
Debugging Frontend Pages by Using DevTools
Using Crashpad to Collect Web Component Crash Information
Troubleshooting White Screen Issues on Web Pages
Using Hypium to Implement ArkWeb Automated Testing
Locating Web Page Loading Issues
Glossary
About This Kit
Transient Task (ArkTS)
Transient Task (C/C++)
Continuous Task (ArkTS)
Deferred Task (ArkTS)
Agent-powered Reminder (ArkTS)
Background Tasks Kit Integration Specifications
Glossary
About This Kit
Client-Server Interaction Process
Server Application Development
Client Application Development
Content Embed Kit FAQs
Content Embed Kit Terminology
About This Kit
Application File Overview
Application Sandbox
Accessing Application Files (ArkTS)
Accessing Application Files (C/C++)
Obtaining Application and File System Space Statistics
Sharing an Application File
Configuring the Application Shared Directory
Application Data Backup and Restore Overview
Accessing Backup and Restore
Verification Guide for App Data Backup and Restore
Adaptation Guide for Application Clone
Introduction to Application Data Migration
Adaptation Process
Application Data Migration and Adaptation
Developer Self-Verification
E2E Verification
FAQs
Precautions for Code Development During Application Upgrade
User File Overview
User File URI
FileUri Development (C/C++)
Obtaining the User Directory Environment (C/C++)
Selecting User Files
Saving User Files
Persisting Temporary Permissions
Persisting Temporary Permissions (C/C++)
Obtaining and Accessing a User Directory
Distributed File System Overview
Setting the Security Level of a Distributed File
Sharing and Accessing Files Across Devices
Copying Files Across Devices
Device-Cloud File Sync Overview
Device-Cloud File Sync Integration
Compression and Decompression Overview
Archive File Compression and Decompression (C/C++)
Streaming Compression and Decompression (C/C++)
Buffer Compression and Decompression (C/C++)
Accessing Files on the Native Side
About This Kit
Knowledge Processing
RAG Overview
Knowledge Q&A
Configuring a Prompt Template
Configuring Hyperparameters
Configuring a Thought Template
Complete Sample Code
Intelligent Data Retrieval-ArkTS
Intelligent Data Retrieval-C++
On-Device Q&A Model
RAG Glossary
On-Device Q&A Model Glossary
About This Kit
ArkTS Widget Overview
Creating an ArkTS Widget
Configuring ArkTS Widget Configuration Files
Managing ArkTS Widget Lifecycle
ArkTS Widget Process Model
Overview of ArkTS Widget UI Development
Using Animations in ArkTS Widgets
Using Canvas in ArkTS Widgets
Using Custom Fonts in ArkTS Widgets
Overview of ArkTS Widget Update
Active Update of ArkTS Widgets
Passive Update of ArkTS Widgets
Push Updates for ArkTS Widgets
Updating Local and Online Images in the Widget
Updating Widget Content by State
Overview of ArkTS Widget Page Interaction
Redirecting to an Application Page (router Event)
Launching UIAbility to the Background (call Event)
Transferring Messages to an Application (message Event)
Updating Widget Content Through the router or call Event
Editing ArkTS Widgets
Adding ArkTS Widgets to the Home Screen from Within an App
ArkTS Lock Screen Widget
ArkTS Transparent Widget
Standby Screen Widgets
Overview of Interactive Widgets
Developing a Fun-based Widget
Developing a Scene-based Widget
Music Widget
Widget Updates and Data Interaction
ArkTS Widget Adaptation FAQs
JS Widget Overview
Developing a JS Widget (Stage Model)
Developing a JS Widget (FA Model)
Glossary
About This Kit
Implementing an Input Method Application
Using the Input Method in a Custom Edit Box
Switching Between Input Methods
Setting Input Method Subtypes
Security Mode of the Input Method
Using the Input Method in a Custom Edit Box (C/C++)
Immersive Mode of the Input Method Application
IME Tool
Input Box and Input Method Interaction in Non-Focusable Windows
Glossary
About This Kit
IPC and RPC Development (ArkTS)
IPC and RPC Development (C/C++)
Subscribing to State Changes of a Remote Object
Glossary
About This Kit
UI Design for Internationalization
Locale ID and Cultural Habit Division
System Language and Region
Preferred Language
User Preferences
Date and Time Formatting
Number and Unit of Measurement Formatting
Phone Number Formatting
Calendar Setting
Time Zone Setting
DST Transition
Overview of Multilingual Sorting
Sorting by Local Habits
Sorting by Indexes
Character Processing
Overview
Language and Locale Name Localization
Multilingual Adaptation
Hard Coding and Concatenation Prevention
Scene and Context Clarification for Translation
Singular/Plural Form Selection
Overview of Pseudo-Localization Testing
Pseudo-Localization Testing for Translation
Pseudo-Localization Testing for UI Mirroring
Linguistic Testing
Glossary
About This Kit
(Recommended) Layered Icon Processing
Single-Layer Icon Processing
Setting the Dynamic Blur Style
Setting the Message Reminder
Configuring the Custom Area
Dynamically Displaying and Hiding the Title Bar
Configuring the Sheet Style
Setting the Icon Type
Configuring In-App Multi-Window
Development Example
Configuring the Sidebar in Overlay Mode
Configuring the Sidebar in Embed Mode
Sidebar Menu Style
Setting Tab Bar Dividers
Setting the Tab Bar Blur Style
Configuring the Tab Icon Bleed Style
Configuring the Sidebar Half-Screen-based Center-Aligned Style
Setting the Tab Bar Floating Style
Configuring a Persistent Notification Pop-up
Configuring a Scheduled Notification Pop-up
Configuring a Component with a Primary Button
Configuring a Component Without a Primary Button
Configuring the List Style with Horizontal Swipe Animation
Configuring the List Card Style
Loading a Custom Symbol for an App
Point-Light Effect
Shadow Effect upon a Press
Dual-Edge Flowing Light Effect
Background Flowing Light Effect
Dual-Edge Flowing Light with a Background
In-App Multi-Window
Immersive Light
Color Selection and Favorites Management
How Do I Obtain the layeredDrawableDescriptor Object Information?
What Are the Possible Causes and Solutions for 401 Parameter Check Failure?
Glossary
Access Control Overview
Application Permission Management Overview
Workflow for Requesting Permissions
Declaring Permissions
Requesting User Authorization
Requesting User Authorization for the Second Time
Requesting One-Time User Authorization
Manual Authorization
Requesting Restricted Permissions
Open system_grant Permissions
Open user_grant Permissions
Restricted Permissions
Permissions for Enterprise Applications
Permissions for MDM Applications
Application Permission Groups
Removing Requested Permissions
FAQs About Packet Capture/Debugging Permission
Security Component Overview
Using PasteButton
Using SaveButton
Using System Pickers
Overview of the Password Autofill Service
Quick Adaptation
Autosave of Accounts and Passwords
Updates of Accounts and Passwords
Autofill of Accounts and Passwords
Autofill of Strong Passwords
Suggestions on Automatically Generating Strong Passwords for Applications
Adaptation Suggestions for Custom Layouts
Adaptable Scenarios
Adding Password Vault for Web Pages
Sharing Account Data Between Applications and Web Pages
Application Encryption
About This Kit
Protecting Asset Data
Protecting Asset Data with User Authentication
Adding an Asset (ArkTS)
Removing Assets (ArkTS)
Updating an Asset (ArkTS)
Querying Assets (ArkTS)
Querying Assets Used for User Authentication (ArkTS)
Adding Assets in Batches (ArkTS)
Removing Assets in Batches (ArkTS)
Updating Assets in Batches (ArkTS)
Managing Assets in a Group (ArkTS)
Syncing Assets (Backup and Restore) (ArkTS)
Adding an Asset (C/C++)
Removing Assets (C/C++)
Updating an Asset (C/C++)
Querying Assets (C/C++)
Managing Assets in a Group (C/C++)
Syncing Assets (Backup and Restore) (C/C++)
Glossary
About This Kit
Running a Data App to Process Data
Glossary
About This Kit
Randomly Generating a Symmetric Key (ArkTS)
Randomly Generating a Symmetric Key (C/C++)
Converting Binary Data into a Symmetric Key (ArkTS)
Converting Binary Data into a Symmetric Key (C/C++)
Randomly Generating an Asymmetric Key Pair (ArkTS)
Randomly Generating an Asymmetric Key Pair (C/C++)
Converting Binary Data into an Asymmetric Key Pair (ArkTS)
Converting Binary Data into an Asymmetric Key Pair (C/C++)
Generating an Asymmetric Key Pair Based on Key Parameters (ArkTS)
Generating an Asymmetric Key Pair Based on Key Parameters (C/C++)
Converting a Compressed or Uncompressed ECC Public Key (ArkTS)
Converting a Compressed or Uncompressed ECC Public Key (C/C++)
Converting Compressed or Uncompressed ECC Point Data (ArkTS)
Converting Compressed or Uncompressed ECC Point Data (C/C++)
Converting a PEM String into an Asymmetric Key Pair (ArkTS)
Converting a PEM String into an Asymmetric Key Pair (C/C++)
Encoding and Decoding with an RSA Private Key (ArkTS)
Encoding and Decoding with an RSA Private Key (C/C++)
Obtaining a Public Key from a Private Key (ArkTS)
Obtaining a Public Key from a Private Key (C/C++)
Encryption and Decryption with an AES Symmetric Key (ArkTS)
Encryption and Decryption with an AES Symmetric Key (C/C++)
Encryption and Decryption with a DES Symmetric Key (ArkTS)
Encryption and Decryption with a DES Symmetric Key (C/C++)
Encryption and Decryption with a 3DES Symmetric Key Pair (ArkTS)
Encryption and Decryption with a 3DES Symmetric Key Pair (C/C++)
Encryption and Decryption with an SM4 Symmetric Key (ArkTS)
Encryption and Decryption with an SM4 Symmetric Key (C/C++)
Encryption and Decryption with a ChaCha20 Symmetric Key Pair (ArkTS)
Encryption and Decryption with a ChaCha20 Symmetric Key Pair (C/C++)
Encryption and Decryption with an RSA Asymmetric Key Pair (ArkTS)
Encryption and Decryption with an RSA Asymmetric Key Pair (C/C++)
Encryption and Decryption with an SM2 Asymmetric Key Pair (ArkTS)
Encryption and Decryption with an SM2 Asymmetric Key Pair (C/C++)
Encryption and Decryption of Symmetric Keys with AES-WRAP (ArkTS)
Encryption and Decryption of Symmetric Keys with AES-WRAP (C/C++)
Converting SM2 Ciphertext (ArkTS)
Converting SM2 Ciphertext (C/C++)
Encryption and Decryption with an RC2 Symmetric Key (CBC Mode) (ArkTS)
Encryption and Decryption with an RC4 Symmetric Key (ArkTS)
Encryption and Decryption with ECIES (ArkTS)
Encryption and Decryption Using ECIES (C/C++)
Signing and Signature Verification with an RSA Key Pair (ArkTS)
Signing and Signature Verification with an RSA Key Pair (C/C++)
Signing and Signature Verification with an ECDSA Key Pair (ArkTS)
Signing and Signature Verification with an ECDSA Key Pair (C/C++)
Signing and Signature Verification with an ECC Key Pair (ArkTS)
Signing and Signature Verification with an SM2 Key Pair (ArkTS)
Signing and Signature Verification with an SM2 Key Pair (C/C++)
Converting SM2 Signature Formats (ArkTS)
Converting SM2 Signature Formats (C/C++)
Signing and Signature Verification Using ML-DSA Key Pairs (ArkTS)
Key Agreement Using ECDH (ArkTS)
Key Agreement Using ECDH (C/C++)
Key Agreement Using X25519 (ArkTS)
Key Agreement Using X25519 (C/C++)
Key Agreement Using DH (ArkTS)
Key Agreement Using DH (C/C++)
Key Encapsulation and Decapsulation Using KEM (ArkTS)
Generating an MD Using SHA-256 (ArkTS)
Generating an MD Using SHA-256 (C/C++)
Generating an MD Using MD5 (ArkTS)
Generating an MD Using MD5 (C/C++)
Generating an MD Using SHA-3 (ArkTS)
Generating an MD Using SHA-3 (C/C++)
Generating an HMAC (ArkTS)
Generating an HMAC (C/C++)
Generating a CMAC (ArkTS)
Generating a CMAC (C/C++)
Generating Secure Random Numbers (ArkTS)
Generating Secure Random Numbers (C/C++)
Generating Secure Random Numbers with Hardware Entropy Sources (ArkTS)
Generating Secure Random Numbers with Hardware Entropy Sources (C/C++)
Key Derivation Using PBKDF2 (ArkTS)
Key Derivation Using PBKDF2 (C/C++)
Key Derivation Using HKDF (ArkTS)
Key Derivation Using HKDF (C/C++)
Key Derivation Using Scrypt (ArkTS)
Key Derivation Using Scrypt (C/C++)
Key Derivation Using X963KDF (ArkTS)
Key Derivation Using X963KDF (C/C++)
Cross-Platform Data Encryption and Decryption Compatibility
Glossary
About This Kit
DLP Service Development (ArkTS)
DLP Service Development (C/C++)
Adapting to Encrypted Share
Data Protection Kit Glossary
About This Kit
Certificate Framework Overview
Certificate Development
Certificate Extension Development
CRL Development
Creating a TrustAnchor Object Array from a PKCS #12 File
Certificate Chain Validator Development
Certificate and CRL Collection Development
Certificate Chain Development
Using the Prebuilt CA Certificate to Validate a Certificate Chain
Certificate Signing with CMS
Certificate Encapsulation with CMS
Certificate Signature Verification with CMS
Certificate Decapsulation with CMS
Creating and Parsing a Certificate with PKCS #12
Online Validation of Certificate Revocation Status of a Certificate Chain
Downloading the Missing Intermediate CA Certificate During Certificate Chain Validation
Building and Verifying a Certificate Chain
Certificate Manager Overview
CA Certificate Development
Application Certificate Development
User Certificate Credential Development
System Certificate Credential Development
Glossary
About This Kit
Service Quota
Enabling Device Security Kit
Generating a JWT Based on a Service Account
DeviceVerify
Enhanced System Integrity Check
System Integrity Check
URL Check
Local System Integrity Check
Unified Risk Control Credential
Image Security Verification
Location Security Verification
Secure Image Compression and Cropping
Verifying the Anonymous Certificate Chain
Verifying the Signature
TrustedAppService Glossary
Overview
Setting the Digital Shield Password
Changing the Digital Shield Password
Disabling the Digital Shield Service
Password-based Transaction Authentication
Enabling Biometric Authentication
Performing Biometric Transaction Authentication
Disabling the Authentication Capability of a Specified Biometric Feature
Digital Shield Signature Key Backup and Restoration
Digital Shield Access in Web Page Scenarios (FIDO2)
TrustedAuthentication Glossary
Single-Client Subscription
Subscribing to Notification Events
Subscribing to Authentication Events
Process Information Query
Code Signature Information Query
Querying Notification Client Information
Querying Authentication Client Information
Subscribing to Notification Events
Subscribing to Authentication Events
Process Information Query (C/C++)
Code Signature Information Query (C/C++)
Querying Notification Client Information (C/C++)
Querying Authentication Client Information (C/C++)
Fraud Detection
Simulated Click Detection
Enhanced Simulated Click Detection
Terms of BusinessRiskIntelligentDetection
RiskControlEngine
Device Security Mode Query (C/C++)
Obtaining Fraudulent Messages
Obtaining Fraudulent Call Logs
Obtaining Fraudulent Apps
Screen Privacy
VirusProtectionServiceManager (C/C++)
Querying the Super Privacy Mode Status
Querying the Super Privacy Policy Status
Subscribes to Super Privacy mode change events.
Subscribing to Super Privacy Mode and Policy Change Events
Personal Data Processing Information
Supported Countries/Regions
About This Kit
Development Preparations
Starting a File Scanning Task
File Opening
Setting Tags for a File
Obtaining the Tags of a File
Obtaining the URI of a File
Deleting a File from a Specified Path
Updating a Security Control Policy
Setting the KIA File List
Subscribing to and Unsubscribing from KIA File Copy, Rename, and Compress Events
Setting a Watermark Image for KIA Files
Adding, Deleting, and Obtaining an App Trustlist
Setting HDC Authentication Keys
Subscribing to or Unsubscribing from Printing Service Startup Events
Process Management
Obtaining the Enterprise Recovery Key for Decrypting Hard Disk Data
Obtaining the Enterprise Recovery Key for Resetting the Screen Lock Password
Obtaining a Challenge
Signing a Challenge
Updating the Enterprise Public Key Certificate
Deleting an Enterprise Recovery Key
Lite Import Title
Glossary
About This Kit
Preparations
App Directory Scanning
File Opening
File Isolation
Isolated File Restoration
Deletion of Isolated Files
Isolation Query
Threat Process Termination
Enterprise Threat Protection Kit FAQs
Glossary
About This Kit
Development Preparations
FIDO Passwordless Authentication
IFAA Passwordless Authentication
SOTER Passwordless Authentication
Overview
Authentication Using Passkeys (ArkTS)
Authentication Using Passkeys (C/C++)
DID Digital Identity
Glossary
IFAA FAQs
Personal Data Processing Information
Website Link Disclaimer
About This Kit
Basic Concepts of Local Key Management
Key Generation Overview and Algorithm Specifications
Generating a Key (ArkTS)
Generating a Key (C/C++)
Key Import Overview and Algorithm Specifications
Importing a Key in Plaintext (ArkTS)
Importing a Key in Plaintext (C/C++)
Importing a Key in Secure Mode (ArkTS)
Importing a Key in Secure Mode (C/C++)
Importing a Key Using a Digital Envelope (ArkTS)
Importing a Key Using a Digital Envelope (C/C++)
General Process of Using a Key
Encryption and Decryption Overview and Algorithm Specifications
Encryption and Decryption (ArkTS)
Encryption and Decryption (C/C++)
Signing and Signature Verification Overview and Algorithm Specifications
Signing and Signature Verification (ArkTS)
Signing and Signature Verification (C/C++)
Key Agreement Overview and Algorithm Specifications
Key Agreement (ArkTS)
Key Agreement (C/C++)
Key Encapsulation Mechanism and Algorithm Specifications
Encapsulating a Key (ArkTS)
Key Derivation Overview and Algorithm Specifications
Key Derivation (ArkTS)
Key Derivation (C/C++)
HUKS Access Control Overview
HUKS Access Control Development
Refined Access Control Development
HMAC Overview and Algorithm Specifications
HMAC (ArkTS)
HMAC (C/C++)
CMAC (ArkTS)
CMAC (C/C++)
Deleting a Key (ArkTS)
Deleting a Key (C/C++)
Key Attestation Overview and Algorithm Specifications
Anonymous Key Attestation (ArkTS)
Anonymous Key Attestation (C/C++)
Offline Anonymous Key Attestation (ArkTS)
About Application Attestation
Application Development
Server Development
Application Development
Server Development
Integration Design Practice for Verifying the Authenticity of Application Requests
Checking a Key (ArkTS)
Checking a Key (C/C++)
Obtaining Key Properties (ArkTS)
Obtaining Key Properties (C/C++)
Exporting a Key (ArkTS)
Exporting a Key (C/C++)
Querying Key Aliases (ArkTS)
Querying Key Aliases (C/C++)
About Exporting and Importing a Key in Ciphertext
Exporting and Importing a Key in Ciphertext (ArkTS)
Exporting and Importing a Key in Ciphertext (C/C++)
Group Key Overview
Group Key (ArkTS)
Group Key (C/C++)
External Key Management Extension Overview
Provider Management Overview and Specifications
Registering and Unregistering a Provider (ArkTS)
Registering and Unregistering a Provider (C/C++)
Resource Management Overview and Specifications
Obtaining a Resource ID (ArkTS)
Opening/Closing a Resource (ArkTS)
Opening and Closing Resources (C/C++)
Key Generation, Import, and Export
Generating a Key (ArkTS)
Importing a Key (ArkTS)
Exporting a Public Key (ArkTS)
UKey PIN Authentication Overview and Specifications
Authentication Status Query (ArkTS)
Authentication Status Query (C/C++)
Clearing the UKey PIN Authentication Status (ArkTS)
Signing and Signature Verification Overview and Algorithm Specifications
Signing and Signature Verification (ArkTS)
Signing and Signature Verification (C/C++)
General Query Overview and Specifications
General Query (ArkTS)
General Query (C/C++)
Setting Properties (ArkTS)
Obtaining Error Information (ArkTS)
UKey Process Example
CryptoExtensionAbility Extension Capability Overview
CryptoExtensionAbility Adaptation Development
Personal Data Processing Information
Glossary
About This Kit
Before You Start
Obtaining Supported Authentication Capabilities
Initiating User Authentication
Canceling User Authentication
Perceiving and Adjusting the Authentication Process
Applying Custom Authentication
Obtaining Enrolled Credential Status
Using userAuthIcon
Obtaining the Locking Status of a Specified Authentication Type
Companion Device Authentication
How to Detect Changes in Device Fingerprints for Fingerprint Login
How to Detect Authentication Failure During Fingerprint Login
Glossary
About This Kit
Accessory Integration
An Exception Occurs During API Calls, and the Expected Operation Cannot Be Completed
Glossary
About This Kit
Bluetooth Overview
Bluetooth Setting
Device Discovery
Device Pairing
SPP-based Connection and Data Transmission
BLE Scanning and Advertising
GATT-based Connection and Data Transmission
401 Invalid Parameter Reported When an Optional Property Is Explicitly Set to undefined
Bluetooth Glossary
NFC Development
NFC Tag Read/Write Development
HCE Development
SE Access Development
WLAN Service Development Overview
P2P Connection Development
STA Development
Wi-Fi Scan Development
Converged Short-Range Service Development
Interconnection Between Partner Devices and HarmonyOS Devices
Converged Short-Range Glossary
NearLink Overview
Getting Started
Discovering NearLink Devices
Managing SSAP Connections and Services
Transferring Data over NearLink
Obtaining NearLink Coordinated Devices Set Information
NearLink FAQs
NearLink Glossary
About This Kit
Distributed Device Management Development
Cross-Device UIAbility Connection Development
Enhanced Connection Development
About This Kit
Preparations
Checking Whether NearLink Is Supported
Querying NearLink Status
Sending NearLink Advertising Packets
Initiating NearLink Scanning
SSAP Server
SSAP Client
Transferring Data Using NearLink
Obtaining NearLink Cooperative Device Set Information
FAQs
Glossary
About This Kit
Using HTTP for Network Access
Using WebSocket for Network Access
Using WebSocket for Network Access (C/C++)
Using Socket for Network Access
Using MDNS for LAN Access
Using DNS for Domain Name Resolution
Using HTTP Global Interceptor (C/C++)
Network Connection Management
Network Connection Management (C/C++)
VPN Management
Application Network Reconnection
Network Information Query and Connection Management
Network Connection Security Configuration
Collecting Network Statistics
Using the Network Firewall
Extensible Authentication
Glossary
About This Kit
Preparations
Network Quality Assessment
Network Scenario Identification
App Data Transmission Quality Feedback
Weak Network Signal Awareness and Judgment
Network Handover Notification
Handover Mode Setting
Overview
Setting the Service Scenario
Listening to the Multi-Network Concurrency Status
Listening to Multi-Network Concurrency Suggestions
Querying Multi-Network Concurrency Quota Information
Initiating and Releasing Multi-Network Concurrency
Network Acceleration Based on Multi-Network Concurrency
Network Quality Assessment (C/C++)
Network Scenario Identification (C/C++)
App Data Transmission Quality Feedback (C/C++)
Weak Network Signal Awareness and Judgment (C/C++)
Network Handover Notification (C/C++)
Handover Mode Setting (C/C++)
Setting the Service Scenario (C/C++)
Listening to the Multi-Network Concurrency Status (C/C++)
Listening to Multi-Network Concurrency Suggestions (C/C++)
Querying Multi-Network Concurrency Quota Information (C/C++)
Initiating and Releasing Multi-Network Concurrency (C/C++)
How Do I Determine Whether the Current Network Is a Wi-Fi or Cellular Network During Multi-Network Concurrent Transmission?
What Will Happen If the Quota of Multi-Network Concurrency Is Used Up?
Glossary
About This Kit
Preparations
Sending a Network Request (ArkTS)
Canceling a Network Request (ArkTS)
Closing a Session (ArkTS)
Sending a Network Request (C++)
Canceling a Network Request (C++)
Closing a Session (C++)
DnsConfiguration: DNS Customization
TransferConfiguration: Data Transmission Customization
ProxyConfiguration: Proxy Customization
SecurityConfiguration: Secure Transmission Customization
ProcessingConfiguration: Processing Customization
Interceptor: Richer and Higher-Level Customization Capabilities
Implementing Upload and Download Quickly
Implementing the Function of Suspending/Resuming Requests and Resuming Transfer
Streaming
Performance Maintenance and Test Based on TracingConfiguration
Transmission Performance Optimization Based on Configuration
Basic HTTP Caching Function
Cache Sharing Between Sessions
Customizing a Cache Interceptor
Boosting HTTP Transmission Performance Through Pre-connection
Receiving Push Messages over a QUIC Long-Lived Connection
Calling a Remote Program Using URPC
Glossary
About This Kit
Introduction to Device Interconnectivity
Development Guide for Device Interconnectivity
Overview of Device Interconnectivity in NDK
Development Guide for Device Interconnectivity in NDK
Device Interconnectivity (RichEditor Control)
OneHop for Device Interaction
After the Device Interconnectivity Control Is Connected, No Devices Are Available for Selection
About This Kit
Call Service Development
SMS Service Development
Glossary
Getting Started with Network Navigator
Capturing Packets with tcpdump Using Network Packet Analysis
About This Kit
Introduction to Common Events
Subscribing to Common Events in Dynamic Mode
Unsubscribing from Common Events in Dynamic Mode
Publishing Common Events
Subscribing to Common Events in C
Unsubscribing from Common Events in C
Publishing Common Events in C
Common Event Service Terminology
Using Emitter for Inter-Thread Communication
System Account Introduction
Managing Application Accounts
USB Service Development Overview
USB Device Management
USB Control Transfer
USB Interrupt Transfer
USB Bulk Transfer
USB Isochronous Transfer
USB Serial Communication Development Overview
USB Serial Configuration Management
USB Serial Communication Management
FAQs
USB Service Glossary
Serial Port Communication Development
Sample Server Development Overview
Sample Server Development
Update Service Terminology
Requesting Permissions to Access the Pasteboard
Using the Pasteboard to Copy and Paste
Using the Pasteboard to Copy and Paste (C/C++)
Using the Delayed Copy and Paste Feature of the Pasteboard
Clipboard Glossary
Uploading and Downloading Application Files
Compressing and Decompressing Files
Overview of the Word Selection Service
Developing a Word Selection Extension Ability
Selection Service Terminology
Preventing the Idle System from Entering Sleep Mode
Printing Files (C/C++)
PrintExtensionAbility
About This Kit
Adding App Icons to the Status Bar
Adding App Icons to the Quick Bar
Glossary
About This Kit
Using Segment Map to Query and Maintain Range Information
Using RectPartition to Solve the Rectangular Partition Problem
Using PolyRoot to Solve Polynomial Roots
Using ConcurrentHashMap to Query and Maintain Key-Value Information in a Multithreaded Environment
Using DSP for Vector Computation
Using DSP for Second-Order IIR Filtering
Using DSP for FFT
Using HashMap to Manage Key-Value Data
Using Sort for Generic and Natural Language Sorting
Using mathPrediction for Mathematical Prediction
Using perfHint for System Performance Optimization (ArkTS)
Using perfHint for System Performance Optimization (C/C++)
Glossary
About This Kit
Function Flow Runtime Paradigms
Function Flow Runtime Serial Queue (C)
Function Flow Runtime Concurrent Queue (C)
Function Flow Runtime Task Graph (C)
Function Flow Runtime Serial Queue (C++)
Function Flow Runtime Concurrent Queue (C++)
Function Flow Runtime Task Graph (C++)
Function Flow Runtime Job Partner (C++)
Function Flow Runtime Development
Function Flow Runtime C APIs
Glossary
About This Kit
Input Device Development
Preferential Response of System Function Keys
Mouse Pointer Development
Event Listening Development (C/C++)
Event Interception Development (C/C++)
Glossary
About This Kit
MDM Kit Development
App Model
Multi-App Management
EnterpriseAdminExtensionAbility Development
Personal Data Processing Information
Glossary
Appendix
About This Kit
QoS Development
Gewu Service Development
Setting Thread Priorities in High-Load Scenarios
Glossary
About This Kit
Enabling Hotspot Accelerate
Glossary
About This Kit
Device Hardware Consistency Check
About This Kit
Development Preparations
Navigation Hop to Head Unit
Address Hop to Head Unit
Hop to Walking Navigation upon Vehicle Exit
Proactively Obtaining HiCar Connection Status
Listening to HiCar Connection Status
Connecting an App on Super Home Screen to the Distributed Camera
Glossary
About This Kit
Setting Up the Environment
UI-free Driver Development
UI-based Driver Development
USB DDK Development
HID DDK Development
USB Serial DDK Development
SCSI Peripheral DDK Development
FAQs
Glossary
About This Kit
Stationary Development
Motion Awareness Development
Device Status Awareness Development
Metadata Binding Development
Glossary
About This Kit
Integrating the Handwriting Suite
Integrating Point Prediction
Integrating Instant Shape
Integrating the Global Color Picker
Integrating Stylus Interaction
Connecting to Stylus Frame Boost
Integrating the Global Color Picker
Integrating Point Prediction
Connecting to Stylus Frame Boost
Does the Handwriting Suite of Pen Kit Support Custom Brushes?
Does the Handwriting Suite of Pen Kit Support Custom Brush Widths?
Does the Handwriting Suite of Pen Kit Support Custom Colors?
Can the Toolbar of the Handwriting Suite of Pen Kit Be Provided Separately?
Do I Need to Integrate the Point Prediction Feature of Pen Kit After the Handwriting Suite Has Been Integrated?
Do I Need to Integrate the Instant Shape Feature of Pen Kit After the Handwriting Suite Has Been Integrated?
Can I Adjust the Prediction Degree of the Point Prediction Feature of Pen Kit?
Why Does the Instant Shape Feature Fail to Recognize a Shape?
About This Kit
Sensor Overview
Sensor Development (ArkTS)
Sensor Development (C/C++)
Vibrator Overview
Vibrator Development (ArkTS)
Vibrator Development (C/C++)
Glossary
About This Kit
Object Tracking Photography Development
Glossary
About the Service
Use Cases
Applying for Integrating Wear Engine Kit
Configuring the Client ID
Querying Connected Wearables
Requesting User Authorization
Querying Wearable Device Information
Selecting a Target Device
App-to-App Message Communications
Querying and Subscribing to Status
Template-based Notifications on Wearables
Obtaining Wearable Device Sensor Data
Managing the Connection Status Between Your App and Wear Engine Kit
Querying Connected Peer Devices
App-to-App Message Communications
Debugging and Verification
If the Project Already Has an App ID, Do I Need to Apply for a New One?
How Do I Obtain the App Fingerprint?
Why Is the User Authorization Screen Not Displayed?
What Can I Do If Error Message "App has not applied for the Wear Engine service" is Reported During an API Call?
Why Is Data Not Reported Immediately After the HR Sensor Is Enabled?
Why Is 0 or 255 Reported by the HR Sensor?
Result code 206 is displayed when the phone is communicating with a lite wearable device
Why Is Error Code 1008500011 Displayed When a File Is Sent from the Phone-Side App to the Wearable-Side App?
Submitting a Ticket Online If You Cannot Find the Answer to Your Question
Personal Data Processing Information
Glossary
About This Kit
Preparations
Integrating AOD Navigation
Glossary
About This Kit
Overview
JS Crash (Process Crash) Detection
C++ Crash (Process Crash) Detection
Address Sanitizer Detection
Application Freeze Detection
Resource Leak Detection
Task Timeout Detection
Application Killed Detection
Page Switch Logs
Power Detection
Performance Detection
Using HiLog (ArkTS)
Using HiLog (C/C++)
Introduction to HiAppEvent
Event Subscription Overview
Event Subscription (ArkTS)
Event Subscription (C/C++)
Crash Event Overview
Subscribing to Crash Events (ArkTS)
Subscribing to Crash Events (C/C++)
Application Freeze Event Overview
Subscribing to Application Freeze Events (ArkTS)
Subscribing to Application Freeze Events (C/C++)
App Freeze Warning Event Overview
Subscribing to App Freeze Warning Events (ArkTS)
Subscribing to App Freeze Warning Events (C/C++)
Resource Leak Event Overview
Subscribing to Resource Leak Events (ArkTS)
Subscribing to Resource Leak Events (C/C++)
Address Sanitizer Event Overview
Subscribing to Address Sanitizer Events (ArkTS)
Subscribing to Address Sanitizer Events (C/C++)
Main Thread Jank Event Overview
Subscribing to Main Thread Jank Events (ArkTS)
Subscribing to Main Thread Jank Events (C/C++)
Task Execution Timeout Event Overview
Subscribing to Task Execution Timeout Events (ArkTS)
Subscribing to Task Execution Timeout Events (C/C++)
Application Killed Event Overview
Subscribing to Application Killed Events (ArkTS)
Subscribing to Application Killed Events (C/C++)
ArkWeb Fling Jank Event Overview
Subscribing to ArkWeb Fling Jank Events (ArkTS)
Introduction to Time-Consuming Launch Events
Subscribing to Time-Consuming Launch Events (ArkTS)
Subscribing to Time-Consuming Launch Events (C/C++)
Introduction to Scrolling Frame Loss Events
Subscribing to Scrolling Frame Loss Events (ArkTS)
Subscribing to Scrolling Frame Loss Events (C/C++)
Introduction to High CPU Load Events
Subscribing to High CPU Load Events (ArkTS)
Introduction to Battery Usage Statistics Events
Subscribing to Battery Usage Statistics Events (ArkTS)
Introduction to Audio Jank Events
Subscribing to Audio Jank Events (ArkTS)
Subscribing to Audio Jank Events (C/C++)
HiAppEvent FAQs
Using FaultLogExtensionAbility to Subscribe to Events
Introduction to HiTraceMeter
Using HiTraceMeter (ArkTS)
Using HiTraceMeter (C/C++)
Viewing HiTraceMeter Logs
Introduction to HiTraceChain
Using HiTraceChain (ArkTS)
Using HiTraceChain (C/C++)
Using HiChecker (ArkTS)
Introduction to HiDebug
Using HiDebug APIs (ArkTS)
Using HiDebug APIs (C/C++)
Using HiCollie to Detect Service Thread Stuck and Jank Events (C/C++)
Using HiCollie to Detect Function Execution Timeout Events (C/C++)
Development of Error Manager
Development of Application Recovery
App Gray-scale Data Collection Overview
Using HiRetrieval for App Gray-Scale Data Collection (ArkTS)
Glossary
Personal Data Processing Statement
About This Kit
JsUnit User Guide
UITest User Guide
PerfTest User Guide
SmartPerf Device User Guide
wukong User Guide
About This Kit
hdc
Ability Assistant
Bundle Manager
Packing Tool
Unpacking Tool
App Check Tool
Common Event Manager
Advanced Notification Manager
Enterprise Device Manager
restool
param
power-shell
Access Token Manager
network-cfg
hilog
hilogtool
hidumper
PrivacyManagerService
hitrace
hiperf
hiprofiler
uinput
Toybox
mediatool
devicedebug
rawheap-translator
js-rawheap-translator
SourceMap Splitter
netcopilot
Binary Sign Tool
Media Development at a Glance
Using HDR Vivid in Media Applications
About This Kit
Audio Focus and Audio Session Overview
Introduction to Audio Focus
Audio Session Management (ArkTS)
Using OHAudio for Audio Session (C/C++)
Audio Playback Development
Choosing the Right Playback Stream Type
(Recommended) Using OHAudio for Audio Playback (C/C++)
Using AudioRenderer for Audio Playback (ArkTS)
Low-Latency Audio Playback (C/C++)
Low-Power Audio Playback
Using AudioHaptic for Audio-Haptic Playback (ArkTS)
Using SoundPlayer for System Sound Effect Playback
Volume Management
Spatial Audio Capability Query and Status Subscription
Audio Playback Stream Management
Audio Recording Development
Choosing the Right Recording Stream Type
(Recommended) Using OHAudio for Audio Recording (C/C++)
Using AudioCapturer for Audio Recording (ArkTS)
Low-Latency Audio Recording (C/C++)
Implementing Background Recording
System Audio Recording Overview and API Selection
Implementing System Audio Recording
Managing Microphone Mute State
Querying and Listening for the Recording Status of Other Applications
Recording Concurrency Strategy Description
Implementing Custom Audio Monitoring
Implementing Low-Latency Audio Monitoring
Querying and Listening for Audio Input Devices
Querying and Listening for Audio Output Devices
Switching Audio Input Devices
Switching Audio Output Devices
Handling Output Device Changes Gracefully
Audio Call Overview
Developing Audio Call
Enhancing Audio Performance Experience
Audio Workgroup Management
Audio Creation Overview (C/C++)
Offline Editing (C/C++)
Real-Time Preview (C/C++)
Audio Format Conversion (C/C++)
Spatial Audio Rendering (C/C++)
Audio Effects (C/C++)
OH_MIDI Overview (C/C++)
Using OH_MIDI for MIDI Development (C/C++)
Switching from OpenSL ES to OHAudio (C/C++)
Using OpenSL ES for Audio Playback (C/C++)
Using OpenSL ES for Audio Recording (C/C++)
Using Audio Snapshots for Troubleshooting
Troubleshooting Silent Playback Issues
Troubleshooting Audio Playback Stuttering and Noise Issues
Troubleshooting Silent Recording Issues
Glossary
About This Kit
AVCodec Supported Formats
Obtaining Supported Codecs
Audio Encoding
Synchronous Audio Encoding
Audio Decoding
Synchronous Audio Decoding
Video Encoding
Synchronous Video Encoding
Temporally Scalable Video Coding
B-Frame Video Encoding
Video Encoding Configurations for Typical Scenarios
ROI Video Encoding
Encoding with One Input and Dual Outputs
Encoding with Preprocessing
Video Decoding
Synchronous Video Decoding
Intelligent Smooth High-Speed Playback Decoding
Video Variable Frame Rate
Introduction to Audio Vivid Capabilities
Audio Vivid Demultiplexing
Audio Vivid Decoding
Audio Vivid Encoding
Audio Vivid Playback
HDR Vivid Video Playback
HDR Vivid Video Recording
Converting HDR Vivid to SDR Videos
Media Data Multiplexing
Media Data Demultiplexing
Decoded Video Playback Control in Surface Mode
A/V Synchronization
Rendering Video Frames
HDR Vivid Video Playback and Recording
HDR Vivid-to-SDR Video Transcoding
Video Transcoding in Buffer Mode
Video Encoding in Surface Mode
Concurrently Creating a Video Decoder and Initializing NativeWindow
Video Codec Width, Height, Stride, and Crop Information
About This Kit
Local AVSession Overview
AVSession Provider (ArkTS)
AVSession Provider (C/C++)
Accessing AVSession
Background Playback
Integrating the Lyrics Component
AVSession Controller
Switching Call Devices Using Components
Introduction to Playback Control
AVCastPicker Development
Extended Screen Casting Development
Checklist for Playback Control Access
Basic Playback Controls
Quick Playback
Audio/Video Casting
Audio Recommendations
Customizing the Display Layout of Control Buttons in the Media Controller
Using the Audio Template
Local Media Session FAQs
Common FAQs About Distributed Media Sessions
FAQs About Using AVCastPicker
FAQs About Using AVCastPickerHelper APIs
Glossary
About This Kit
Requesting Camera Development Permissions
Camera Device Management (ArkTS)
Device Input Management (ArkTS)
Camera Session Management (ArkTS)
Using the System Camera to Take Photos and Record Videos (CameraPicker)
Preview (ArkTS)
Dual-Channel Preview (ArkTS)
Photo Capture (ArkTS)
Photo Capture Practices (ArkTS)
Video Recording (ArkTS)
Video Recording Practices (ArkTS)
Metadata (ArkTS)
Using the Flashlight (ArkTS)
Adapting Camera Changes in Different Fold States (ArkTS)
Deferred Photo Delivery (ArkTS)
Deferred Photo Delivery Practices (ArkTS)
Moving Photos (ArkTS)
Basic Camera Animation (ArkTS)
Using the Camera in the Worker Thread (ArkTS)
Practices for Camera Recovery from the Background (ArkTS)
Practices for Automatic Camera Switching (ArkTS)
White Balance Settings (ArkTS)
Pressure Management (ArkTS)
Camera Controller (ArkTS)
Macro Photography Settings (ArkTS)
Multi-Camera Concurrent Mode (ArkTS)
YUV Photo Capture (ArkTS)
Focus (ArkTS)
Adjusting Camera Rotation Angles (ArkTS)
Understanding Camera Rotation Terminology
Secure Mode Camera (ArkTS)
Dynamically Adjusting the Preview Frame Rate (ArkTS)
Using Camera Preconfiguration (ArkTS)
HDR Vivid Photo Capture (ArkTS)
HDR Vivid Camera Recording (ArkTS)
Solution to Screen Artifacts During Camera Preview
Camera Device Management (C/C++)
Device Input Management (C/C++)
Camera Session Management (C/C++)
Preview (C/C++)
Secondary Processing of Preview Streams (C/C++)
Photo Capture (C/C++)
Photo Capture Practices (C/C++)
Deferred Photo Delivery (C/C++)
Video Recording (C/C++)
Video Recording Practices (C/C++)
Camera Metadata (C/C++)
Using the Flashlight (C++)
Pressure Management (C/C++)
Macro Photography Settings (C/C++)
Multi-Camera Concurrent Mode (C/C++)
YUV Photo Capture (C/C++)
Focus (C/C++)
Adjusting Camera Rotation Angles (C/C++)
Understanding Camera Rotation Terminology
Dynamically Adjusting the Preview Frame Rate (C/C++)
Using Camera Preconfiguration (C/C++)
Camera API Call Sequence Issues
Camera Preview Stream Startup Issues
Session Configuration Issues
Camera Preview Rotation Issues
White Balance Issues
Color Space Configuration Issues
Glossary
About This Kit
DRM Development (ArkTS)
DRM Development (C/C++)
DRM Playback with AVPlayer (ArkTS)
DRM Playback with AVCodec (C/C++)
About This Kit
Using ImageSource to Decode Images
Using ImageSource to Decode Pictures
Image Decoding Memory Optimization (ArkTS)
Image Region Decoding and Downsampling (ArkTS)
Using ImageSource to Obtain RAW Data
Using ImagePacker to Encode Images
Using ImagePacker to Encode Pictures
Using PixelMap to Transform Images
Using PixelMap for PixelMap Operations
Using VideoProcessingEngine to Upscale Images
Reading and Editing Image Exif Data
Reading and Editing Image XMP Metadata
Using ImageSource to Obtain Specific Metadata
Using ImageReceiver to Receive Images
Using Image_NativeModule to Decode Images
Using Image_NativeModule to Decode Pictures
Image Decoding Memory Optimization (C/C++)
Image Region Decoding and Downsampling (C/C++)
Using Image_NativeModule to Decode Animated Images
Using Image_NativeModule to Decode HDR Images
Using Image_NativeModule to Encode Images
Using Image_NativeModule to Encode Pictures
Using Image_NativeModule for PixelMap Operations
Using ImageEffect to Edit Images
Scaling Images
Dynamic Metadata Generation for Images
Color Space Conversion for Images
Converting HDR Images from Single-Layer to Dual-Layer
Converting HDR Images from Dual-Layer to Single-Layer
Using Image_NativeModule to Read and Edit Image Exif Data
Using Image_NativeModule to Receive Images
Handling HEIF Images
Obtaining the Rotation Angle of an Image
Image Kit Exception Handling
Common Crash and Error Issues
Image Decoding
Image Encoding
Image Transformation
PixelMap Operation
Image Receiving
Glossary
About This Kit
Using AVPlayer to Play Audio (ArkTS)
Using AVPlayer to Play Videos (ArkTS)
Using AVPlayer to Set Playback URLs (ArkTS)
Using AVPlayer to Play Streaming Media (ArkTS)
Using AVPlayer to Add External Subtitles to Videos (ArkTS)
Using SoundPool to Play Short Sounds (ArkTS)
Using AVRecorder to Record Audio (ArkTS)
Using AVRecorder to Record Videos (ArkTS)
Using AVScreenCaptureRecorder to Record Screens and Write Them to Files (ArkTS)
Using AVMetadataExtractor to Extract Audio and Video Metadata (ArkTS)
Using AVImageGenerator to Extract Video Images at a Specified Time (ArkTS)
Using AVTranscoder to Transcode Videos (ArkTS)
Creating an Asynchronous Thread for AVTranscoder Video Transcoding (ArkTS)
Transcoding FAQs
Long-Form Video Playback with AVPlayer
Short-Form Video Playback with AVPlayer
Embedded Short-Form Video Playback with AVPlayer
Online Video Playback with AVPlayer
Minimizing Stuttering in Online Video Playback
Obtaining Video Thumbnails Using System Capabilities
Screen Recording Based on AVScreenCapture (ArkTS)
Using AVPlayer to Play Audio (C/C++)
Using AVPlayer to Play Videos (C/C++)
Using AVPlayer to Play Streaming Media (C/C++)
Using LPP to Play Videos (C/C++)
Using AVRecorder to Record Audio (C/C++)
Using AVRecorder to Record Videos (C/C++)
Using AVScreenCapture in Basic Scenarios
Using AVScreenCapture in Custom Scenarios
Screen Capture FAQs
Using AVScreenCapture to Capture Screens and Write Them to Files (C/C++)
Using AVScreenCapture to Capture Window-Level Screen (C/C++)
Capturing the Specified Area on a Screen
Using AVMetadataExtractor to Obtain Metadata (C/C++)
Using AVImageGenerator to Obtain Video Frames (C/C++)
Using AVTranscoder to Transcode Videos (C/C++)
Video Scaling
Video Dynamic Metadata Generation
Video Color Space Conversion
Screen Recording Based on AVScreenCapture (C/C++)
Glossary
About This Kit
Selecting Media Assets Using Picker
Saving Media Assets
Accessing Images/Videos Using PhotoPickerComponent
Accessing Albums Using AlbumPickerComponent
Obtaining the Latest Image/Video Using RecentPhotoComponent
Using PickerController to Replace Original Images with Edited Images
Recommending Images Using the Photo Picker
Accessing and Managing Moving Photos
Playing Moving Photos with MovingPhotoView
Inheriting Media File Access Permissions After Device Upgrade
Before You Start
Managing Media Assets
Managing User Albums
Managing System Albums
Observing Media Assets
Requesting Media Assets Using MediaAssetManager (C/C++)
Obtaining and Storing Images
How to Properly Manage Media Assets
How to Correctly Identify Media Asset Types
Geolocation Information Is Missing from Images
How to Properly Handle High-Resolution Images
Glossary
About This Kit
Setting a Ringtone
About This Kit
Getting Started
Scan-to-Access Capability
Barcode Scan by Default UI
Barcode Scanning by Custom UI
Scanning Barcodes in a Saved Image
Recognizing Barcodes in Image Data
Generating a Barcode Image from Text
Generating a Barcode Image from a Byte Array
How Do I Add a Quick Entry for the Scan-to-Access Service?
Failed to Open the Target Page Through Scan-to-Access
Scan Kit Cannot Recognize Multiple Barcodes at a Time
Device Types in Uploaded Package Inconsistent with Declared Device Types During Package Upload
Multi-Barcode Scanning Failed During Gallery-based Barcode Scanning by Default UI
1D Code Recognition Failure
Recognized Coordinate Information of a 1D Code Is Empty
Scanning Preview Image on Custom UI Stretched
Black Screen Occurred on the Custom Scanning UI
How Do I Scan Barcodes Continuously on the Custom Scanning UI?
Failure to Recognize a Barcode Image Generated from a Byte Array
How Do I Determine Whether Scanning is Canceled on the Default Scanning UI?
How Do I Integrate Scan Kit for HTML5
How Do I Implement Zoom Ratio Change Through Gestures?
How Do I Implement the Barcode Scanning Box on a Custom UI?
Experience Design Problem on the Default/Custom Barcode Scanning UI
How Do I Implement the Retry Mechanism for Barcode Scanning by Custom UI?
App Occasionally Exits When a User Attempts to Recognize a Barcode from a Saved Image on the Custom Barcode Scanning UI
How Do I Set the Background Color of a Barcode Image to Transparent?
Glossary
Personal Data Processing Information
About This Kit
Preparations
Introduction
Managing AR Sessions (ArkTS)
Managing AR Sessions (C/C++)
Introduction
Obtaining the Device Pose (ArkTS)
Obtaining the Device Pose (C/C++)
Introduction
Detecting Planes in the Environment (ArkTS)
Detecting Planes in the Environment (C/C++)
Introduction
Placing Objects (ArkTS)
Placing Objects (C/C++)
Introduction
Recognizing Plane Semantics (ArkTS)
Recognizing Plane Semantics (C/C++)
Introduction
Recognizing the Target Shape (C/C++)
Introduction
Obtaining Mesh Scanning Information (ArkTS)
Obtaining Mesh Scanning Information (C/C++)
Introduction
Obtaining Depth Estimation Information (ArkTS)
Obtaining the Depth Image (C/C++)
Introduction
High-Precision Geometric Reconstruction (ArkTS)
High-Precision Geometric Reconstruction (C/C++)
Introduction
Human Body Tracking and Skeleton Keypoint Recognition (ArkTS)
Human Body Tracking and Skeleton Keypoint Recognition (C/C++)
Introduction
Face Tracking (ArkTS)
Face Tracking (C/C++)
Introduction
Image Tracking (ArkTS)
Image Tracking (C/C++)
Error Message "plane is nullptr!" Is Reported with the Error Code 401 When I Attempt to Obtain the 2D Vertex Coordinate Array of the Detected Plane
When the Camera Is Blocked for a Period of Time and Then Uncovered, the Output Pose Changes Dramatically
Unable to Recognize Planes in Scenarios with Reflections, Dim Lights, or Weak Textures (Where There Is Little Color Variation in the Input Images)
The Plane Drifts or Pose Data Changes Abruptly in Certain Special Scenarios (Such as When a Strong Magnetic Field Is Nearby, the Phone Is Overheated, or When Duplicate Textures Are Scanned)
Data Type Conversion
Glossary
Personal Data Processing Information
Appendix
About This Kit
Introduction to Variable Frame Rates
Requesting Frame Rates for Animations
Requesting Frame Rates for UI Components
Requesting Frame Rates for Custom Content
Native DisplaySoloist Development (C/C++)
Overdraw Debugging
Overview of Graphics Drawing and Display
Obtaining a Canvas and Displaying Drawing Results (ArkTS)
Obtaining a Canvas and Displaying Drawing Results (C/C++)
Canvas Operations and State Processing (ArkTS)
Canvas Operations and State Processing (C/C++)
Overview of Drawing Effects
Basic Drawing Effects (ArkTS)
Complex Drawing Effects (ArkTS)
Basic Drawing Effects (C/C++)
Complex Drawing Effects (C/C++)
Drawing Primitives
Drawing Geometric Shapes (ArkTS)
Drawing Images (ArkTS)
Drawing TextBlobs (ArkTS)
Drawing Geometric Shapes (C/C++)
Drawing Images (C/C++)
Drawing TextBlobs (C/C++)
Introduction to Text Development
Using Theme Fonts (ArkTS)
Registering and Using Custom Fonts (ArkTS)
Obtaining and Using System Fonts (ArkTS)
Using Theme Fonts (C/C++)
Registering and Using Custom Fonts (C/C++)
Obtaining and Using System Fonts (C/C++)
Text Measurement (ArkTS)
Text Measurement (C/C++)
Drawing and Displaying Simple Text (ArkTS)
Drawing and Displaying Complex Text (ArkTS)
Drawing and Displaying Custom Text (ArkTS)
Drawing and Displaying Simple Text (C/C++)
Drawing and Displaying Complex Text (C/C++)
Drawing and Displaying Custom Text (C/C++)
Text Development FAQs
Adding Image Effects (C/C++)
NativeVSync Development (C/C++)
NativeBuffer Development (C/C++)
NativeImage Development (C/C++)
NativeWindow Development (C/C++)
GPU/CPU Memory Access Sync (C/C++)
Common Stability Issues with Graphics Buffers (C/C++)
Glossary
About This Kit
Setting Up and Managing Scenes
Creating and Using Material Resources
Creating and Using Image Resources
Creating and Using Environment Resources
Requirements on the .shader File Format
Controlling and Managing Scene Animations
Downloading and Installing the ArkGraphics Editor Plugin and Editor
About This Kit
Overview
Overview
OpenGL ES
Vulkan
Overview
OpenGL ES
Vulkan
Overview
OpenGL ES
Vulkan
Overview
OpenGL ES
Vulkan
Overview
Vulkan
Developing the ABR Capability
Developing the OpenGTX Capability
Overview
Development Preparations
Extension-Initiated System-Managed Download
Extension-Initiated Coordinated Download
Asset Download in the App Foreground
Asset Download Switching from the System Background to the App Foreground
Releasing an Asset Download Task
Viewing Asset Distribution Data
Development Preparations
Overview
Second-level Launch
Overview
Implementing Game Pre-launch
Development Preparations
Implementing the Game Buddy Service
What Are the Graphics APIs Supported by the Frame Generation and ABR Capabilities?
What Types of Devices Does This Kit Support?
What Are the Possible Causes of Serious Blurring Artifacts on the Edges of Moving Objects After the Extrapolation Mode of Frame Generation Is Enabled?
What Kinds of Buffers Are Suitable for the ABR Capability?
What Can I Do if the Rendering Effect of Other Passes Becomes Abnormal After the Buffer Resolution Is Adapted by the ABR Capability?
What Can I Do if the Native Texture Content Obtained from the Game Engine Is Empty After the ABR Capability Is Integrated?
What Types of Asset Formats Are Supported for Upload to Huawei CDNs?
What Can I Do If the Download Functions Do Not Take Effect Because the Component Type Is Not Configured for the Integrated Game Asset Acceleration ExtensionAbility?
What Can I Do If the Download Functions Do Not Take Effect Because the Network Permission Is Not Configured for the Integrated Game Asset Acceleration ExtensionAbility?
Why Do the Static Variables Used in Asset Acceleration ExtensionAbility Methods Not Take Effect?
How Do I Parse XML Files Corresponding to manifestUrl in the Huawei CDN Scenario?
Can I Only Access the Download ExtensionAbility Without Rewriting the Download Logic or Middleware in the Game Engine?
How Do I Use a Specified Test Device for Local Testing After Integrating the Asset Background Download Functions?
Is It Possible to Stop a Released Download Task, for Example, When I Encounter Issues with Assets?
Can I Apply for a Continuous Task for Seamless Game Running and Asset Download After the App Switches from the Foreground to the Background?
How Do I Integrate the Asset Background Download Functions If I Use Unity Addressables in My Game?
How Do I Avoid Full-Screen Incoming Call Notification for My Game Launched by Loading a Memory Snapshot?
What Can I Do If Vibration Occurs During Scene Switching After a User Swipes Up to Exit the Game?
What Can I Do If Third-Party SDK Functions Are Abnormal in a Game Launched from a Memory Snapshot?
What Can I Do If a Black Screen Is Displayed When the Game Calls UnityEngine.Application.Quit to Exit Through a Side Swipe?
What Can I Do If the Error Message "BusinessError: The Worker instance is not running, maybe worker is terminated when PostMessage" Is Frequently Recorded in Logs?
What Can I Do to Avoid Game Freezing upon Next Fast Launch if the Game Freezes Previously?
What Can I Do If an Error Similar to "UIContent is nullptr" Occurs After Second-Level Game Launch, Causing Sign-in and Other Exceptions?
What Can I Do If My Game Is Rejected for Failing to Implement Anti-addiction Reminders?
What Can I Do If the Splash Screen and the Resumed Game Audio Are Out of Sync During Second-Level Game Launch?
What Can I Do If My Game Cannot Perform Hot Updates After Second-Level Game Launch Is Enabled?
What Should I Do If an Exception Occurs When the Game Launch Acceleration API Is Called on a Tablet Running Tuanjie Engine 1.8.1 to 1.9.0?
What Should I Do If the Game Screenshot Callback Does Not Return a File Descriptor?
Glossary
About This Kit
Loading a 3DGS Model
Adding a Filter Effect
Reconstructing a 3D Scene (C/C++)
Managing Spatial Recon Kit Sessions
Glossary
About This Kit
Preparations
GPU Spatial Upscaling
AI Temporal Upscaling
AI Spatial Upscaling
Adaptive VRS
Subpass Shading
Ray-Traced Reflections
Ray-Traced Shadow and Ambient Occlusion
Ray-Traced Global Illumination
Control-Display Separation
High-Performance GPU Sorting
What Can I Do If an Extension Instance Fails to Be Created?
Can I Use Upscaling and Adaptive VRS Features at the Same Time?
Adaptive VRS Depth Attachment Instructions
Glossary
About This Kit
Management Rules for Using the Sign-in Capability of Account Kit
Requesting Scopes
Configuring Signing Information and Adding a Fingerprint
Configuring the Client ID
Overview
Signing In with HUAWEI ID Through Just One Tap (Obtaining the Mobile Number, UnionID, and OpenID)
Signing In with the HUAWEI ID Sign-In Button
Signing In with a Custom Button
Silently Signing In
Signing In After Authorization by QR Code Scanning
Overview
Obtaining the Avatar and Nickname
Obtaining the Mobile Number
Obtaining the Shipping Address
Obtaining the Invoice Title
Overview
Obtaining a User's Risk Level Through One-Tap HUAWEI ID Sign-in
Obtaining a User's Risk Level Through Other Ways for HUAWEI ID Sign-in
Obtaining the Real-Name Age Group
Overview
Following the Device's Youth Mode Status
Enabling the Youth Mode Within an App
(Recommended) Disabling the App's Youth Mode
Disabling the Device's Youth Mode
Adjusting Youth Mode Settings
Notification Events
1001500001 Fingerprint Certificate Verification Failure
1001502014 Necessary Scopes Not Requested
What Should I Do If the Anonymous Mobile Number Cannot Be Obtained in the One-Tap Sign-In Scenario?
What Should I Do If the Plaintext Mobile Number Cannot Be Obtained in the One-Tap Sign-In Scenario?
In the One-Tap Sign-In Scenario Where the App Displays the One-Tap Sign-In Screen, What Should the App Proceed If the User Signs Out of the HUAWEI ID or Switches to Another HUAWEI ID on the Device?
Is the UnionID/OpenID of a HUAWEI ID User or the Mobile Number Used as Their Unique Identifier During One-Tap Sign-In with a HUAWEI ID?
How to Exchange User Data Between HarmonyOS APK Apps and HarmonyOS NEXT Apps in the One-Tap Sign-In Scenario?
What Should I Do If the Avatar and Nickname Cannot Be Obtained?
Formats of OpenID and UnionID
What Are the Validity Periods of Access Token and Refresh Token?
What Are the Length Limits of Access Token and Refresh Token?
When and How Can I Use the ID Token?
What Can I Do If USB Debugging Is Unavailable After the Youth Mode Is Enabled?
Upon Receiving a Notification That the Device's Youth Mode Is Enabled, What Actions Should the App Take?
Integrating One-Tap HUAWEI ID Sign-In Using a Third-Party Development Framework
401 Parameter Check Failure
60180007 What Should I Do If the Server Cannot Obtain the One-tap Sign-in Mobile Number of a HUAWEI ID Through the Authorization Code?
1001502003 Invalid Input Parameter Value
Glossary
Personal Data Processing Information
Supported Countries/Regions
About This Kit
Glossary
Preparations
Overview
Banner Ads
Native Ads
Rewarded Ads
Interstitial Ads
Splash Ads
Roll Ads
Real-Time Bidding
Why Is a White Screen Displayed When an Ad Is Displayed?
What Are the Restrictions on Petal Publisher Center?
Why Is Error Code 801 Returned When a PC Requests or Displays an Ad?
OAID Service
Personal Data Processing Information
About This Kit
Overview
Integration Process
Enabling Relevant Services and Setting Parameters
Configuring an App
About Digital Products
Configuring Digital Products in AppGallery Connect
Configuring Digital Products Through the Server API
Displaying Digital Products
Purchasing Digital Products
Delivering Digital Products
Testing the Digital Product Service
Adding an Atomic Service Widget to the Home Screen
Displaying the App Details Page
Adding a Shortcut to the Home Screen
Querying an App Shortcut
Deleting an App Shortcut
On-Demand Feature Distribution (ArkTS)
On-Demand Feature Distribution (C/C++)
Ecosystem Query Service
Update on AppGallery
Development Overview
Registering an Enterprise Account
Managing Attribution Roles
Standard Conversion Events
Custom Conversion Events
Managing Attribution Policies
Registering Attribution Sources and Conversion Events
Posting Back the Attribution Result
Performing Debugging
Privacy Agreement Management Service
Dynamically Managing App Icons Through AppGallery Connect
Dynamically Switching App Icons
App Review Service
Can I Configure Multiple Callback URLs for Key Subscription Events in AppGallery Connect?
What Is the Maximum Length of the IAP Public Key Obtained in AppGallery Connect? Is There a Recommended Length?
I Try Adding a Product on the Product Management Page in AppGallery Connect, and See a Default Price When Setting My Product Price. What Is the Default Price Used for?
If I Manually Change an In-App Product's Price for a Specific Country/Region in AppGallery Connect, Will It Still Adjust with Future Exchange Rate Changes?
Has AppGallery Connect Made Any Numerical Adjustments to the Price Displayed on the Product Management Page, for Example, Changing the Second Decimal Place of a Price to 6 or 9 According to Relevant Rules?
Is the SHA-256 Certificate Mandatory for Signature Verification?
Can Signature Verification Be Performed Entirely on the Server Side?
Is There Only One UI Design for the Payment Screen?
Can the ID of a Deleted Product Be Used Again for a New Product?
How Many Certificates Are Supported by the Digital Product Server?
What Cipher Suites Are Supported by the Digital Product Server?
What Order Statuses Are Supported by the Digital Product Service?
What Are the Rules for Renewal Periods of a Subscription?
Does a One-Month Subscription Renewal Period Refer to 30 Days, 31 Days, or a Calendar Month? Similarly, How Many Days Are Included in Two Months and Three Months?
Does February Have 28 or 29 Days When the Subscription Period Is Calculated by Calendar Month?
Why Does an Atomic Service Widget Fail to Be Displayed on AppGallery?
Why Do the Dynamic Modules Fail to Be Loaded in the On-Demand Loading Scenario?
Can the Module Loaded on Demand Be Released or Updated on AppGallery Separately?
If the App Restarts After a Module Is Loaded, Does the Module Remain Loaded? Is It Necessary to Re-initiate an On-Demand Loading Request?
In the On-Demand Loading Scenario, Can a User Uninstall a Specified Module That Has Been Loaded and Initiate a Request Again?
Is Synchronous Loading of Dependencies Supported in On-Demand Loading Scenarios?
Does the On-Demand Loading Scenario Support Multiple Tasks at the Same Time?
If an App Is Updated on AppGallery After On-Demand Loading Succeeds, Does On-Demand Loading Need to Be Triggered Again?
Why Does Redirection to a Dynamic Module Page Fail After On-Demand Loading Succeeds?
How Can I Quickly Debug the On-Demand Feature Distribution Function in My App When It Has Not Been Released on AppGallery?
Why Is the Scene Value Obtained Through the Ecosystem Query Service Empty?
Why Does the Update on AppGallery Feature Throw an Exception Indicating that the App Is Not Running in the Foreground?
Can I Customize the Content in the App Update Pop-up Displayed to Users?
Why Does an Identity Verification Error Occur When I Call the Attribution Source Registration API of the App Attribution Service?
How Do I Obtain Logs of the App Attribution Service Through Filtering?
How Do I Filter Logs Recording the Addition of App Shortcuts to the Home Screen?
What Can I Do If Error Code 401 Is Returned When an App Shortcut Is Added to the Home Screen?
Standard Conversion Events and App Attribution Signatures
Supported Countries/Regions
Scene Values
Glossary
About This Kit
Making Preparations
Enabling App Linking
Starting an App Using the App Link Capability of App Linking
Redirecting to an App Download Page Through Direct Access to AppGallery
Redirecting to an App Details Page Using the Deferred Link Capability
Redirecting to an App in a Specified Way Using the Cross-Platform Link Capability
Glossary
About This Kit
Calendar Management
Event Management
Registering and Managing One-Tap Services for Calendar Events
Calendar Service Best Practices
About This Kit
Preparations
Incoming Call
Outgoing Call
Displaying Enterprise Contact Information on the Incoming or Outgoing Call Screen
Displaying Enterprise Service Information on the Incoming or Outgoing Call Screen
Redirecting to the Unknown Number and Information Identification Page
Why Is the Notification Banner Not Displayed?
Why Is the Profile Picture Not Displayed in the Notification Banner?
About This Kit
Making Preparations
Enabling Cloud Functions
Enabling Cloud DB
Enabling Cloud Storage
Node.js
Creating a Function
Testing a Function
Calling a Function
Adding an Object Type
Adding a Cloud DB Zone
Importing an Object Type File
Initializing Database Access
Querying Data
Writing Data
Deleting Data
Setting Configuration Items of Cloud Storage
Initializing the Global App Context
Initializing a Storage Instance
Uploading a Specified File to the Cloud
Downloading a File from the Cloud to a Local Path
Obtaining the Download URL of a Cloud File
Deleting a Cloud File
Obtaining the Cloud File List
Obtaining Metadata of a Cloud File
Setting Metadata of a Cloud File
Debugging on the Emulator
Why Is "404:Product does not exist" Displayed When a File Fails to Be Uploaded Using Cloud Storage?
Why Does the App Log Display ""state":65" and the Upload Process Log Display "403 Forbidden" When a File Fails to Be Uploaded Using Cloud Storage?
What Can I Do If an API of Cloud Storage Fails to Be Called, the App Log Displays ""state":65", and the Upload Process Log Displays "404 Not Found"?
Glossary
Personal Data Processing Information
Supported Countries/Regions
About This Kit
Using the Picker for Contact Management
About This Kit
Preparations
File Exfiltration Control
Workspace Management
Workspace Configuration
Subscribing to Workspace Events
Process Access Restriction
Deep Freeze Policy
Enterprise Account Authentication
Cross-Workspace Message Notification
FAQs
Glossary
About This Kit
Moving a File to the Recycle Bin
Obtaining a File Icon
Parsing a File Shortcut
Glossary
About This Kit
Listening for Device Online/Offline Events (C/C++)
Listening for Gamepad Axis and Button Events (C/C++)
Glossary
About This Kit
Overview
Overview
(Mandatory) Sign-In with a HUAWEI ID
Sign-In with an Official Game Account
Standalone Game Sign-In
Pre-release Check
Overview
Preparations
(Mandatory) Mini Game Sign-In
Payment in Mini Games
Glossary
Overview
Preparations
Development Procedure (ArkTS)
Development Procedure (C/C++)
Glossary
Overview
Preparations
Transferring Resource Packages
Transferring Installation Packages
Glossary
Personal Data Processing Information
Can I Skip App ID Mapping If My Game Does Not Have a Package for HarmonyOS 4 and Earlier?
What Is the Size Limit for Official Game Account Icons?
How Do I Hide the Official Account Sign-In Option on the Game Sign-In Screen?
What Should a Player Do If They Choose an Incorrect Sign-In Account?
Can I Integrate Game Scene Perception into Games Developed Through C# Programming?
Configuring a Callback Address
Obtaining the Game Key
About This Kit
Integration Process
Qualification Requirements for Developers
Open Data Overview
Applying for Health Service Kit
Configuring the Client ID
Launching HUAWEI Health for Users to Agree to the Privacy Statement
Managing User Authorization
Managing Data Sources
Health and Fitness Sample Data
Workout Records
Health Records
Real-Time Activity Rings Data
Manually Synchronizing Data
Managing User Authorization
Reading Health and Fitness Sample Data
Reading Workout Records
Reading Health Records
Real-Time Activity Rings Data
Managing User Authorization
Managing Workout Linkage
Overview
Permission Description
Daily Activities
Heart Rate
SpO2
Stress
Body Temperature
Blood Pressure
Weight
Height
Emotion
Heart Rate Variability
Overview
Running
Walking
Cycling
Jump Rope
Expedition
Basketball
Skiing
Apnea Testing in Diving
Apnea Training in Diving
Diving
Elliptical Machine
Golf
Mountain Hiking
Swimming
Rowing Machine
Others
Sleep
Menstrual Cycle
Applying for Formal Scopes
FAQs About Health Service Kit
Glossary
Personal Data Processing Information
Specifications for Using Logos
About This Kit
Requirements and Restrictions on IAP Kit Integration
(Optional) Using the IAP Kit Integration Skill
Getting Started
Enabling Merchant Service
Creating a Project and App
Enabling and Activating IAP Kit
(Optional) Requesting the Embedded Checkout Open Capability
(Optional) Setting Necessary Parameters
Configuring Products
Configuring Signing Information
Configuring App Identity Information
Implementing the Purchase Process
Delivering a Consumable/Non-consumable Product
Understanding Auto-renewable Subscriptions
Implementing the Purchase Process
Delivering an Auto-renewable Subscription Product
Implementing the Purchase Process
Delivering a Non-renewable Subscription Product
Sandbox Testing
Benefit Analysis and Reports
Refunding
Issuing an Invoice
Can I Set Multiple Addresses for Receiving Key Events in AppGallery Connect?
What Is the Maximum Length of the IAP Public Key Obtained in AppGallery Connect? Is There a Recommended Length?
I Try Adding a Product on the Product Management Page in AppGallery Connect, and See a Default Price When Setting My Product Price. What's the Default Price Used for?
If the Price of an In-App Product in a Country/Region Is Changed in AppGallery Connect, Will the Price Be Affected When the Exchange Rate Changes Later?
Has AppGallery Connect Made Any Numerical Adjustments to the Price Display on the Product Management Page? For Example, Has It Adjusted the Second Decimal Place to 6 or 9?
Is the SHA-256 Certificate Mandatory for Signature Verification?
Can Signature Verification Be Performed Entirely on the Server Side?
Can the ID of a Deleted Product Be Used Again for a New Product?
What Certificates Are Supported by the Huawei IAP Server?
What Cipher Suites Are Supported by the Huawei IAP Server?
How Do I Fix the Error of an Incomplete Certificate Chain?
When an App Calls createPurchase to Launch the IAP Kit's Checkout Screen from a Child Window, the Child Window Will Be Hidden. Is This Normal?
Why Am I Asked for Real Payment When Testing in the Sandbox Environment?
Can I Use the Same API Key for a HarmonyOS Atomic Service and a HarmonyOS App?
What Are the Maximum Lengths of purchaseToken and purchaseOrderId?
What Are subGroupId (Subscription Group ID), subGroupGenerationId (Subscription Group Generation ID), and subscriptionId (Subscription ID)?
How to Handle and Use developerPayload?
How to Troubleshoot JWT Signature Verification Failures After App Migration?
How to Calculate the Validity Period for New Subscriptions upon Immediate Switch of Auto-Renewable Subscriptions?
Glossary
Global Coverage of IAP Kit
About This Kit
Live View Design Specifications
Basic Preparations
Enabling Push Kit
Setting the Data Processing Location
Enabling Live View Kit
Performing Debugging
Applying for the Formal Permission on Live View Kit
Precautions
Creating a Local Live View
Updating a Live View Through Push Kit
Frequency Control for Live View Updates
Third-Party Development Framework Access
Live View Lifecycle
Live View Template Use
Restrictions on the Number of Live Views
Glossary
Introduction to Location Kit
Applying for Location Permissions
Obtaining Device Location Information (ArkTS)
Obtaining Device Location Information (C/C++)
Geocoding and Reverse Geocoding
Geofence Development
Introduction to Geofencing
On-Device GNSS Geofence Development
Personal Data Processing Statement
Samples
Appendix
About This Kit
Preparations
Displaying a Map
Changing the Map Type
Showing My Location
Displaying a Custom Map
Control Interaction
Gesture Interaction
Event Interaction
Map Location Change
Map Screenshot
Marker
MapPolyline
Signal Line
MapArc
MapPolygon
MapCircle
PointAnnotation
Bubble
ClusterOverlay
ImageOverlay
BuildingOverlay
TraceOverlay
Setting the Layering Order of Map Elements
TileOverlay
Heatmap
MvtOverlay
FlowFieldOverlay
MassPointOverlay
POI Search
Geocoding
Travel Route Planning
Batch Route Computation
Trajectory-based Road Snapping
Static Map
Place Details Display
Location Selection
Administrative Division Selection
Navigation and Other Capabilities Provided by the Map App
Offline Map
Coordinate Rectification
Distance Calculation
Map Not Displayed
How to Obtain siteId?
Gestures Freeze or Do Not Work
Configuring the Persistent Display of the Map Logo
Effective Scope of Scenario-based Controls' language Parameter
Personal Data Processing Information
Preparations Before Release - Obtaining the Map Service Agreement and Qualification Certificate
Map Data Copyright Statement
Supported Languages
Supported Countries/Regions
Glossary
About This Kit
Requesting Notification Authorization
Managing the Notification Badge
Managing Notification Slots
Publishing a Text Notification
Publishing a Progress Notification
Adding a Custom Ringtone to a Notification
Adding a WantAgent Object to a Notification
Updating a Notification
Canceling a Notification
Cross-Device Notification Overview
Clearing Repeated Notifications Across Devices
Introduction to NotificationSubscriberExtensionAbility
Developing the ExtensionAbility for Notification Subscription
Glossary
Applying for Priority Notification Entitlement
Developing a Shortcut to In-App Notification Settings
About This Kit
Integration Specifications
Skill Integration Description
Checkout Screen Design Specifications
Registering a Merchant and Obtaining the Merchant ID
(Optional) Configuration in Specific Scenarios
Enabling Payment Kit
Binding a Merchant ID to an App ID
Preparing the Certificates
On-Device App Configuration
Cloud Service Preparation
(Optional) Preparing for e-CNY Payment Integration
(Optional) Preparing for Integrating the User Identity Verification Service
Basic Payment Scenario
Combined Payment for Platform Merchants
PIN-free Payment Description
Payment with Contract Signing Scenario
Contracted Auto-Debit Scenario
e-CNY Payment Scenario
Service Rule Description
Mixed Payment Scenario
External Payment Scenario
Based on URL Redirection
Based on the API
Third-Party Payment Troubleshooting
Scenario of Guiding Users to Bind Cards
Real-Name Information Verification/Authorization Scenario
Face-based Identity Verification Scenario
Viewing Call Records of the Identity Verification Service
Sandbox Environment Verification
Merchant Coupon Scenario
Coupon Claiming Scenario
Coupon Selection Scenario
Glossary
Service and Support
In Which Scenarios Are Request Parameter Signing and Result Signature Verification Used During Integration Development?
How Can I Obtain the Public/Private Key Pair for Signing of Payment Kit?
Who Is the bodySign of a GET Request Signed For?
What Should I Do If the Checkout Screen Does Not Respond or An Error Is Reported?
Why Is No Callback Received After Successful Payment?
Will Multiple Signed Contracts Be Generated If a User Signs a Contract Repeatedly?
Where Can the PIN-free Payment Contract Signed in Huawei Pay Be Terminated?
Why Is SHA256 Used for Signature Verification of the Pre-Ordering Request, But SM2 Is Used for Signature Verification of the Payment Callback? Can Only SM2 Be Used for Signature Verification?
What Should I Do If an Error Indicating Invalid Signature Is Reported in the API Response?
What Should I Do If the Checkout Screen Displays an Error Message Indicating Service Unavailability and Asking Me to Try Again Later?
What Should I Do If an Error Indicating Abnormal Transaction Order Status Is Reported for the Pre-ordering Request?
Can prepayId Be Queried Through an API If the Payment Is Made in a Period of Time After Pre-ordering?
Can the callbackUrl Parameter in Some APIs that Provide Notification Callback Be Customized? Can a Merchant Customize the Callback Notification Packet?
What Can I Do If Multiple Callback Notifications Are Received for the Same Payment Request?
Does the Callback Notification API Provided by the Merchant Need to Be Added to the Network Trustlist in the Payment Kit Production Environment? How Do I Verify That the Provided Callback URL Can Be Properly Accessed by the Payment Kit Server?
Why Does the Payment Callback Contain the Marketing Information When the Merchant Does Not Pass the Marketing Information?
Can the Same Merchant ID, Certificate, Key, and Other Input Parameters Except for appId Be Used for the App and Atomic Service APIs?
Is There an Environment for Jointly Debugging the Access of Registered Merchants?
What Is the Relationship Between callerId in the Request Header PayMercAuth and mercNo or combineMercNo in the Request Body?
Will the Signature Be Verified for API Request If the bodySign Field in the Request Header PayMercAuth Is Empty? Or, Will the Field Be Verified First?
Why Is 000000 Returned and Refund Amount Not Received When a Refund Request Is Initiated Repeatedly with the Same Merchant Order ID?
In Addition to the Refund API in the Integration Guide, Is There Any Financial Platform Available for Refund Operations in Payment Kit? Can Refund Be Requested on Such a Platform?
What Format Should Be Used to Parse the Date After a Bill File Is Downloaded?
What Should I Do If an Error Is Reported During Checkout, Indicating App Information Verification Failure and Asking Me to Contact the Merchant?
Why Is an Entity Inconsistency Message Displayed When a Merchant ID Is Bound to an App ID?
How Can I Contact the Operating Organization or Handling Service Organization to Obtain the Development Guide?
What Should I Do If I Cannot Find the Payment Kit (Non-Virtual) Menu or the App ID Association Authorization Screen?
About This Kit
Opening and Saving a PDF Document
Adding and Deleting PDF Pages
Text, Images, and Annotations on PDF Pages
Converting a Specified Page or Area to an Image
Converting a PDF Document to Images
Checking Whether the PDF Document Is Encrypted and Removing the Security Lock
Adding and Deleting Bookmarks
Adding and Deleting Headers and Footers
Adding and Deleting Watermarks
Adding and Deleting Backgrounds
Previewing a PDF Document
Opening and Saving a PDF Document
Setting the PDF Document Preview Effects
Searching for Keywords
Highlighting a PDF Document
Annotations
Converting a PDF Thumbnail into an Image
Optimizing the PDF Document Switching Experience
Can I remove the header, footer, watermark, and background from a specific page using PDF Kit?
Can I Preview PDF Documents Online?
About This Kit
File Preview
File Open Boost (C/C++)
File Open Boost Status Awareness (Deprecated)
File Cache Boost (C/C++)
Failed to Open a File Preview via the openPreview API
Preview Fails When the URI Obtained by DocumentViewPicker Is Opened Through the openPreview API
Glossary
About This Kit
Getting Started
Integration Specifications
Enabling Push Kit
Applying for Scenario-Specific Message Permissions
Obtaining a Push Token
Sending a Notification Message
Recalling a Notification Message
Pushing a Badge Update Message
Pushing a Widget Update Message
Sending a Text-to-Speech Message
Recalling a Text-to-Speech Message
Pushing a Background Message
Pushing a Live View Message
Pushing an In-App Call Message
Overview
Generating a JWT Based on a Service Account
Pushing Scenario-Specific Messages
(Optional) Developing the Message Receipt
(Optional) Viewing the Push Report
(Optional) Analyzing Test Messages
Obtaining an AAID
How Do I Handle Problems When Pushing Messages?
Why Does the Target Device Fail to Receive a Push Message After the Push API Is Successfully Called on the Cloud?
Incorrect Classification or Categorization
Push Message Upper Limit Reached
Message Frequency Control Problems
In-App Call Message Service Error Upon First Screen Lock After the Device Is Restarted
Incoming Call Banner Error of an In-App Call Message
Request URL Version Problem in a Scenario-Specific Message
How Does My App Client Receive and Display Messages While Running in the Background?
What Types of Scenario-Specific Messages Should I Choose If I Want to Implement Instant Messaging?
Pricing of the Kit
How Can I Replace the Certificate of My Message Receipt Server?
Personal Data Processing Information
Glossary
Notification Content Management Rules
Push Notification Violation Penalty Criteria
Supported Countries/Regions
About This Kit
Obtaining Book Information
Obtaining the Catalog Item List
Building a Reader
Customizing the Font
Customizing the Page Background
Changing the Page-Turning Mode, Font Size, and Line Height
Adapting the Dark and Light Modes
Listening to Text Scaling Factor Value Changes
Manually Triggering Page Turning
Notifying the Reading Progress
About This Kit
Development Preparations
Mobile Number Quick Verification Button
Avatar Selection Button
App Launch Button
Shipping Address Selection Button
Invoice Title Selection Button
Map Location Selection Button
Permission Settings Button
Mobile Number and Risk Level Retrieval Button
Province/City/District Selector Input Component
Obtaining System Information Attributes by API Calls
Obtaining System Information Attributes by API Calls in Asynchronous Mode
Obtaining System Setting Attributes by API Calls
Displaying the Follow Component by API Calls
File Path Conversion API
Introduction to SmartFill
Typical Scenarios
Changing the Value of ContentType Dynamically
Auto-filling Address Information in a Form
License Plate Number Filling Suggestion
Data Sources and Logic of Suggestions
ContentType Use Scenarios
Supporting SmartFill for HTML5
Supporting SmartFill for HTML5 Within React Native
Supporting SmartFill for HTML5 Within Flutter
Supporting SmartFill for HTML5 Within Taro
Supporting SmartFill for HTML5 Within Weex
Supporting SmartFill for HTML5 Within mPaas
Mapping Between HTML5/Third-Party Framework Configuration Items and HarmonyOS Configuration Items
Glossary
Page Cannot Be Opened When the Quick Mobile Number Verification Button Is Tapped
Failure to Launch a Third-Party App
SmartFill Selection Box Blocked by the Clipboard Paste Box
Personal Data Processing Information
Supported Country/Region
About This Kit
Configuring Signing Information
Requesting a Restricted ACL Permission
Overview
Requesting User Authorization
Revoking User Authorization
Triggering Callbacks When the App Authorization Switch Is Toggled On or Off on the Authorization List Page of Digital Balance
Overview
Starting the App Selection Page
Launching the Permitted App Redirect Page
Overview
Adding a Strategy
Updating a Strategy
Queries Strategy Configuration Data
Starting a Strategy
Stopping a Strategy
Querying Strategy Execution Data
Deleting a Strategy
Overview
Setting App Access Restrictions
Removing App Access Restrictions
Redirecting from the Intercept Page to the Screen Time Guard App
Glossary
About This Kit
Share Kit Terms
Precise UTD Type Required for the Host App to Initiate Content Sharing
One-Step Access to Received Data on the Target Device
Overview
Integration Modes for Host Apps
Initiating Content Sharing Through the Sharing Panel
Configuring the Target App List (Available Only to Enterprise Apps)
Customizing the Operation Area
Obtaining the Sharing Result
Processing the Shared Content Inside a Target App
Processing the Shared Content on the Sharing Details Page
Closing the Sharing Panel from the Sharing Details Page
Checking Whether an App Is Started by System Share
Sharing Contact Information to the Recommendation Area
Target App Design Specifications
Sharing Links
Sharing Images
Sharing Videos
Sharing Text
Overview
Sharing Content
Inviting a User to Join a Team
Overview
Sharing Content to a Specified In-app Page
Sharing Content Between a Phone and a PC/2-in-1 Device or Tablet
Overview
Enabling Grab & Drop on a Device
Transfer Between Trusted Devices
Sharing a Link of App Linking to Go to a Specified In-app Page
Failed to Start the System Sharing Panel
Unsupported Shared Data Type
Message "The file you selected cannot be shared." Displayed During Sharing
About This Kit
Applying for Wallet Kit
Overview
Preparations on the HUAWEI Wallet Server
Enabling a Car Key
Controlling a Car
Overview
Preparations on Your Server
Activating a Transportation Card
Topping Up a Transportation Card
Updating a Transportation Card
Deleting a Transportation Card
Do I Have to Integrate Account Kit into My App in Order to Use Wallet Kit?
What Will Happen If a User Attempts to Add a Pass to HUAWEI Wallet Without Signing in Using a HUAWEI ID?
Which Is the Most Commonly Used Access Method?
What Operations Are Performed by My Server When a Pass Is Added?
How Can I View an Added Pass?
Why Is Only One Pass Displayed in HUAWEI Wallet After a User Claims Multiple Passes from the Same Merchant?
Which Information Will Be Deleted When a User Deletes a Pass?
About This Kit
Getting Started
Obtaining Weather Data
How to Obtain the Weather Data of a Specified City
Do Weather Service Kit APIs Support the Positioning Function
No Data Returned After Minute-Level Precipitation Forecast/Weather Alert/Tide Data Is Requested
Personal Data Processing Information
About This Kit
Starting an Agent Through a Function Component
Implementing A2A Protocol Communication via AgentAbilityExtension
Glossary
About This Kit
Preparations
Model Zoo
Overview
Non-Training Quantization
Plugin-based Quantization
One-Stop Quantization for LLMs
Plugin-based Quantization
LoRA Fine-Tuning on a Quantized Base Model
NAS Training
Model Size Reduction Example
FAQs
Model Benefits
Preparing for Model Conversion
Model Conversion Example
OMG Parameters
Overview
AIPP Parameters
AIPP Configuration File Used for Model Conversion
Variable data_type
Deployment Process
Model Inference
AIPP Deployment
Heterogeneity
Maintenance, Testing, and Optimization
Zero Memory Copy
In-Depth Fusion
Creating a Project
Configuring NAPI for Your Project
Model Integration
Single-Operator Application
Introduction to Ascend C
Environment Setup
Quick Start
Basic Architecture
Compute Units
Storage Unit
Control Units
SPMD Model
Kernel Function
Hardware Architecture Abstraction
Programming Paradigm
API Overview
Basic APIs
High-Level APIs
Overview of Operator Implementation
Vector Programming
Basic Knowledge
Matrix Programming Operator Implementation
Overview of Project-based Operator Development
Creating an Operator Project
Operator Prototype Definition and Implementation
Operator Implementation on the Kernel
Tiling Implementation on the Host
Operator Project Build
Installing the Operator Package
Operator Debugging Overview
Preparing Input Data and Golden Data
Obtaining the Operator JSON Configuration Template
Configuring the Operator JSON File with Fixed Input/Output Order
Configuring the Operator JSON File with Normalized params
Tiling Debugging
CPU Twin Debugging
Simulator
printf/PRINTF
DumpTensor
DumpAccChkPoint
Assert
GDB Debugging
Overview of Operator Graph Integration
Development Process
Graph Build and Execution
Overview of AI Framework Operator Adaptation
ONNX Framework
Basic Tensor Concepts
Data Layout Formats
How to Use Double Buffer to Optimize Performance
How to Allocate Workspace as Temporary Memory
How to Update a Project to the Latest Version
Parameter Description for the Operator Project Creation Tool
Data Generation Script Adaptation Example
Examples of the Operator JSON Configuration File
Example of the Accuracy Comparison Result
In-Place Operator Debugging Example
Parameter Description for the ascendebug Debugging Tool
Operator Development FAQs
Ascend C API List
General Restrictions
LocalTensor
GlobalTensor
ShapeInfo
UnaryRepeatParams
BinaryRepeatParams
ScalarGetCountOfValue
ScalarCountLeadingZero
ScalarCast
CountBitsCntSameAsSignBit
ScalarGetSFFValue
Exp
Ln
Abs
Reciprocal
Sqrt
Rsqrt
Not
Relu
More Examples
Add
Sub
Mul
Div
Max
Min
And
Or
More Examples
Adds
Muls
Maxs
Mins
ShiftLeft
ShiftRight
LeakyRelu
More Examples
Axpy
More Examples
Precision Conversion Instructions
Transpose
TransDataTo5HD
Duplicate
CreateVecIndex
Data Distribution and Collection
Common Data Movement
Real-Time Format Conversion
DataCopyPad
Constructor
InitBuffer
Init
Destroy
Reset
AllocEventID
ReleaseEventID
FetchEventID
GetBaseAddr
InitBufPool
GetTPipePtr
Overview
Constructor
InitBufPool
InitBuffer
Reset
Overview
AllocTensor
FreeTensor
EnQue
DeQue
VacantInQue
HasTensorInQue
GetTensorCountInQue
HasIdleBuffer
FreeAllEvent
Overview
Constructor
AllocTensor
FreeTensor
EnQue
DeQue
VacantInQue
HasTensorInQue
GetTensorCountInQue
HasIdleBuffer
FreeAllEvent
Overview
Constructor
Get
GetWithOffset
GetSysWorkSpacePtr
SetSysWorkSpace
GetUserWorkspace
PipeBarrier(ISASI)
TPosition
GetBlockNum
GetBlockIdx
DumpTensor
printf
assert
DumpAccChkPoint
Trap
GET_TILING_DATA
GET_TILING_DATA_WITH_STRUCT
TILING_KEY_IS
Usage Description
Matmul Template Parameters
MatmulConfig
Init
SetTensorA
SetTensorB
Iterate
GetTensorC
IterateAll
End
Usage Description
Constructor
TCubeTiling Structure
Tanh
SoftmaxFlashV2
Sigmoid
Data Filling
Prototype Registration API (OP_ADD)
Input
Output
Attr
SetInferShape
SetInferDataType
AICore
ParamType
DataType
Format
ValueDepend
Follow
OpAttrDef
SetTiling
AddConfig
TilingData Structure Definition
TilingData Structure Registration
Overview
GetCoreNum
GetSocVersion
GetCoreNumAic
GetCoreNumAiv
CalcTschBlockDim
GetCoreMemSize
GetCoreMemBw
GetLibApiWorkSpaceSize
Internal Associated APIs
GmAlloc
GmFree
ICPU_RUN_KF
ICPU_SET_TILING_KEY
Basic Data Structures and API List
Overview
Constructor
GetInstanceNum
GetInstanceStart
SetInstanceStart
SetInstantiationNum
Constructor
GetDataType
GetFormat
GetOriginFormat
GetStorageFormat
GetExpandDimsType
SetDataType
SetStorageFormat
SetOriginFormat
SetExpandDimsType
Overview
Constructor
GetNodeType
GetNodeName
GetIrInputsNum
GetInputsNum
GetOutputsNum
GetIrOutputsNum
GetInputInstanceInfo
GetOutputInstanceInfo
GetInputTdInfo
GetOutputTdInfo
GetAttrs
MutableInputInstanceInfo
MutableOutputInstanceInfo
MutableInputTdInfo
MutableOutputTdInfo
MutableAttrs
SetNodeType
SetNodeName
Init
CalcSize
Overview
Init
Add
Get
GetSize
GetOverHeadLength
Overview
Create
Init
GetSize
SetSize
GetCapacity
GetData
MutableData
Overview
Constructor
operator==
GetFullSize
SetExpandIndex
IsExpandIndex
Expand (Outputting a New Shape)
Expand (Changing the Original Shape)
GetInputDesc
GetOutputDesc
GetOptionalInputDesc
GetDynamicInputDesc
GetRequiredInputDesc
GetIrInputInstanceInfo
GetIrOutputInstanceInfo
GetComputeNodeInputNum
GetComputeNodeOutputNum
GetAttrs
GetNodeType
GetNodeName
GetComputeNodeInfo
GetKernelName
GetKernelType
GetExtendInfo
GetInputDataType
GetOptionalInputDataType
GetRequiredInputDataType
GetOutputDataType
SetOutputDataType
GetInputShape
GetInputTensor
GetOptionalInputShape
GetRequiredInputTensor
GetRequiredInputShape
GetOutputShape
GetInputShapeRange
GetInputTensorRange
GetOptionalInputTensorRange
GetDynamicInputTensorRange
GetOptionalInputShapeRange
GetDynamicInputShapeRange
GetRequiredInputShapeRange
GetRequiredInputTensorRange
GetOutputShapeRange
Constructor and Destructor
InferShape
InferShapeRange
InferDataType
Tiling
PrivateAttr
TilingParse
InputsDataDependency
InferOutDataTypeSameWithFirstInput
GenSimplifiedKey
OpExecuteFunc
TilingInputsDataDependency
HostInputs
OutputShapeDependOnCompute
Overview
Constructor
operator==
SetMin
SetMax
GetMin
GetMax
Constructor
GetAttrPointer
GetInt
GetListInt
GetListListInt
GetStr
GetTensor
GetFloat
GetBool
GetListFloat
GetListListFloat
GetAttrNum
Overview
Constructor
operator==
operator!=
operator[]
IsScalar
SetScalar
GetDimNum
SetDimNum
GetDim
SetDim
AppendDim
Constructor
GetOriginFormat
SetOriginFormat
GetStorageFormat
SetStorageFormat
GetExpandDimsType
SetExpandDimsType
MutableExpandDimsType
operator==
operator!=
Overview
Constructor
GetOriginShape
GetStorageShape
MutableOriginShape
MutableStorageShape
operator==
operator!=
Constructor and Destructor
operator
GetAddr
GetSize
SetSize
GetPlacement
SetPlacement
Free
SetAddr
IsSharedWith
ShareFrom
TensorPlacementUtils
Constructor
GetShapeSize
GetData
SetData
GetAddr
GetSize
SetSize
GetDataType
SetDataType
CreateFollowing
GetStorageShape
MutableStorageShape
GetOriginShape
MutableOriginShape
GetShape
GetStorageFormat
SetStorageFormat
GetOriginFormat
SetOriginFormat
GetFormat
MutableFormat
GetExpandDimsType
SetExpandDimsType
GetPlacement
SetPlacement
GetTensorData
MutableTensorData
GetInputShape
GetInputTensor
GetOptionalInputTensor
GetRequiredInputTensor
GetOptionalInputShape
GetRequiredInputShape
GetOutputShape
SetTilingKey
GetTilingKey
SetBlockDim
GetBlockDim
SetTilingCond
GetTilingCond
GetTilingData
GetRawTilingData
GetWorkspaceSizes
GetWorkspaceNum
GetPlatformInfo
Constructor
GetCapacity
GetDataSize
SetDataSize
GetData
Append
CreateCap
CalcTotalSize
Init
operator
Overview
MutableData
GetData
TensorPlacement
Internal Associated APIs
Constructor and Destructor
Malloc
Free
MallocAdvise
Constructor and Destructor
GetString
Relational Operator Overloading
Find
Hash
GetLength
Constructor and Destructor
CreateFrom
GetValue
AutoMappingSubgraphIOIndexFuncRegister
Constructor and Destructor
GetAutoMappingSubgraphIOIndexFunc
AddAutoMappingSubgraphIOIndexFunc
Constructor and Destructor
SetInputHandleShapesAndTypes
SetOutputHandleShapesAndTypes
GetInputHandleShapesAndTypes
GetOutputHandleShapesAndTypes
SetMarks
GetMarks
Create
GetResourceContext
SetResourceContext
RegisterReliedOnResourceKey
AddChangedResourceKey
GetReliedOnResourceKeys
GetChangedResourceKeys
ClearChangedResourceKeys
InferFormatFuncRegister
InferShapeFuncRegister
InferValueRangeFuncRegister
ListTensorType
Constructor and Destructor
GetAddr
GetSize
SetSize
Free
AddCount
SubCount
GetCount
OperatorCreatorRegister
CreateOperator
GetOpsTypeList
IsExistOp
Constructor and Destructor
AddControlInput
BreakConnect
IsEmpty
InferShapeAndType
GetAttr
GetAllAttrNamesAndTypes
GetAllIrAttrNamesAndTypes
GetDynamicInputNum
GetDynamicInputDesc
GetDynamicOutputNum
GetDynamicOutputDesc
GetDynamicSubgraph
GetDynamicSubgraphBuilder
GetInferenceContext
GetInputConstData
GetInputsSize
GetInputDesc
GetName
GetSubgraph
GetSubgraphBuilder
GetSubgraphNamesCount
GetSubgraphNames
GetOpType
GetOutputDesc
GetOutputsSize
SetAttr
SetInput
SetInferenceContext
SetInputAttr
SetOutputAttr
GetInputAttr
GetOutputAttr
TryGetInputDesc
UpdateInputDesc
UpdateOutputDesc
UpdateDynamicInputDesc
UpdateDynamicOutputDesc
VerifyAllAttr
DynamicInputRegister
DynamicInputRegisterByIndex
DynamicOutputRegister
SubgraphCountRegister
SetSubgraphBuilder
OpReceiver
Overview
Constructor and Destructor
REGISTER_CUSTOM_OP
FrameworkType
OriginOpType
ParseParamsFn
ParseParamsByOperatorFn
FusionParseParamsFn
FusionParseParamsFn (Overload)
ParseSubgraphPostFn
ParseOpToGraphFn
ImplyType
DelInputWithCond
DelInputWithOriginalType
GetImplyType
GetOmOptype
GetOriginOpTypeSet
GetFrameworkType
GetParseParamFn
GetParseParamByOperatorFn
GetFusionParseParamFn
GetFusionParseParamByOpFn
GetParseSubgraphPostFn
GetParseOpToGraphFn
AutoMappingFn
AutoMappingByOpFn
AutoMappingFnDynamic
AutoMappingByOpFnDynamic
AutoMappingSubgraphIndex
InputReorderVector
Promote
Constructor and Destructor
SetShape
GetShape
SetType
GetDataType
Constructor and Destructor
GetDim
GetDims
GetDimNum
GetShapeSize
SetDim
TensorDescInfo
Constructor and Destructor
GetConstData
GetDataType
GetExpandDimsRule
GetFormat
GetName
GetOriginFormat
GetOriginShape
GetPlacement
GetRealDimCnt
GetShape
GetShapeRange
GetSize
SetConstData
SetDataType
SetExpandDimsRule
SetFormat
SetName
SetOriginFormat
SetOriginShape
SetPlacement
SetRealDimCnt
SetSize
SetShape
SetShapeRange
SetUnknownDimNumShape
Update
TensorType
Constructor and Destructor
Clone
IsValid
GetData
GetDataType
GetExpandDimsRule
GetFormat
GetOriginFormat
GetOriginShapeDim
GetOriginShapeDimNum
GetPlacement
GetSize
GetShapeDimNum
GetShapeDim
GetTensorDesc
SetData
SetDataType
SetExpandDimsRule
SetFormat
SetOriginFormat
SetOriginShapeDim
SetOriginShapeDimNum
SetPlacement
SetShapeDimNum
SetShapeDim
SetTensorDesc
ResetData
DataTypeToAscendString
AscendStringToDataType
FormatToAscendString
AscendStringToFormat
DataTypeToSerialString
SerialStringToDataType
FormatToSerialString
SerialStringToFormat
DataFormatToFormat
GetDataTypeLength
VerifyFuncRegister
ConvertToAscendString
ConvertToListAscendString
GetC0Format
GetC0Value
GetFormatFromC0
GetFormatFromSub
GetFormatFromSubAndC0
GetFormatName
GetPrimaryFormat
GetSizeByDataType
GetSizeInBytes
GetSubFormat
HasC0Format
HasSubFormat
ge::graphStatus
DataType
Format
BROADCAST_INFER
COMMON_INFER_FUNC_REG
DECLARE_ERRORNO
ELMTWISE_INFER_SHAPEANDTYPE
IMPLEMT_COMMON_INFERFUNC
IMPLEMT_INFERFORMAT_FUNC
IMPLEMT_INFERFUNC
IMPLEMT_VERIFIER
INFER_FORMAT_FUNC_REG
INFER_FUNC_REG
Prototype Definition (REG_OP)
Prototype Definition Derivative APIs
VERIFY_FUNC_REG
Compatibility
Mapping Between Ascend and Kirin AI Processors of the Same Generation
Overview
L2 Cache
Data Type
Atomic Operation
Synchronization Control
Matrix Computing
Data Movement
Resource management
System Variables
Kernel Tiling
SuperKernel
High-Level API Porting Guide
Operator Compilation Porting Guide
Overview
Environment Setup
Three-Stage Quantization Procedure
Quantization Effect Evaluation
Exporting the Original Model as a Friendly-Structure ONNX Model
Converting an ONNX Model to a CANN Model
How Can I Determine Whether a Model Can Run on Mobile Phones?
What Are the Data Formats Supported by the Inference Function?
What Should I Do if the Type of the Output Operator Is Incorrect for the OMG Offline Model?
How can I determine which operators have better performance on CANN during model design?
Glossary
How to Obtain the Version
Supported Operators
Visualization Tool
About This Kit
Text-to-Speech
Speech Recognition
Personal Data Processing Information
About This Kit
OCR
Face Detection
Face Verification
Subject Segmentation
Multi-Object Detection
Skeleton Detection
Image Super Resolution
Searching for Images by Text
Personal Data Processing Information
About This Kit
Intents Kit Integration Process
Overview
Use Cases
Integration Solution
Testing Solution
Overview
Use Cases
Integration Solution
Testing Solution
Overview
Use Cases
Integration Solution
Overview
Use Cases
Overview
Integration in Task Execution Scenarios via a Configuration File
Solution Overview
Integration via a Link-based Decorator
Integration via a Page-based Decorator
Integration via a Function-based Decorator
Definition Rules for Custom Intents
One-Step Access to Functions
Overview
Use Cases
Function Search Solution
Content Search Solution
What Should I Do If the Error Message "Intent 'xxxxxx' is not included in domain 'xxxxxx'. Select an intent from the list of suggestions." Is Displayed for intentName?
What Should I Do If the Error Message "Value should be one of: "intentName", "domain", "intentVersion", "srcEntry", "uiAbility", "serviceExtension", "uiExtension", "form"" Is Displayed for inputParams?
What Should I Do If the App Launched by Celia Exits Unexpectedly When I Use the Intents Kit Debug Assistant Agent for Joint Debugging?
Is There a Cloud-based Dynamic Slot Declaration Solution for the One-Step Function Access Scenario?
Glossary
Appendix A: How to Obtain the UID of a HUAWEI ID
About This Kit
Using MindSpore Lite for Model Conversion
Using MindSpore Lite for Model Inference (C/C++)
Using the MindSpore Lite Engine for On-Device Training (C/C++)
Using MindSpore Lite for Image Classification (ArkTS)
Using MindSpore Lite for Image Classification (C/C++)
Using MindSpore Lite for Speech Recognition (C/C++)
MindSpore Lite Kit Operator List
MindSpore Lite Kit Glossary
About This Kit
Word Segmentation
Entity Extraction
About This Kit
Connecting NNRt to an AI Inference Framework
Neural Network Runtime Kit Glossary
About This Kit
TextReader
AICaption
About This Kit
Face Liveness Detection
Card Recognition
Document Scanning
AI Image Recognition
Personal Data Processing Information
Free Hopping Documentation Path Adjustment
About This Kit
Creating an NDK Project
Overview
Building an NDK Project with the DevEco Studio Template
Building NDK Projects with Command-Line CMake
Building an NDK Project with Prebuilt Libraries
BiSheng Compiler
Integrating a Third-Party Dynamic Link Library
Overview
C/C++ Library Mechanisms
Using fdsan
Node-API Overview
Node-API Status Codes
Node-API Data Types and APIs
Node-API Development Specifications
Node-API Development Process
Using Node-API Extension APIs
Working with Arrays Using Node-API
Working with ArrayBuffer Using Node-API
Working with BigInt Using Node-API
Working with Buffer Using Node-API
Creating Basic Data Types Using Node-API
Working with Class Using Node-API
Working with Cleanup Hooks Using Node-API
Working with Date Using Node-API
Error Handling Using Node-API
Associating Data with a Running Environment to Tie Their Lifecycle Using Node-API
Working with Functions Using Node-API
Performing Lifecycle Management Using Node-API
Working with Objects Using Node-API
Working with Other Node-API Utilities
Working with Primitives Using Node-API
Implementing Asynchronous Operations Using Node-API
Setting ArkTS Object Properties Using Node-API
Working with String Using Node-API
Customizing Asynchronous Operations Using Node-API
Asynchronous Task Development Using Node-API
Thread Safety Development Using Node-API
Wrapping a Native Object in an ArkTS Object
Wrapping a Native Object in a Sendable ArkTS Object
Creating an ArkTS Runtime Environment Using Node-API
Loading a Module in the Main Thread Using Node-API
Running or Stopping an Event Loop in an Asynchronous Thread Using Node-API Extension APIs
Loading a Module Using Node-API
Passing a Task with the Specified Priority to an ArkTS Thread from an Asynchronous Thread Using Node-API
Creating, Switching, and Destroying a Context in a Thread Using Node-API Extension APIs
Creating a Strong Reference to an ArkTS Object Using Node-API Extension APIs
Creating and Destroying a Critical Scope and Accessing String Content Using Node-API Extension APIs
Analyzing Error Logs and Crashes Triggered by Using Node-API
Calling an ArkTS Method with Return Value of a promise Using Node-API
Creating a Sendable Strong Reference to an ArkTS Object Using Node-API Extension APIs
Accelerating Property Access Using Extended Node-APIs
FAQs
FAQs About Stability
FAQs About Memory Leaks
FAQs About Basic Functionalities
JSVM-API Overview
JSVM-API Data Types and APIs
JSVM-API Development Process
JSVM-API Development Specifications
JSVM-API FAQs
Working with Tasks Using JSVM-API
Working with VM Snapshots Using JSVM-API
Working with Wasm Using JSVM-API
Creating and Calling JS Functions Using JSVM-API
Performing JSON Operations Using JSVM-API
Working with Arrays Using JSVM-API
Working with ArrayBuffer Using JSVM-API
Creating an ArrayBuffer from External Memory Using JSVM-API
Working with BigInt Using JSVM-API
Working with Classes Using JSVM-API
Working with Date Using JSVM-API
Performing Debug Operations Using JSVM-API
Working with Objects Using JSVM-API
Working with Primitives Using JSVM-API
Implementing Asynchronous Operations Using JSVM-API
Setting JS Object Properties Using JSVM-API
Creating and Obtaining String Values Using JSVM-API
Obtaining the JSVM-API Version Using JSVM-API
Error Handling Using JSVM-API
Debugging and Profiling JS Code Using JSVM-API
Performing Lifecycle Management Using JSVM-API
Performing Memory Management Using JSVM-API
Comparing JS Values Using JSVM-API
Customizing Exception Handling Using JSVM-API
Triggering GC Using JSVM-API
Using JSVM-API to Obtain Heap Snapshots and Monitor Heap Memory Thresholds
Setting the private Property Using JSVM-API
Working with Latin1/UTF16 Strings Using JSVM-API
Working with Proxies Using JSVM-API
Working with Well-Known Symbols Using JSVM-API
Working with Wrapper Objects Using JSVM-API
Creating and Obtaining Values Using JSVM-API
JSVM-API Debugging
Working with Trace Using JSVM-API
Requesting the JIT Profile for JSVM-API
JSVM-API Secure Shield Mode
Troubleshooting JSVM-API Memory Leaks
Creating and Destroying JSVMs Using JSVM-API
Accelerating Compilation Using a Code Cache
JSVM Tuning Practices
Using HiSmartPerf to Collect JSVM Trace
Analyzing Web Page Memory Using DevTools
Using Longque JS APIs
OpenMP Overview
Building and Running Applications Using OpenMP
Raw File Development
Native Bundle Development
Using GN to Configure the HarmonyOS Build Toolchain
Using CMake to Configure the HarmonyOS Build Toolchain
Using Make to Configure the HarmonyOS Build Toolchain
Using the Configure Tool to Configure the HarmonyOS Build Toolchain
Quickly Building Third-Party Libraries Using the Lycium Cross-Compilation Framework
Passing Complex Parameters Across Languages
Implementing Communication Between Native Child Threads and the UI Main Thread
Overview
C/C++ Memory Error Detection
LLDB Debugger
Overview
HarmonyOS ABIs
CPU Features
Using Neon Instructions
Overview
Downloading and Installing DevEco Studio
Using the New UI
Project Overview
Project Directory Structure
Introduction to Project Templates
Creating a Project
Adding and Deleting a Module
Importing and Referencing a Module
Unloading and Loading a Module
Developing a Static Shared Package
Developing a Dynamic Shared Package
Publishing a Shared Package
Referencing and Managing a Shared Package
Release Notes
Overview
Getting Started
Setting the Configuration File
Logs
ohpm-repo help
ohpm-repo install
ohpm-repo start
ohpm-repo restart
ohpm-repo stop
ohpm-repo --version
ohpm-repo encrypt_password
ohpm-repo pack
ohpm-repo deploy
ohpm-repo restore
ohpm-repo mirror_storage
ohpm-repo check_storage
ohpm-repo remove_instance
ohpm-repo export_pkginfo
ohpm-repo batch_download
ohpm-repo batch_publish
ohpm-repo export_userinfo
ohpm-repo import_userinfo
ohpm-repo export_pkgPermission
ohpm-repo import_pkgPermission
Single-Node Deployment
Multi-Instance Deployment
Frontend page
Personal Center Home Page
User Management
Repository Management
Package Permission Management
Authentication Management
Organization Management
Operation Log
System Settings
Security Configuration
FAQs
Data Migration
Upgrading from 1.0.1 to 2.X.X/5.X.X
Upgrading from 1.1.0 to 2.X.X/5.X.X
Upgrading 2.X.X/5.X.X to a Later Version
Storage Plugin Configuration
Template File
Authentication Plugin Configuration
Template File
Custom Login Verification Plugin Configuration
Template Files
Data Backup
Export of Metadata from the Central Repository of the OpenHarmony Third-Party Library to ohpm-repo
ohpm Repository Interface Protocol
Configuration
Template Files
Deploying the ohpm-repo Service Using a Dockerfile
Adding an Ability
Adding a Page
Generating a Single-Layer Icon
Creating a Service Widget
Creating an Insight Intent
Setting Up the Development Environment Offline
Editor Basics
Code Generation/Completion
Real-time Code Check and Quick Fix
Code Linter
Rule Changes
Recommended Rules
@typescript-eslint/adjacent-overload-signatures
@typescript-eslint/array-type
@typescript-eslint/await-thenable
@typescript-eslint/ban-ts-comment
@typescript-eslint/ban-tslint-comment
@typescript-eslint/ban-types
@typescript-eslint/brace-style
@typescript-eslint/class-literal-property-style
@typescript-eslint/comma-dangle
@typescript-eslint/comma-spacing
@typescript-eslint/consistent-indexed-object-style
@typescript-eslint/consistent-type-assertions
@typescript-eslint/consistent-type-definitions
@typescript-eslint/consistent-type-imports
@typescript-eslint/default-param-last
@typescript-eslint/dot-notation
@typescript-eslint/explicit-function-return-type
@typescript-eslint/explicit-member-accessibility
@typescript-eslint/explicit-module-boundary-types
@typescript-eslint/func-call-spacing
@typescript-eslint/init-declarations
@typescript-eslint/keyword-spacing
@typescript-eslint/lines-between-class-members
@typescript-eslint/member-delimiter-style
@typescript-eslint/member-ordering
@typescript-eslint/method-signature-style
@typescript-eslint/naming-convention
@typescript-eslint/no-array-constructor
@typescript-eslint/no-base-to-string
@typescript-eslint/no-confusing-non-null-assertion
@typescript-eslint/no-confusing-void-expression
@typescript-eslint/no-dupe-class-members
@typescript-eslint/no-duplicate-imports
@typescript-eslint/no-dynamic-delete
@typescript-eslint/no-empty-function
@typescript-eslint/no-empty-interface
@typescript-eslint/no-explicit-any
@typescript-eslint/no-extraneous-class
@typescript-eslint/no-extra-non-null-assertion
@typescript-eslint/no-extra-parens
@typescript-eslint/no-extra-semi
@typescript-eslint/no-floating-promises
@typescript-eslint/no-for-in-array
@typescript-eslint/no-implicit-any-catch
@typescript-eslint/no-implied-eval
@typescript-eslint/no-inferrable-types
@typescript-eslint/no-invalid-this
@typescript-eslint/no-invalid-void-type
@typescript-eslint/no-loop-func
@typescript-eslint/no-loss-of-precision
@typescript-eslint/no-magic-numbers
@typescript-eslint/no-misused-new
@typescript-eslint/no-misused-promises
@typescript-eslint/no-namespace
@typescript-eslint/no-non-null-asserted-optional-chain
@typescript-eslint/no-non-null-assertion
@typescript-eslint/no-parameter-properties
@typescript-eslint/no-redeclare
@typescript-eslint/no-require-imports
@typescript-eslint/no-restricted-syntax
@typescript-eslint/no-shadow
@typescript-eslint/no-this-alias
@typescript-eslint/no-throw-literal
@typescript-eslint/no-type-alias
@typescript-eslint/no-unnecessary-boolean-literal-compare
@typescript-eslint/no-unnecessary-condition
@typescript-eslint/no-unnecessary-qualifier
@typescript-eslint/no-unnecessary-type-arguments
@typescript-eslint/no-unnecessary-type-assertion
@typescript-eslint/no-unnecessary-type-constraint
@typescript-eslint/no-unsafe-argument
@typescript-eslint/no-unsafe-assignment
@typescript-eslint/no-unsafe-call
@typescript-eslint/no-unsafe-member-access
@typescript-eslint/no-unsafe-return
@typescript-eslint/no-unused-expressions
@typescript-eslint/no-unused-vars
@typescript-eslint/no-use-before-define
@typescript-eslint/no-useless-constructor
@typescript-eslint/prefer-as-const
@typescript-eslint/prefer-enum-initializers
@typescript-eslint/prefer-for-of
@typescript-eslint/prefer-function-type
@typescript-eslint/prefer-includes
@typescript-eslint/prefer-literal-enum-member
@typescript-eslint/prefer-namespace-keyword
@typescript-eslint/prefer-nullish-coalescing
@typescript-eslint/prefer-optional-chain
@typescript-eslint/prefer-readonly
@typescript-eslint/prefer-readonly-parameter-types
@typescript-eslint/prefer-reduce-type-parameter
@typescript-eslint/prefer-regexp-exec
@typescript-eslint/prefer-string-starts-ends-with
@typescript-eslint/prefer-ts-expect-error
@typescript-eslint/promise-function-async
@typescript-eslint/quotes
@typescript-eslint/require-array-sort-compare
@typescript-eslint/require-await
@typescript-eslint/restrict-plus-operands
@typescript-eslint/restrict-template-expressions
@typescript-eslint/return-await
@typescript-eslint/semi
@typescript-eslint/space-before-function-paren
@typescript-eslint/space-infix-ops
@typescript-eslint/strict-boolean-expressions
@typescript-eslint/switch-exhaustiveness-check
@typescript-eslint/triple-slash-reference
@typescript-eslint/type-annotation-spacing
@typescript-eslint/typedef
@typescript-eslint/unbound-method
@typescript-eslint/unified-signatures
prefer-const
eqeqeq
@security/no-commented-code
@security/no-cycle
@security/no-unsafe-aes
@security/no-unsafe-dh
@security/no-unsafe-dsa
@security/no-unsafe-dh-key
@security/no-unsafe-dsa-key
@security/no-unsafe-ecdsa
@security/no-unsafe-hash
@security/no-unsafe-mac
@security/no-unsafe-rsa-encrypt
@security/no-unsafe-rsa-key
@security/no-unsafe-rsa-sign
@security/no-unsafe-3des
@security/specified-interface-call-chain-check
@security/no-unsafe-kdf
@security/no-unsafe-sm4
@security/no-unsafe-sm2-key
@security/no-unsafe-sm2-cipher
@security/no-unsafe-ecdh
@security/no-unsafe-huks
@performance/avoid-overusing-custom-component-check
@performance/bad-deep-clone-check
@performance/constant-property-referencing-check-in-loops
@performance/crypto-replacement-check
@performance/custom-node-memory-leak-check
@performance/dark-color-mode-check
@performance/datashare-query-unrelease-check
@performance/foreach-args-check
@performance/foreach-index-check
@performance/gif-hardware-decoding-check
@performance/hp-arkui-avoid-update-auto-state-var-in-aboutToReuse
@performance/hp-arkui-avoid-empty-callback
@performance/hp-arkui-combine-same-arg-animateto
@performance/hp-arkui-image-async-load
@performance/hp-arkui-load-on-demand
@performance/hp-arkui-limit-refresh-scope (Deprecated)
@performance/hp-arkui-no-func-as-arg-for-reusable-component
@performance/hp-arkui-no-high-freq-log (Deprecated)
@performance/hp-arkui-no-stringify-in-lazyforeach-key-generator
@performance/hp-arkui-no-state-var-access-in-loop
@performance/hp-arkts-no-use-any-export-current
@performance/hp-arkts-no-use-any-export-other
@performance/hp-arkui-remove-container-without-property
@performance/hp-arkui-replace-nested-reusable-component-by-builder
@performance/hp-arkui-reduce-pangesture-distance
@performance/hp-arkui-remove-redundant-nest-container
@performance/hp-arkui-remove-redundant-state-var
@performance/hp-arkui-remove-unchanged-state-var
@performance/hp-arkui-set-cache-count-for-lazyforeach-grid
@performance/hp-arkui-suggest-cache-avplayer
@performance/hp-arkui-suggest-reuseid-for-if-else-reusable-component
@performance/hp-arkui-suggest-use-effectkit-blur
@performance/hp-arkui-suggest-use-get-anonymousid-async
@performance/hp-arkui-use-attributeUpdater-control-refresh-scope
@performance/hp-arkui-use-grid-layout-options
@performance/hp-arkui-use-id-in-get-resource-sync-api
@performance/hp-arkui-use-local-var-to-replace-state-var
@performance/hp-arkui-use-onAnimationStart-for-swiper-preload
@performance/hp-arkui-use-object-link-to-replace-prop
@performance/hp-arkui-use-row-column-to-replace-flex
@performance/hp-arkui-use-reusable-component
@performance/hp-arkui-use-scale-to-replace-attr-animateto
@performance/hp-arkui-use-taskpool-for-web-request
@performance/hp-arkui-use-transition-to-replace-animateto
@performance/hp-arkui-use-word-break-to-replace-zero-width-space
@performance/hp-arkui-wrap-waterflow-if-else-footer (Deprecated)
@performance/high-frequency-log-check
@performance/hp-ffrt-no-use-std
@performance/hp-performance-no-closures
@performance/hp-performance-no-dynamic-cls-func
@performance/init-list-component
@performance/js-code-cache-by-interception-check
@performance/js-code-cache-by-precompile-check
@performance/lazyforeach-args-check (Deprecated)
@performance/lottie-animation-destroy-check
@performance/multiple-associations-state-var-check
@performance/monitor-invisible-area-in-image-animation
@performance/no-use-any-import
@performance/no-high-loaded-frame-rate-range
@performance/number-init-check
@performance/nested-post-frame-callback-check
@performance/object-creation-check (Deprecated)
@performance/reasonable-audio-use-check
@performance/reasonable-gps-use-check
@performance/reuse-date-instances-check
@performance/reasonable-sensor-use-check
@performance/sparse-array-check
@performance/start-window-icon-check
@performance/state-variable-usage-in-ui-format-check
@performance/typed-array-check
@performance/timezone-interface-check
@performance/tabs-on-change-check
@performance/update-state-var-between-animatetos-check
@performance/web-cache-mode-check
@performance/web-on-active-check
@performance/waterflow-data-preload-check
@previewer/mandatory-default-value-for-local-initialization
@previewer/no-page-method-on-preview-component
@previewer/no-unallowed-decorator-on-root-component
@cross-device-app-dev/color-contrast
@cross-device-app-dev/color-value
@cross-device-app-dev/font-size-unit
@cross-device-app-dev/font-size
@cross-device-app-dev/grid-columns-span
@cross-device-app-dev/grid-span-value
@cross-device-app-dev/one-multi-breakpoint-check
@cross-device-app-dev/sidebar-navigation
@cross-device-app-dev/size-unit
@cross-device-app-dev/touch-target-size
@cross-device-app-dev/window-size-change-listener-check
@cross-device-app-dev/immersive-effect-check
@hw-stylistic/array-bracket-spacing
@hw-stylistic/brace-style
@hw-stylistic/comma-spacing
@hw-stylistic/curly
@hw-stylistic/file-naming-convention
@hw-stylistic/indent
@hw-stylistic/keyword-spacing
@hw-stylistic/max-len
@hw-stylistic/no-multi-spaces
@hw-stylistic/no-tabs
@hw-stylistic/object-property-newline
@hw-stylistic/one-var-declaration-per-line
@hw-stylistic/operator-linebreak
@hw-stylistic/quotes
@hw-stylistic/semi-spacing
@hw-stylistic/space-before-blocks
@hw-stylistic/space-before-function-paren
@hw-stylistic/space-infix-ops
@correctness/avsession-buttons-check
@correctness/audio-interrupt-check
@correctness/audio-pause-or-mute-check
@correctness/avsession-metadata-check
@correctness/image-pixel-format-check
@correctness/image-interpolation-check
@correctness/listen-default-network-change
@correctness/listen-multi-network-concurrent
@correctness/multimedia-use-stride-in-image-receiver
@correctness/redundant-dependency-check
@correctness/v1-nested-object-property-change-format-check
@correctness/v1-state-object-member-used-in-function-parameter-check
@correctness/accessibility-label-check
@correctness/accessibility-focus-redundancy-check
@correctness/accessibility-type-redundancy-check
@correctness/accessibility-status-missing-check
@compatibility/api-compatibility-check
@compatibility/deprecate-api-check
Code Scanner
Clang-Tidy Code Inspection
Code Refactoring
Document Generation
@author
@copyright
@deprecated
@param
@returns
@since
@throws
@todo
@version
{@link}
Quickly Inserting Scenario-based Code Snippets
Cross-language Code Editing
Code Indexing (clangd)
Introduction
PreviewChecker Inspection Rules
Previewing an ArkTS/JS App/Atomic Service
Previewing an ArkUI Page or Component
Using Profile Manager
Previewing Your App/Atomic Service on Multiple Devices
Using Inspector Bidirectional Preview
Mocking Preview Data
Debugging Your App Using the Previewer
List of Previewer-Capable APIs
Signing Your App/Service Automatically
Signing Your App/Atomic Service Manually
Running Your App on a Local Real Device
Running a Lite Wearable App via the Simulator
Working Environment
Supported Devices
Differences Between the Emulator and the Real Device
Creating an Emulator
Starting/Stopping the Emulator
Controlling the Screen
Using the Toolbar
Moving and Scaling the Emulator
Accessing the Network Using the Emulator
Installing an App Package and Uploading Files
Using Extended Features
Customizing the Virtual Device Screen
Using the Emulator via the CLI
Deploying an Emulator Offline
Emulator Error Codes
Debugging Overview
Running/Debugging Configuration
Debugging Scenario Description
Starting Debugging in Debug Mode
Starting Debugging in Attach Mode
Using Wait-for-Debugger Mode
Using Breakpoints
Checking Variables
Performing Reverse Debugging
Debugging Extension Abilities
Performing Multi-Process Debugging
Printing Expressions
Using Smart Step Into
Viewing Asynchronous Function Call Stacks
Starting the Debugging Process
Using Breakpoints
Checking Variables
Debugging Assembly Code
Viewing Memory Information
Using LLDB Debugging Commands
Performing Reverse Debugging
Visualizing Call Stacks
Visualizing .so Information
Setting Execution Points
Using Smart Step Into
Speeding Up Native Debugging Startup
Debugging Native Child Processes
Using the Debugger
Performing Cross-Language Debugging
Debugging Third-Party Library Source Code
Performing Incremental Debugging
Using Hot Reload
Viewing ArkUI State Variables
Using Developer Options
Analyzing UI Layouts
Accessing Device Files
Location Simulation
Debugging Databases
Capturing Screenshots
Recording Screens
Mirroring Device Screens
Runtime Configuration Error Codes
Hot Reload and Incremental Debugging Error Codes
Debugging Error Codes
hdc Command Error Codes
Log Analysis
FaultLog
Viewing Cpp Crash Logs
Viewing AppFreeze Logs
Viewing App Killed Logs
Parsing App minidump/coredump Files
Analyzing Stack Traces
Analyzing Exception Stack Traces
ASan: Detecting Memory Errors
HWASan: Detecting Memory Errors
TSan: Detecting Thread Errors
UBSan: Detecting Undefined Behaviors
ArkCompiler: Detecting Runtime Issues
Instrument Test
Local Test
Mock
Black-box coverage
Instrument Test Error Codes
Local Test Error Codes
CLI Test Error Codes
Setting Up the Proxy
Terminal Environment Variables
DevEco Studio Parameters
Disabling Data Collecting
Log Collection and Diagnosis Data
ohpm Version Number Rules
pac.json5 Privacy Manifest File
Release Notes
Build System Lifecycle
Build Tasks
Build Products
Overview
hvigor-config.json5 File
Project-level build-profile.json5 File
Module-level build-profile.json5 File
Managing Modules
Adding Dependencies
Introduction
Examples
Building a HAR
Configuring for C++ Builds
Quick Link to a Pre-built Library
Implementing Multi-project Builds
Understanding the Logic for Checking HAP Uniqueness
Customizing the .hvigor Directory Path
Introduction
Examples
Introduction
Examples
Introduction
Examples
Using the Daemon Process
Enabling Parallel Build
Conducting an Incremental Build
Conducting Modular Compilation
Analyzing the Build Process
Performance/Memory Optimization Practices: Multi-Target Build
Performance/Memory Optimization Practices: Multi-HAP/Multi-HSP Build
Performance Optimization Practices: Custom Plugins and Tasks
Performance Optimization Practices: Mixed-Language Project Synchronization
Performance Optimization Practices: Cache Plugins
Memory Optimization Practices: Remote Build
Experimental Features
Developing an Hvigor Task
Developing an Hvigor Plugin
Basic Build Capabilities
Plugin Context
API Usage Examples
Task Visualization and Execution
Using Obfuscation for Code Hardening
Logging
Compilation and Building FAQs
Dependency Error Codes
Script Error Codes
Configuration Error Codes
Resource Missing Error Codes
Syntax Error Codes
Specification Error Codes
Permission Error Codes
Operation Error Codes
ArkTS Compilation Error Codes
Signature Tool Error Codes
Introduction to Performance Optimization Tools
UI Layout
Session Area
Data Area
Performance Profiling Procedure
Realtime Monitor for Problem Demarcating
In-depth Capture for Problem Locating
Frame Analysis
ArkUI Analysis
Analyzing App Stuttering Issues Using the Frame Template
Basic Operations with Launch Analysis
Case: Analyzing the First Frame Completion Delay During Cold Start
Basic Operations with Memory Snapshot Analysis
Analyzing the ArkTS Memory Leak
Overview
Filtering Memory Analysis Data
Analyzing Memory at Launch
Analyzing the Native Memory Leak
UI Component Memory Analysis: ComMemory
Energy Consumption Diagnosis: Energy
Loading and Frame Loss Analysis: ArkWeb
Network Diagnosis: Network
Parallelism and Concurrency Analysis: Concurrency
GPU Activity Analysis
Basic Time Analysis: Time
CPU Activity Analysis
I/O Latency Analysis: FileSystem
Graphics Profiler
DevEco Profiler Terms
FAQs
Error Codes
Shortcut Keys
Release
O&M Analysis
Obtaining Command Line Tools
Using codelinter
ArkTSDoc Generator (arktsdoc)
Using the Emulator
Using hvigorw
Using hstack
System Platform Requirements
ohpmrc
oh-package.json5
ohpm config
ohpm help
ohpm info
ohpm init
ohpm install
ohpm list
ohpm publish
ohpm uninstall
ohpm prepublish
ohpm unpublish
ohpm update
ohpm root
ohpm version
ohpm cache clean
ohpm run
ohpm --version
ohpm ping
ohpm clean
ohpm dist-tags
ohpm convert
ohpm dependency-check
ohpm config Error Codes
ohpm info Error Codes
ohpm install Error Codes
ohpm list Error Codes
ohpm publish Error Codes
ohpm uninstall Error Codes
ohpm unpublish Error Codes
ohpm update Error Codes
ohpm root Error Codes
ohpm version Error Codes
ohpm cache clean Error Codes
ohpm run Error Codes
ohpm ping Error Codes
ohpm clean Error Codes
ohpm dist-tags Error Codes
ohpm convert Error Codes
ohpm dependency-check Error Codes
Common ohpm Command Error Codes
Setting Up a Pipeline
Samples
The following sample is provided to help you better understand how to develop location services:
Location (ArkTS)