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

开发 Zygisk 模块

本仓库托管了一个 Zygisk 模块模板,供开发者开始开发 Zygisk 模块。在开发 Zygisk 模块之前,您应首先查阅 Magisk Modules 的官方文档。请勿为您的新模块 fork 本仓库;请手动克隆本仓库,或在 GitHub 界面中点击“Use this template”按钮。

本仓库已归档,因为它旨在只读;该项目并未被弃用。如有任何问题,请向主 Magisk 仓库报告。

API

  • 最新公开 Zygisk API 的规范 URL 为 module/jni/zygisk.hpp
  • 头文件自带文档;请直接参考头文件源代码以获取所有 Zygisk API 详情。
  • Magisk 致力于永远保持向后兼容。也就是说,每当较新版本的 Magisk 中 Zygisk 有 API 更新时,Magisk 始终可以加载为旧版 Zygisk API 构建的 Zygisk 模块。
  • 如果您不需要较新 API 版本中引入的新功能,完全可以使用旧版 API 版本以保持最大兼容性。
Zygisk APIMinimal MagiskDiff
v527000v4..v5
v426000v3..v4
v324300v2..v3
v224000N/A

备注

  • 此仓库可以使用 Android Studio 打开。
  • 开发 Zygisk 模块需要现代 C++ 编译器。请使用 NDK r21 或更高版本。
  • 所有 C++ 代码位于 module/jni 文件夹中。
  • 除非您知道自己在做什么,否则请勿修改 Application.mk 中的默认配置。

C++ STL

  • Application.mk 中的 APP_STL 变量被设置为 none请勿使用 NDK 中包含的任何 C++ STL。
  • 如果您想使用 C++ STL,您必须使用此仓库中作为 git 子模块包含的 libcxx。Zygisk 模块的代码被注入到 Zygote 中,并且包含的 libc++ 被设置为轻量级且完全自包含,以防止与宿主程序发生冲突。
  • 如果您不需要 STL,请链接到系统 libstdc++,以便您至少可以调用 new 运算符。
  • 两种配置都在示例 Android.mk 中进行了演示。

构建

  • module 文件夹中,调用 ndk-build 来编译你的模块。
  • 你的模块库将位于 libs/<abi>/lib<module_name>.so
  • 将库复制到你的模块的 zygisk 文件夹中,并以 ABI 作为其文件名:
module_id
├── module.prop
└── zygisk
    ├── arm64-v8a.so
    ├── armeabi-v7a.so
    ├── x86.so
    └── x86_64.so

许可证

尽管 Magisk 主项目采用 GPLv3 许可,但 Zygisk API 及其头文件并不采用。本仓库中的所有源代码均基于 0BSD(一种公有领域等效许可证)发布,因此您在开发 Zygisk 模块时无需担心任何许可问题。