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 API | Minimal Magisk | Diff |
|---|---|---|
| v5 | 27000 | v4..v5 |
| v4 | 26000 | v3..v4 |
| v3 | 24300 | v2..v3 |
| v2 | 24000 | N/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 模块时无需担心任何许可问题。