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
- 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.
- Gerenciamento de Bibliotecas: Utilize as bibliotecas fornecidas pelo SDK do HarmonyOS PC, como
libncurses_ohos.ano lugar delibncurses.so. - Cadeia de Ferramentas de Compilação: É obrigatório usar o compilador cruzado do OpenHarmony (cleng/llvm).
- Ponto de Entrada: Adicione código de inicialização do HarmonyOS PC quando necessário.
- 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.