Guia Prático para Portar Ferramentas de Linha de Comando do Linux para o HarmonyOS PC de Código Aberto

Introdução ao Ambiente do HarmonyOS PC

O HarmonyOS PC, baseado no OpenHarmony, é uma plataforma desktop que oferece suporte a hardware convencional, incluindo gerenciamento de janelas, drivers de periféricos e uma cadeia de ferramentas de desenvolvimento completa. Diferente das versões móveis, o ambiente desktop prioriza a compatibilidade com teclados, mouses e ecossistemas de ferramentas de linha de comando.

Preparação do Ambiente de Desenvolvimento

Antes de iniciar a migração, é necessário configurar o seguinte:

  • Um dispositivo HarmonyOS PC ou emulador (recomenda-se uma placa de desenvolvimento RK3568 ou emulador x86).
  • O SDK do OpenHarmony PC, que inclui ferramentas de compilação cruzada, cabeçalhos e bibliotecas.
  • Uma máquina de desenvolvimento com Linux (ex.: Ubuntu 22.04) ou Windows.

Primeiro, obtenha o código-fonte e as ferramentas a partir do repositório AtomGit:


# Clonar o projeto do OpenHarmony PC (exemplo fictício; consulte a documentação oficial)
git clone https://atomgit.com/openharmony-pc/ohos-pc-sdk.git
cd ohos-pc-sdk

# Definir variáveis de ambiente
export HARMONY_PC_SDK=$(pwd)/sdk
export PATH=$HARMONY_PC_SDK/toolchain/bin:$PATH

Caso Prático: Portando uma Ferramenta CLI do Linux para o HarmonyOS PC

Utilizaremos o utilitário htop como exemplo para demonstrar o processo completo de portabilidade.

Aálise de Dependências e Compatibilidade

No Linux, o htop depende das seguintes bibliotecas:

  • ncurses (para interface no terminal)
  • libm (funções matemáticas)
  • pthread (gerenciamento de threads)

O HarmonyOS PC fornece um ambiente similar ao POSIX, mas algumas interfaces podem exigir adaptações específicas.

Criação do Projeto para HarmonyOS PC

Utilize o sistema de compilação do OpenHarmony para configurar o projeto:


# Criar a estrutura de diretórios do projeto
mkdir -p htop_for_harmonypc
cd htop_for_harmonypc

# Gerar arquivos de configuração
touch BUILD.gn
mkdir -p headers libs source

Conteúdo do arquivo BUILD.gn:


import("//build/ohos.gni")

ohos_executable("htop_portado") {
  sources = [
    "source/*.c",
    "source/*.cpp",
  ]
  
  include_dirs = [
    "headers",
    "$HARMONY_PC_SDK/sysroot/usr/include",
    "$HARMONY_PC_SDK/sysroot/usr/include/ncurses",
  ]
  
  lib_dirs = [
    "$HARMONY_PC_SDK/sysroot/usr/lib",
  ]
  
  libs = [
    "ncurses_ohos",
    "m",
    "pthread",
  ]
  
  cflags = [
    "-std=c11",
    "-DHARMONY_PC_BUILD",
    "-Wall",
  ]
  
  ldflags = [
    "-L$HARMONY_PC_SDK/sysroot/usr/lib",
  ]
  
  # Configurações específicas do HarmonyOS PC
  subsystem_name = "utilitarios_cli"
  part_name = "modulo_cli"
}

Adaptação do Código-Fonte

No arquivo source/main.c, realize as modificações necessárias para o HarmonyOS PC:


#include <stdio.h>
#include <stdlib.h>
#include <ncurses.h>
#include <unistd.h>

// Inclusão de cabeçalhos específicos do HarmonyOS PC, se necessário
#ifdef HARMONY_PC_BUILD
#include "harmony_pc_init.h"
#endif

int main(int argc, char **argv) {
    // Inicialização do ambiente HarmonyOS PC
#ifdef HARMONY_PC_BUILD
    harmony_pc_init();
#endif
    
    // Configuração do ncurses
    initscr();
    cbreak();
    noecho();
    keypad(stdscr, TRUE);
    
    // Limpeza da tela e exibição de informações iniciais
    clear();
    mvprintw(0, 0, "htop para HarmonyPC - Monitor de Processos");
    mvprintw(2, 0, "Pressione 'q' para sair");
    refresh();
    
    // Exibição de processos simulados (substituir por leitura real de /proc)
    mvprintw(4, 0, "PID\tNome");
    mvprintw(5, 0, "1\tinit");
    mvprintw(6, 0, "2\tkthreadd");
    mvprintw(7, 0, "3\tksoftirqd/0");
    mvprintw(8, 0, "1234\thtop_portado");
    mvprintw(9, 0, "5678\tterminal");
    
    // Loop de interação do usuário
    int tecla;
    while ((tecla = getch()) != 'q') {
        // Lógica interativa adicional pode ser inserida aqui
        if (tecla == KEY_UP) {
            mvprintw(12, 0, "Tecla seta para cima pressionada");
        } else if (tecla == KEY_DOWN) {
            mvprintw(12, 0, "Tecla seta para baixo pressionada");
        }
        refresh();
    }
    
    // Finalização do ncurses
    endwin();
    
#ifdef HARMONY_PC_BUILD
    printf("Execução concluída no HarmonyOS PC.\n");
#endif
    
    return 0;
}

Compilação Cruzada

Execute a compilação na máquina de desenvolvimento:


# Navegar até o diretório do projeto e compilar
cd /caminho/para/htop_for_harmonypc
hb build -p pc

# O binário compilado estará no diretório out/pc
ls out/pc/htop_portado

Implantação e Execução

Transfira o executável para o dispositivo HarmonyOS PC:


# Conectar ao dispositivo via ADB (modo desenvolvedor ativado)
adb connect 192.168.1.100  # Substitua pelo IP real do dispositivo

# Transferir o arquivo
adb push out/pc/htop_portado /data/local/tmp/

# Acessar o shell do dispositivo e executar
adb shell
cd /data/local/tmp
chmod +x htop_portado
./htop_portado

Visualização da Saída

Ao executar, a ferramenta exibirá uma interface similar a esta no terminal do HarmonyOS PC:


+---------------------------------------+
| htop para HarmonyPC - Monitor de Processos |
|                                       |
| Pressione 'q' para sair              |
|                                       |
| PID   Nome                            |
| 1     init                            |
| 2     kthreadd                        |
| 3     ksoftirqd/0                     |
| 1234  htop_portado                    |
| 5678  terminal                        |
|                                       |
| Tecla seta para cima pressionada      |
+---------------------------------------+

Pontos-Chave de Adaptação

  1. Compatibilidade de Chamadas de Sistema: O HarmonyOS PC suporta a maioria das APIs POSIX, mas algumas chamadas específicas do Linux devem ser substituídas por equivalentes do HarmonyOS.
  2. Gerenciamento de Bibliotecas: Utilize as bibliotecas fornecidas pelo SDK do HarmonyOS PC, como libncurses_ohos.a no lugar de libncurses.so.
  3. Cadeia de Ferramentas de Compilação: É obrigatório usar o compilador cruzado do OpenHarmony (cleng/llvm).
  4. Ponto de Entrada: Adicione código de inicialização do HarmonyOS PC quando necessário.
  5. Diferenças de Caminhos: Observe as variações no sistema de arquivos entre Linux e HarmonyOS PC.

Contribuindo para a Comunidade

Após concluir a adaptação, hospede o código no AtomGit para compartilhamento:


# Inicializar repositório Git
git init
git add .
git commit -m "feat: port htop para HarmonyOS PC"

# Conectar ao repositório remoto (crie o repositório no atomgit.com primeiro)
git remote add origin https://atomgit.com/seunome/htop-para-harmonypc.git
git branch -M main
git push -u origin main

Sugestões para Outras Ferramentas CLI

  • Utilitários Básicos: coreutils, findutils, grep, sed, awk.
  • Ferramentas de Desenvolvimetno: gcc (já integrado via clang), make, cmake, git.
  • Ferramentas de Sistema: top, ps, netstat, df, mount.

Tags: OpenHarmony HarmonyOS PC Linux Migration Command Line Tools Cross-Compilation

Publicado em 6-5 23:46 por Thomas