@@ -56,28 +56,70 @@ Android/library/ 原生库 (libmodmanager.so)
5656- ** IImGuiRenderer** interface — swap between EGL, Vulkan backends
5757- ** CoreCLR args** — pass ` string[] ` from Java to managed ` Entry(int, IntPtr) `
5858
59+ ## Third-Party Libraries
60+
61+ | Library | License | Used In |
62+ | ---------| ---------| ---------|
63+ | [ Dear ImGui] ( https://github.com/ocornut/imgui ) | MIT | UI rendering |
64+ | [ cimgui] ( https://github.com/cimgui/cimgui ) | MIT | ImGui C API bindings |
65+ | [ ImGui.NET] ( https://github.com/ImGuiNET/ImGui.NET ) | MIT | C# ImGui bindings |
66+ | [ kiero2] ( https://github.com/kirchesz/kiero2 ) | MIT | Graphics API detection (D3D9/11/12/GL/VK) |
67+ | [ MinHook] ( https://github.com/TsudaKageyu/minhook ) | BSD-2 | API hooking |
68+ | [ Corehold] ( https://github.com/StArraySharp/Corehold ) | MIT | winmm proxy DLL + CoreCLR hosting |
69+ | [ Dobby] ( https://github.com/jmpews/Dobby ) | Apache-2.0 | Android inline hook |
70+ | [ CoreCLR] ( https://github.com/dotnet/runtime ) | MIT | .NET runtime |
71+ | [ FontAwesome 7] ( https://fontawesome.com ) | OFL/SIL | Icon font |
72+
5973## Build
6074
61- Requires .NET 10 SDK and Android NDK 27+ .
75+ Requires .NET 10 SDK + MinGW (gcc/cmake on PATH) .
6276
6377``` bash
64- # Build C# mod manager
65- cd StArray.ModManager
66- dotnet build -c Release
78+ # Windows (native + C#, one command)
79+ dotnet build StArray.ModManager.Windows -c Release
80+
81+ # Android
82+ cd Android && ./gradlew :library:assembleRelease
83+ ```
6784
68- # Build Android native library
69- cd Android
70- ./gradlew :library:assembleRelease
85+ ## Windows Architecture
86+
87+ The Windows native DLL (` StArray.ModManager.Windows.Native.dll ` ) uses
88+ [ kiero2] ( https://github.com/kirchesz/kiero2 ) + [ MinHook] ( https://github.com/TsudaKageyu/minhook ) to
89+ detect and hook the game's graphics API at runtime.
90+
91+ | Backend | Support |
92+ | ---------| ---------|
93+ | D3D12 | Descriptor heap + Command list |
94+ | D3D11 | Device + Context |
95+ | D3D9 | Device |
96+ | OpenGL / Vulkan | Detected only |
97+
98+ The C# side (` ImGuiRenderer ` ) is backend-agnostic — it provides init/shutdown/render callbacks and
99+ the native DLL handles all platform-specific ` ImGui_Impl* ` setup.
100+
101+ ``` mermaid
102+ flowchart LR
103+ CSharp[C# ImGuiRenderer] -->|P/Invoke Init| Native[Native DLL]
104+ Native -->|kiero| API[D3D9/11/12]
105+ API -->|MinHook| Present[Present Hook]
106+ Present -->|callback| CSharp
107+ CSharp -->|ImGui.NET| cimgui[cimgui.dll]
71108```
72109
73110## Target
74111
75- - Android arm64-v8a
76- - IL2CPP Unity games (API 26+)
112+ - Windows x64 (D3D9/11/12) — DLL injection or CoreCLR hosting
113+ - Android arm64-v8a (OpenGL ES) — IL2CPP Unity games (API 26+)
77114- CoreCLR .NET 10 runtime
78115
79116## Getting Started
80117
118+ ``` bash
119+ git clone --recurse-submodules https://github.com/StArraySharp/StArray.ModManager.git
120+ dotnet build StArray.ModManager.Windows -c Release
121+ ```
122+
81123See [ GET_STARTED.md] ( GET_STARTED.md ) for injection and build instructions.
82124
83125Runtime assemblies can be downloaded from the [ runtime-references release] ( https://github.com/StArraySharp/StArray.ModManager/releases/tag/0 ) .
0 commit comments