Perl在鸿蒙PC上的使用方法

ohos-perl 是为 OpenHarmony 平台编译的 Perl 编程语言解释器。本文档详细介绍如何在鸿蒙PC上安装和使用官方适配完成的 Perl 工具,包括路径依赖问题、HNP 包打包方法、安装使用以及 Perl 脚本的运行方法。

📋 目录


一、项目概述

1.1 Perl 语言简介

Perl(Practical Extraction and Report Language)是一种功能强大的编程语言,由 Larry Wall 开发。它以文本处理能力著称,被誉为"Unix 的瑞士军刀"。

核心特性:

  • 🔧 强大的文本处理:正则表达式和字符串处理能力极强
  • 📝 灵活语法:支持多种编程范式(过程式、面向对象、函数式)
  • 🎯 系统管理:广泛用于系统管理和自动化任务
  • 📦 CPAN 生态:通过 CPAN 拥有丰富的第三方模块
  • 🔄 跨平台:支持多种操作系统
  • 💻 脚本语言:适合快速开发和原型设计

主要应用场景:

  • 系统管理和自动化脚本
  • 文本处理和日志分析
  • Web 开发(CGI、Mojolicious)
  • 网络编程和系统工具
  • 数据处理和报告生成
  • 构建系统(如 autoconf 依赖 Perl)

1.2 项目信息

项目信息 详情
项目名称 ohos-perl
版本 5.42.0(官方适配版本)
许可证 Artistic License / GPL
目标平台 鸿蒙PC (aarch64-linux-ohos)
源码仓库 https://github.com/Perl/perl5
适配仓库 https://github.com/Harmonybrew/ohos-perl
预构建包 https://github.com/Harmonybrew/ohos-perl/releases
编译方式 本地编译(Native Compilation)

1.3 Perl 与其他工具的区别

特性 Perl ninja node ruby
类型 编程语言解释器 构建工具 JavaScript 运行时 编程语言解释器
编译方式 本地编译 交叉编译 交叉编译 本地编译
路径依赖 ⚠️严格路径依赖 无路径依赖 无路径依赖 无路径依赖
包管理 CPAN 无包管理 npm gem
主要用途 文本处理、系统管理 执行构建任务 运行 JavaScript 应用 运行 Ruby 脚本
可执行文件 perl、perldoc 等 仅 ninja node、npm ruby、irb、gem

1.4 为什么需要 ohos-perl?

在鸿蒙PC上进行开发时,我们经常需要:

  1. 运行 Perl 脚本:执行系统管理脚本、文本处理脚本等
  2. 系统工具依赖:许多构建工具(如 autoconf)依赖 Perl
  3. 文本处理任务:强大的正则表达式和文本处理能力
  4. 自动化脚本:编写系统管理和自动化任务脚本

二、Perl 的特殊性:路径依赖问题

2.1 路径依赖的核心问题

⚠️ 重要警告: Perl 在默认情况下不是 portable/relocatable 的,这意味着它对安装路径有严格要求。

问题根源:

  1. 硬编码路径:Perl 在构建时会将安装路径(prefix)硬编码到二进制文件和配置文件中
  2. 库路径依赖:Perl 的模块和库文件路径在构建时确定,运行时必须保持一致
  3. relocatable 限制 :虽然 Perl 支持 -Duserelocatableinc 构建参数,但即使使用该参数,在某些场景下仍会出现错误

2.2 预构建包的路径要求

预构建包的安装路径:

复制代码
/opt/perl-5.42.0-ohos-arm64

这意味着:

  • 必须安装在 /opt 目录 :预构建包构建时设置的 prefix 是 /opt/perl-5.42.0-ohos-arm64
  • 不能随意移动 :不能解压到其他目录(如 /usr/local/data/service/hnp/ 等)
  • 不能重命名:目录名称必须与构建时的 prefix 完全一致

2.3 为什么不能直接打包成 HNP?

HNP 包的安装路径规范:

复制代码
/data/service/hnp/<包名>.org/<包名>_<版本号>
例如:/data/service/hnp/perl.org/perl_5.42.0

冲突点:

  • 预构建包要求安装在 /opt/perl-5.42.0-ohos-arm64
  • HNP 包要求安装在 /data/service/hnp/perl.org/perl_5.42.0
  • 路径不一致,导致 Perl 无法正常工作

2.4 解决方案

方案一:重新构建 Perl(推荐)

在构建时修改 prefix,使其指向 HNP 包的安装路径:

bash 复制代码
./Configure \
    -des \
    -Dprefix=/data/service/hnp/perl.org/perl_5.42.0 \
    ...

方案二:使用符号链接(临时方案)

创建符号链接,将 HNP 安装路径链接到 /opt

bash 复制代码
sudo mkdir -p /opt
sudo ln -sf /data/service/hnp/perl.org/perl_5.42.0 /opt/perl-5.42.0-ohos-arm64

注意: 方案二可能在某些场景下仍有问题,推荐使用方案一。


三、为什么需要 HNP 包

3.1 系统安全限制

重要说明: 在鸿蒙PC上,由于系统安全规格限制等原因,暂不支持通过"解压 + 配 PATH"的方式直接使用 tar.gz 包

这意味着:

  • ❌ 不能直接解压 tar.gz 包到任意目录
  • ❌ 不能通过设置 PATH 环境变量来使用
  • ✅ 必须打包成 HNP(HarmonyOS Native Package)格式才能正常使用

3.2 HNP 包的优势

HNP 包是鸿蒙PC的官方包管理格式,具有以下优势:

  • 系统集成:与鸿蒙PC的包管理系统集成
  • 安全可靠:通过官方工具安装,符合系统安全规范
  • 易于管理:支持安装、卸载、更新等操作
  • 路径规范 :统一安装在 /data/service/hnp/ 目录下

3.3 Perl 的特殊性

Perl 作为编程语言解释器,具有以下特殊性:

  • 📦 多个可执行文件:perl、perldoc、pod2html 等
  • 📚 模块系统:支持标准库和 CPAN 模块
  • 🔧 CPAN 目录:用于安装第三方 CPAN 模块
  • 🔗 符号链接:需要创建多个命令的符号链接
  • ⚠️ 路径依赖:必须安装在构建时指定的路径

四、HNP 包打包方法(重要:需要重新构建)

4.1 为什么需要重新构建?

关键原因:

预构建包的 prefix 是 /opt/perl-5.42.0-ohos-arm64,而 HNP 包的安装路径是 /data/service/hnp/perl.org/perl_5.42.0。由于 Perl 的路径依赖特性,必须重新构建,将 prefix 设置为 HNP 包的安装路径。

4.2 重新构建步骤

4.2.1 准备构建环境

需要在 鸿蒙容器 中进行本地编译:

bash 复制代码
# 启动鸿蒙容器
docker run \
  --rm \
  -it \
  -v "$PWD":/workdir \
  -w /workdir \
  ghcr.io/hqzing/docker-mini-openharmony:latest \
  sh
4.2.2 修改构建脚本

创建修改后的构建脚本 build_hnp.sh

bash 复制代码
#!/bin/sh
set -e

# 配置变量 - 关键:使用 HNP 包的安装路径
HNP_PUBLIC_PATH="/data/service/hnp"
PERL_VERSION="5.42.0"
PERL_PREFIX="${HNP_PUBLIC_PATH}/perl.org/perl_${PERL_VERSION}"

# 清理旧文件
rm -rf *.tar.gz \
    perl5-5.42.0 \
    perl-5.42.0-ohos-arm64

# 准备依赖工具(与原始 build.sh 相同)
curl -L -O https://github.com/Harmonybrew/ohos-coreutils/releases/download/9.9/coreutils-9.9-ohos-arm64.tar.gz
curl -L -O https://github.com/Harmonybrew/ohos-gawk/releases/download/5.3.2/gawk-5.3.2-ohos-arm64.tar.gz
tar -zxf coreutils-9.9-ohos-arm64.tar.gz -C /opt
tar -zxf gawk-5.3.2-ohos-arm64.tar.gz -C /opt

curl -L -O https://github.com/Harmonybrew/ohos-llvm/releases/download/20251121/llvm-21.1.5-ohos-arm64.tar.gz
curl -L -O https://github.com/Harmonybrew/ohos-make/releases/download/4.4.1/make-4.4.1-ohos-arm64.tar.gz
tar -zxf llvm-21.1.5-ohos-arm64.tar.gz -C /opt
tar -zxf make-4.4.1-ohos-arm64.tar.gz -C /opt

# 设置环境变量
export PATH=/opt/coreutils-9.9-ohos-arm64/bin:$PATH
export PATH=/opt/gawk-5.3.2-ohos-arm64/bin:$PATH
export PATH=/opt/llvm-21.1.5-ohos-arm64/bin:$PATH
export PATH=/opt/make-4.4.1-ohos-arm64/bin:$PATH

# 创建安装目录
mkdir -p ${PERL_PREFIX}

# 编译 perl - 关键:使用 HNP 路径作为 prefix
curl -L https://github.com/Perl/perl5/archive/refs/tags/v5.42.0.tar.gz -o perl5-5.42.0.tar.gz
tar -zxf perl5-5.42.0.tar.gz
cd perl5-5.42.0

# 修改 perl_langinfo.h 以支持 OpenHarmony
sed -i 's/defined(__ANDROID__)/defined(__ANDROID__) || defined(__OHOS__)/g' perl_langinfo.h

# 配置构建 - 关键修改:使用 HNP 路径
./Configure \
    -des \
    -Dprefix=${PERL_PREFIX} \
    -Dcc=clang \
    -Dcpp=clang++ \
    -Dar=llvm-ar \
    -Dnm=llvm-nm \
    -Accflags=-D_GNU_SOURCE

make -j$(nproc)
make install
cd ..

# 复制许可证文件
cp perl5-5.42.0/Copying ${PERL_PREFIX}/
cp perl5-5.42.0/AUTHORS ${PERL_PREFIX}/

# 创建 hnp.json
cat > ${PERL_PREFIX}/hnp.json << EOF
{
    "type": "hnp-config",
    "name": "perl",
    "version": "5.42.0",
    "install": {
        "links": [
            {
                "source": "bin/perl",
                "target": "perl"
            },
            {
                "source": "bin/perldoc",
                "target": "perldoc"
            }
        ]
    }
}
EOF

# 打包
cd ${HNP_PUBLIC_PATH}/perl.org
tar -zcf /workdir/output/ohos_perl_${PERL_VERSION}.tar.gz perl_${PERL_VERSION}/
cd /workdir

# 使用 hnpcli 打包(如果可用)
if command -v hnpcli &> /dev/null; then
    hnpcli pack -i ${PERL_PREFIX} -o output/
    echo "HNP 包已生成: output/perl.hnp"
fi

sync
4.2.3 执行构建
bash 复制代码
# 在鸿蒙容器中执行
./build_hnp.sh

4.3 验证构建结果

bash 复制代码
# 检查安装目录
ls -la /data/service/hnp/perl.org/perl_5.42.0/

# 验证路径配置
/data/service/hnp/perl.org/perl_5.42.0/bin/perl -V | grep prefix
# 应该显示:prefix='/data/service/hnp/perl.org/perl_5.42.0'

五、安装与使用

5.1 安装 HNP 包

手动安装(使用 tar.gz)
bash 复制代码
# 在鸿蒙PC上执行

# 1. 解压 tar.gz 包
tar -xzf ohos_perl_5.42.0.tar.gz

# 2. 复制到安装目录(必须与构建时的 prefix 一致)
sudo cp -r perl_5.42.0/* /data/service/hnp/perl.org/perl_5.42.0/

# 3. 设置执行权限
sudo chmod +x /data/service/hnp/perl.org/perl_5.42.0/bin/*

# 4. 创建符号链接(根据 hnp.json 配置)
# hnp 系统会自动处理 links 配置,但也可以手动创建
sudo ln -sf /data/service/hnp/perl.org/perl_5.42.0/bin/perl /usr/local/bin/perl
sudo ln -sf /data/service/hnp/perl.org/perl_5.42.0/bin/perldoc /usr/local/bin/perldoc

5.2 验证安装

bash 复制代码
# 检查 Perl 是否在 PATH 中
which perl

# 检查版本
perl --version
# 应该输出:This is perl 5, version 42, subversion 0...

# 验证安装路径
perl -V | grep prefix
# 应该显示:prefix='/data/service/hnp/perl.org/perl_5.42.0'

# 测试 Perl 运行
perl -e "print 'Hello, HarmonyOS!\n'"
# 应该输出:Hello, HarmonyOS!

5.3 配置 PATH(可选)

如果 Perl 命令不在 PATH 中,可以手动添加到 PATH:

bash 复制代码
# 临时添加到 PATH(当前会话有效)
export PATH=$PATH:/data/service/hnp/perl.org/perl_5.42.0/bin

# 永久添加到 PATH(添加到 ~/.bashrc 或 ~/.zshrc)
echo 'export PATH=$PATH:/data/service/hnp/perl.org/perl_5.42.0/bin' >> ~/.bashrc
source ~/.bashrc

六、Perl 使用示例

6.1 基本使用

6.1.1 运行 Perl 脚本
bash 复制代码
# 创建简单的 Perl 脚本
cat > hello.pl << 'EOF'
#!/usr/bin/env perl
use strict;
use warnings;

print "Hello, HarmonyOS!\n";
print "Perl version: $^V\n";
EOF

# 运行脚本
perl hello.pl
# 输出:
# Hello, HarmonyOS!
# Perl version: v5.42.0
6.1.2 一行命令执行
bash 复制代码
# 使用 -e 参数执行一行 Perl 代码
perl -e "print 'Hello, HarmonyOS!\n'"

# 使用 -e 执行多行代码
perl -e "
  my \$name = 'HarmonyOS';
  print \"Hello, \$name!\\n\";
"
6.1.3 交互式 Perl Shell
bash 复制代码
# 使用 perl -de 进入调试模式(类似交互式)
perl -de 1

# 或使用 perlsh(如果可用)

6.2 文本处理示例

perl 复制代码
# text_process.pl
#!/usr/bin/env perl
use strict;
use warnings;

# 读取文件并处理
open my $fh, '<', 'input.txt' or die "Cannot open file: $!";
while (my $line = <$fh>) {
    # 使用正则表达式处理
    $line =~ s/old/new/g;
    print $line;
}
close $fh;

6.3 文件操作示例

perl 复制代码
# file_ops.pl
#!/usr/bin/env perl
use strict;
use warnings;
use File::Copy;

# 读取文件
my $content = do {
    local $/;
    open my $fh, '<', 'input.txt' or die $!;
    <$fh>;
};

# 写入文件
open my $fh, '>', 'output.txt' or die $!;
print $fh $content;
close $fh;

# 遍历目录
opendir my $dir, '.' or die $!;
while (my $file = readdir $dir) {
    next if $file =~ /^\./;
    print "Found: $file\n";
}
closedir $dir;

6.4 系统命令执行

perl 复制代码
# system_cmd.pl
#!/usr/bin/env perl
use strict;
use warnings;

# 执行系统命令
my $result = `ls -la`;
print $result;

# 使用 system 方法
system('echo "Hello from Perl"');

# 使用 exec(会替换当前进程)
# exec('ls', '-la');

6.5 实际应用场景

场景 1:日志分析脚本
perl 复制代码
# log_analyzer.pl
#!/usr/bin/env perl
use strict;
use warnings;

my %count;

while (<>) {
    if (/ERROR/) {
        $count{error}++;
    } elsif (/WARN/) {
        $count{warn}++;
    }
}

print "Errors: $count{error}\n";
print "Warnings: $count{warn}\n";

使用方式:

bash 复制代码
perl log_analyzer.pl < /var/log/app.log
场景 2:批量文件处理
perl 复制代码
# batch_process.pl
#!/usr/bin/env perl
use strict;
use warnings;
use File::Find;

find(sub {
    return unless -f && /\.txt$/;
    print "Processing: $File::Find::name\n";
    # 处理文件...
}, '.');

七、CPAN 模块管理

7.1 CPAN 简介

CPAN(Comprehensive Perl Archive Network)是 Perl 的模块仓库,类似于 Python 的 PyPI 或 Node.js 的 npm。

7.2 基本操作

7.2.1 配置 CPAN
bash 复制代码
# 首次使用需要配置 CPAN
perl -MCPAN -e shell

# 在 CPAN shell 中:
# cpan> o conf init
# cpan> install Bundle::CPAN
# cpan> reload cpan
7.2.2 安装模块
bash 复制代码
# 使用 cpan 命令安装模块
cpan JSON

# 或使用 cpanm(需要先安装)
cpan App::cpanminus
cpanm JSON

# 安装到用户目录(不需要 root 权限)
cpanm --local-lib=~/perl5 JSON
7.2.3 查看已安装模块
bash 复制代码
# 列出所有已安装模块
perldoc perllocal

# 或使用 cpan
cpan -l

# 查看特定模块
perldoc JSON

7.3 常用 CPAN 模块推荐

模块名称 用途 安装命令
JSON JSON 处理 cpan JSON
LWP::UserAgent HTTP 客户端 cpan LWP::UserAgent
File::Find 文件查找(标准库) 已包含
Getopt::Long 命令行参数解析(标准库) 已包含
DateTime 日期时间处理 cpan DateTime
DBI 数据库接口 cpan DBI

7.4 CPAN 模块安装路径

bash 复制代码
# 查看模块安装路径
perl -V | grep '@INC'

# 查看特定模块路径
perl -MJSON -e 'print $INC{"JSON.pm"}, "\n"'

注意: 在 HNP 包安装的 Perl 中,CPAN 模块默认安装到:

复制代码
/data/service/hnp/perl.org/perl_5.42.0/lib/perl5/site_perl/

八、常见问题

Q1: 为什么不能直接使用 tar.gz 包?

A: 由于鸿蒙PC的系统安全规格限制,不允许通过"解压 + 配 PATH"的方式直接使用软件包。必须使用 HNP 包格式,通过官方包管理工具安装。

Q2: 为什么需要重新构建才能打包 HNP?

A: Perl 对安装路径有严格要求。预构建包的 prefix 是 /opt/perl-5.42.0-ohos-arm64,而 HNP 包的安装路径是 /data/service/hnp/perl.org/perl_5.42.0。由于路径不一致,必须重新构建,将 prefix 设置为 HNP 包的安装路径。

Q3: 如何获取 hnpcli 工具?

A: hnpcli 是鸿蒙PC的包管理工具,通常包含在 OHOS SDK 中。你可以:

Q4: 安装后找不到 perl 命令?

A: 检查以下几点:

  1. 确认安装路径是否正确:/data/service/hnp/perl.org/perl_5.42.0/bin/perl
  2. 检查 PATH 环境变量是否包含该路径
  3. 检查 hnp.json 中的 links 配置是否正确
  4. 验证安装路径是否与构建时的 prefix 一致

Q5: Perl 脚本报错 "Can't locate ... in @INC"?

A: 这通常是因为:

  1. 模块未安装:使用 cpancpanm 安装所需模块
  2. 路径问题:确保 Perl 安装在正确的路径(与构建时的 prefix 一致)
  3. 模块路径:检查 perl -V 中的 @INC 路径

Q6: 如何卸载 perl?

A: 手动卸载:

bash 复制代码
# 删除安装目录
sudo rm -rf /data/service/hnp/perl.org/perl_5.42.0

# 删除符号链接
sudo rm -f /usr/local/bin/perl /usr/local/bin/perldoc

Q7: 可以在开发板上使用 tar.gz 包吗?

A: 可以。在鸿蒙开发板上,可以使用 hdc 推送 tar.gz 包,然后解压到 /opt 目录:

bash 复制代码
hdc file send perl-5.42.0-ohos-arm64.tar.gz /data
hdc shell

# 需要先把根目录挂载为读写
mount -o remount,rw /
mkdir -p /data/opt
ln -s /data/opt /opt

cd /data
tar -zxf perl-5.42.0-ohos-arm64.tar.gz -C /opt
export PATH=$PATH:/opt/perl-5.42.0-ohos-arm64/bin

注意: 必须解压到 /opt 目录,不能换成其他目录。

Q8: 如何更新到新版本?

A:

  1. 下载新版本的源码
  2. 按照构建步骤重新构建,使用新的 prefix
  3. 卸载旧版本:hnp uninstall perl
  4. 安装新版本:hnp install perl.hnp

注意: 更新后需要重新安装 CPAN 模块。

Q9: 为什么不能使用 -Duserelocatableinc 参数?

A: 虽然 Perl 支持该参数,但即使使用该参数,在某些使用场景下仍会出现错误。因此本项目选择不构建 relocatable 版本,而是要求安装路径与构建时的 prefix 保持一致。

Q10: 如何自定义安装路径?

A: 如果你需要将 Perl 安装到其他路径,需要重新构建:

bash 复制代码
# 修改 build_hnp.sh 中的 PERL_PREFIX
PERL_PREFIX="/your/custom/path"

# 然后执行构建
./build_hnp.sh

九、总结与最佳实践

9.1 安装最佳实践

  1. 重新构建:在鸿蒙PC上使用 HNP 包时,必须重新构建,将 prefix 设置为 HNP 包的安装路径
  2. 路径一致性:确保安装路径与构建时的 prefix 完全一致
  3. 版本管理:明确指定版本号,避免版本冲突
  4. 路径规范 :遵循 HNP 包的路径规范:/data/service/hnp/<包名>.org/<包名>_<版本号>

9.2 使用最佳实践

  1. 使用 strict 和 warnings :在 Perl 脚本中始终使用 use strict; use warnings;
  2. 模块管理:使用 CPAN 或 cpanm 管理第三方模块
  3. 路径检查:在脚本中检查 Perl 安装路径是否正确
  4. 错误处理 :使用 dieeval 进行错误处理

9.3 路径依赖处理

  1. 理解限制:明确 Perl 的路径依赖特性
  2. 构建时规划:在构建时就确定好安装路径
  3. 避免移动:安装后不要移动或重命名目录
  4. 文档记录:在文档中明确说明路径要求

9.4 故障排查

  1. 验证路径 :使用 perl -V 检查 prefix 路径
  2. 检查模块 :使用 perl -V 检查 @INC 路径
  3. 重新构建:遇到路径问题时,考虑重新构建
  4. 查看日志:检查构建和安装日志

📎 附录

A. 📁 文件清单

📦 预构建包:

  • perl-5.42.0-ohos-arm64.tar.gz - 官方适配完成的预构建包(prefix: /opt)

📝 配置文件:

  • hnp.json - HNP 包配置文件
  • build_hnp.sh - 重新构建脚本(用于 HNP 包)

📦 生成文件:

  • perl.hnp - HNP 格式安装包
  • ohos_perl_5.42.0.tar.gz - tar.gz 格式发布包

B. 💻 常用命令

bash 复制代码
# 重新构建(用于 HNP 包)
./build_hnp.sh

# 安装命令
hnp install perl.hnp

# 验证安装
perl --version
perl -V | grep prefix

# 运行脚本
perl script.pl

# CPAN 操作
cpan JSON
cpanm JSON

C. 📌 版本信息

  • 📁 Perl 版本: 5.42.0
  • 📅 适配日期: 2025-12-15
  • 🎯 目标平台: aarch64-linux-ohos
  • 🔧 构建系统: 本地编译(Native Compilation)
  • 📦 包格式: HNP (HarmonyOS Native Package)
  • ⚠️ 路径依赖: 必须与构建时的 prefix 一致

D. ⚠️ 重要提示

路径依赖问题总结:

  1. 预构建包 :必须安装在 /opt/perl-5.42.0-ohos-arm64
  2. HNP 包 :必须重新构建,prefix 设置为 /data/service/hnp/perl.org/perl_5.42.0
  3. 不能移动:安装后不能移动或重命名目录
  4. 不能使用 relocatable :即使使用 -Duserelocatableinc 也可能出错

🎉 结语

本文档详细介绍了如何在鸿蒙PC上安装和使用官方适配完成的 Perl 编程语言解释器。由于 Perl 的路径依赖特性,在鸿蒙PC上使用 HNP 包时需要重新构建,这是与其他工具(如 ninja、node)的重要区别。

希望本文档能够帮助开发者:

  • 📦 理解 Perl 的路径依赖问题和解决方案
  • 🔧 掌握 Perl 在鸿蒙PC上的重新构建和安装方法
  • 📚 学习 Perl 脚本编写和 CPAN 模块管理
  • 💻 避免路径依赖导致的常见问题

💬 如有问题或建议,欢迎反馈!

相关推荐
m5655bj3 小时前
使用 C# 设置 Word 段落对齐样式
开发语言·c#·word
福尔摩斯张3 小时前
基于TCP的FTP文件传输系统设计与实现(超详细)
linux·开发语言·网络·网络协议·tcp/ip·udp
技术净胜3 小时前
MATLAB 环境搭建与认知实战教程:从下载安装到入门全解析教程
开发语言·matlab
爱吃大芒果3 小时前
Flutter 自定义 Widget 开发:从基础绘制到复杂交互
开发语言·javascript·flutter·华为·ecmascript·交互
帅得不敢出门3 小时前
MTK Android11 APP调用OTA升级
android·java·开发语言·framework
Swift社区3 小时前
用 Task Local Values 构建 Swift 里的依赖容器:一种更轻量的依赖注入思路
开发语言·ios·swift
黑牛先生3 小时前
【GDB】调试Jsoncpp源码
开发语言·c++·算法
ibuki_fuko3 小时前
QT/C++ 程序启动时检查程序是否已经启动
开发语言·c++·qt
Q_Q5110082853 小时前
基于Java的加油站销售积分管理系统的设计与实
java·开发语言