HarmonyOS鸿蒙Next中执行二进制文件

HarmonyOS鸿蒙Next中执行二进制文件 鸿蒙手机OS有办法执行二进制文件么?我们有个小型本地服务器想要执行,但是直接在shell环境执行提示权限拒绝,并且fork子进程执行也不行

14 回复

开发者您好,NDK(Native Development Kit)是HarmonyOS SDK提供的Native API、相应编译脚本和编译工具链的集合,方便开发者使用C或C++语言实现应用的关键功能。NDK只覆盖了HarmonyOS一些基础的底层能力,如C运行时基础库libc、图形库、窗口系统、多媒体、压缩库、面向ArkTS/JS与C跨语言的Node-API等。

参考文档:

NDK开发

更多关于HarmonyOS鸿蒙Next中执行二进制文件的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


  1. hdc file send 复制到手机/data/local/tmp
  2. hdc shell进入,cd /data/local/tmp,
  3. 给执行权限 chmod +x

1. 将服务器入口封装为 C/C++ 动态库(.so

利用 DevEco Studio 的 Native 模板(C++ 支撑),将你原本二进制文件中的 main() 函数重构为一个导出函数(例如 start_local_server(int port))。

2. 通过 NAPI 桥接

在 C++ 层实现 Node-API 接口,将其暴露给上层的 ArkTS:

#include "napi/native_api.h"
#include <thread>

// 你的本地服务器核心启动逻辑
void RunServer() {
    // 原二进制文件的 main() 函数逻辑
    // 比如 socket 监听、数据处理等
}

static napi_value StartServer(napi_env env, napi_callback_info info) {
    // 必须在新线程中启动,否则会阻塞 ArkTS UI 主线程
    std::thread serverThread(RunServer);
    serverThread.detach(); 
    
    napi_value result;
    napi_get_boolean(env, true, &result);
    return result;
}

3. 在 ArkTS 应用层启动服务器

在应用启动(如 EntryAbilityonCreate)时,直接调用这个 Native 方法:

import localServer from 'liblocal_server.so';

export default class EntryAbility extends UIAbility {
  onCreate(want, launchParam) {
    // 启动本地服务器线程
    localServer.startServer();
  }
}

嗯,看来只能如此了,鸿蒙限制太严格了

可以通过本地网络服务监听进行实现,不过需要部分特定权限,

鸿蒙目前不允许超长时的任务执行,所以你起服务目前是不可能的了。

好多第三方库都是编译成lib包执行的~~

例如这个:[https://ohpm.openharmony.cn/#/cn/detail/@ohos%2Fijkplayer](https://ohpm.openharmony.cn/#/cn/detail/@ohos%2Fijkplayer)

在HiShell里面用sudo zsh命令拿到假root,再执行

找HarmonyOS工作还需要会Flutter技术的哦,有需要Flutter教程的可以学学大地老师的教程,很不错,B站免费学的哦:https://www.bilibili.com/video/BV1S4411E7LY/?p=17

sudo不需要root权限吗?

sudo zsh在鸿蒙系统拿到的是假root,是假的,用不了dmesg、getenforce、setenforce、find /sys/、find /proc/cmdline,但是执行二进制文件够用了。

sudo是用来拿执行命令要用的root权限,是用来拿root的,但拿不拿的到要输入密吗,

鸿蒙Next基于微内核,应用沙箱内禁止直接执行任意ELF二进制文件。若需运行可执行代码,须通过系统提供的受限进程机制(如ChildProcess)或NDK的posix_spawn接口,且文件须位于应用专属目录、通过签名校验并具备执行权限。普通应用通常无此能力。

HarmonyOS NEXT 基于鸿蒙微内核,对应用沙箱、权限管控和可执行文件校验有严格限制。普通应用无法直接通过 shell 或 fork 执行自带的二进制文件,主要原因包括:

  • 沙箱隔离:应用只能访问自身目录,系统分区和 shell 环境权限受限。
  • 安全策略:NEXT 禁止动态生成代码和未知来源的 ELF 文件执行,需要签名或使用官方提供的 Native 接口。
  • 权限拒绝:直接执行通常触发 SELinux/AMS 权限校验,fork 子进程同样受进程创建限制。

如果要运行本地小型服务器,需通过 HarmonyOS 的 Native API(如 AbilityService)将二进制作为应用原生库(.so)加载,并声明相应权限。纯 shell 环境目前无法绕过系统限制。

回到顶部