ITADN
meganz/sdk
meganz/sdk · 文件 下载 ZIP
文件最后提交记录最后更新时间
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈

MEGA SDK - 客户端访问引擎

MEGA --- The Privacy Company --- 是一家安全云存储提供商, 通过端到端加密保护您的数据。我们将其称为用户控制加密, 即 UCE,且我们所有客户端都会自动管理它。

存储在 MEGA 上的所有文件均经过加密。所有与 MEGA 之间的数据传输均经过加密。尽管 大多数云存储提供商都能并确实声称做到这一点,但 MEGA 与众不同——不同于行业惯例 中由云存储提供商持有解密密钥的做法,在 MEGA 上,您控制加密, 您持有密钥,并自行决定授予或拒绝谁访问您的文件。

本 SDK 为您提供我们客户端应用的全部功能,让您能够创建 自己的应用或分析我们产品的安全性。您准备好开始了吗?请继续阅读。

SDK 内容

在本 SDK 中,您可以找到我们的底层 SDK,该 SDK 在 MEGA 发布后几个月就已发布, 一个新的中间层,使其更易于使用并与其他编程语言绑定,以及 针对我们当前所有支持平台(Android、GNU/Linux、iOS、macOS 和 Windows)的示例应用。

examples 文件夹中,您可以找到使用以下内容的示例应用:

  1. 底层 SDK:
  • megacli(一个强大的命令行工具,允许使用所有 SDK 功能)
  1. 公共 API:
  • 位于 examples/simple_client 的纯 C++ 示例应用
  • 位于 examples/android 的 Android 示例应用(使用基于 SWIG 的 Java 绑定)
  • 位于 examples/iOS 的 iOS 示例应用(使用 Objective-C 绑定)

MEGAcmd,一个更高级的命令行应用程序,它使用 SDK 来提供对 MEGA 的交互式和可脚本化访问。例如,您可以通过运行 megacmd-server 并从 PHP/Python 代码与其通信来使用它。

如何构建 SDK 库

对于 SDK 的开发和编译,我们使用 CMake 作为跨平台项目配置工具。我们还使用 VCPKG 来管理在大多数平台(GNU/Linux、macOS 和 Windows)上构建 SDK 所需的依赖项。

构建工具

系统中应可用一些常见的开发工具,以便能够构建 MEGA SDK 和所需的依赖项:

  • Git:使用系统包管理器提供的版本,或从 https://git-scm.com 安装
  • CMake 3.19 或更高版本:使用系统包管理器提供的版本,或从 https://cmake.org 安装

Windows

确保您的系统上已安装 Visual Studio,包含构建 C++ 源代码所需的组件,以及 Windows SDK:

MacOS

需要 Xcode 和开发者工具。要安装开发者工具,请运行以下命令并遵循说明:

$ xcode-select --install

系统中还应可用以下软件包:

  • autoconf, autoconf-archive, automake, pkg-config, nasm 和 libtool。

如果您已安装任何包管理器,可以使用它,或者从源代码构建并安装它们

Linux

对于基于 Debian 的发行版,你可以使用以下命令安装所需的编译器和工具:

sudo apt install build-essential curl zip unzip autoconf autoconf-archive nasm libtool-bin

其他 Linux 发行版的软件包名称可能有所不同,但使用与上述列表类似的软件包应该能够成功构建。

准备源代码

首先,准备一个你选择的目录来操作 MEGA SDK。mega 目录 将在本文档的示例中用作工作目录。

mkdir mega
cd mega

然后,克隆 MEGA SDK 仓库以获取 MEGA SDK 的源代码。

git clone https://github.com/meganz/sdk

在 MEGA SDK 旁边,克隆 VCPKG 仓库。如果你已经在使用 VCPKG 并且拥有 VCPKG 仓库的本地克隆,你可以跳过此步骤并使用系统中已有的 VCPKG。

git clone https://github.com/microsoft/vcpkg

注意:VCPKG 本地仓库需要不时更新。如果从未更新,最终将无法找到新的依赖项或已更新到比现有版本更新的版本的依赖项。 解决方法很简单:进入 VCPKG 本地仓库并运行 git pull

配置

以下说明用于从 CLI 配置项目,但如果配置了相同的 CMake 参数,cmake-gui 或任何与 CMake 兼容的编辑器或 IDE 都应该适用。

SDK 的配置方式与其他常规 CMake 项目相同。唯一始终需要的参数是 VCPKG 目录,用于管理第三方依赖项。要从工作区(mega 目录)使用默认选项配置 SDK,请运行 CMake:

cmake -DVCPKG_ROOT=vcpkg -DCMAKE_BUILD_TYPE=Debug -S sdk -B build_dir

注意:对于多配置生成器(如 Visual Studio),可能不需要 -DCMAKE_BUILD_TYPE=<Debug|Release>

在上述命令中,为简洁起见使用了相对路径。如果您想更改 VCPKG、SDK 或构建目录的位置,只需为其中任意一项提供有效的相对或绝对路径即可。

在项目配置过程中,VCPKG 将构建并配置该平台所需的库。首次运行时可能需要一段时间,但一旦库构建完成,VCPKG 将从二进制缓存中获取它们。

可以在 sdklib_options.cmake 文件中找到一些用于配置 SDK 库的选项,例如 ENABLE_SYNC 或 USE_PDFIUM。 用于管理示例和测试的选项位于 CMakeLists.txt

构建源代码

配置好 MEGA SDK 后,只需构建完整的项目:

cmake --build build_dir

您可以指定 --target=<target>,例如 SDKlibmegacli,或者保持命令不变以构建所有目标。 此外,可以添加 -j<N> 来管理并发并加快构建速度。

构建完成后,二进制文件将位于 build_dir

运行 megacli

要运行示例应用 megacli,请前往 build_dir 中的 examples/megacli 目录并执行 megacli 二进制文件。

最低支持的操作系统版本

Android

  • Android 9.0

DMS

  • DMS 7.2

GNU/Linux

  • Arch
  • Debian 11
  • Fedora 40
  • OpenSUSE Leap 15.6
  • Raspberry Pi OS Lite (Debian 12)
  • Ubuntu 20.04 LTS

iOS

  • iOS 15

macOS

  • macOS 10.15 (Intel)
  • macOS 11.1 (Apple silicon)

Windows

  • Windows 10
  • Windows Server 2019

用法

底层 SDK 目前尚无内联文档。如果您想使用它, 请查看我们的示例应用 examples/megacli

中间层已使用 Doxygen 进行了文档化。您唯一需要 包含以进行使用的公共头文件是 include/megaapi.h。您可以在该头文件中阅读文档。

附加信息

文件夹同步

在此版本中,同步功能在范围和功能上受到限制:

  • 访问同一远程文件夹的客户端之间没有锁定机制。 并发创建同名文件和文件夹可能导致 服务器端出现重复项。

  • 具有不同文件系统命名语义的客户端之间的同步 可能导致数据丢失,例如,当同步包含 ABC.TXTabc.txt 的文件夹与 Windows 客户端时。

  • 在 POSIX 平台上,假定文件名以 UTF-8 编码。无效的 字节序列可能导致未定义行为。

  • 本地文件系统项不得向同步子系统暴露超过一次。任何重复项,无论是通过嵌套同步还是通过文件系统链接,都会导致意外结果和数据丢失。

  • 不支持就地版本控制。已删除的远程文件可在 //bin/SyncDebris 中找到(仅在同步到已登录账户自己的 云盘时 - 同步到入站共享时没有 SyncDebris 功能),已删除的本地文件位于本地同步根目录中的同步专用隐藏碎片 文件夹中。

  • 不支持增量写入。更改的文件总是整体覆盖,这 意味着同步例如实时数据库表不是一个好主意。

  • 不支持直接点对点同步。即使同一本地子网中的两台机器 仍然会通过远程存储基础设施进行同步。

  • 不支持单向同步(仅备份、仅恢复)。 同步到入站共享需要具有完全访问权限。

Windows 上的 megacli

目前,megacli 示例在 cmd.exe 中运行时未正确处理控制台 Unicode 输入/输出。

文件名注意事项:请在所有路径前添加 \\?\ 以避免以下 问题:

  • MAX_PATH(260 个字符)长度限制,这将导致 无法访问深层目录结构中的文件

  • 禁止的文件名(con/prn/aux/clock$/nul/com1...com9/lpt1...lpt9)。 这些文件和文件夹通过例如资源管理器仍然无法访问!

此外,请禁用自动短名称生成,以消除与现有短名称冲突的风险。