Skip to content

Commit 8205c8f

Browse files
author
StArray
committed
refactor(il2cpp): 修复某些bug
1 parent 04c2c3a commit 8205c8f

11 files changed

Lines changed: 16 additions & 676 deletions

File tree

‎Android/library/src/main/cpp/core/misc.c‎

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,5 @@
55
#include <dlfcn.h>
66
void* modmanager_il2cpp_init() {
77
void* handle = dlopen("libil2cpp.so", RTLD_LAZY | RTLD_NOLOAD);
8-
if (dlerror() == NULL) {
9-
return handle;
10-
}
11-
return 0;
8+
return handle;
129
}

‎StArray.ModManager.Android/Managed.cs‎

Lines changed: 3 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,6 @@ public static class Managed
2323
[UnmanagedCallersOnly(CallConvs = [typeof(CallConvCdecl)])]
2424
public static int Entry(int argc, IntPtr argv)
2525
{
26-
var totalSw = Stopwatch.StartNew();
27-
28-
// 桥接 Logger → Android logcat
2926
Benchmark.Begin();
3027
Logger.OnLog += (level, tag, msg) =>
3128
{
@@ -39,20 +36,13 @@ public static int Entry(int argc, IntPtr argv)
3936
};
4037
AndroidUtils.Write(prio, tag, msg);
4138
};
42-
Logger.Error($"{nameof(Managed)}-Benchmark", $"Logger bridge: {Benchmark.End():F3}s");
43-
44-
// 解析命令行参数
45-
Benchmark.Begin();
4639
string[] args = new string[argc];
4740
for (int i = 0; i < argc; i++)
4841
{
4942
IntPtr pStr = Marshal.ReadIntPtr(argv, i * IntPtr.Size);
5043
args[i] = Marshal.PtrToStringUTF8(pStr)!;
5144
}
52-
Logger.Error($"{nameof(Managed)}-Benchmark", $"Args parse ({argc} args): {Benchmark.End():F3}s");
5345

54-
// 路径解析
55-
Benchmark.Begin();
5646
string modsPath = args.Length > 0
5747
? args[0]
5848
: Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)!, "..", "mods");
@@ -61,7 +51,7 @@ public static int Entry(int argc, IntPtr argv)
6151
Directory.CreateDirectory(modsPath);
6252
NativeLibrary.SetDllImportResolver(typeof(Il2CppFunctions).Assembly, (libraryName, assembly, searchPath) =>
6353
{
64-
if (libraryName == "IL2CPP_LIBRARY_NAME")
54+
if (libraryName.Contains("IL2CPP_LIBRARY_NAME"))
6555
{
6656
return Il2CppInit();
6757
}
@@ -78,26 +68,14 @@ public static int Entry(int argc, IntPtr argv)
7868
_logWriter?.WriteLine($"[{DateTime.Now:yyyy-MM-dd HH:mm:ss}] [{level}] [{tag}] {msg}");
7969
};
8070

81-
Logger.Error($"{nameof(Managed)}-Benchmark", $"Path resolve: {Benchmark.End():F3}s");
82-
var backend = RuntimeManager.Detect();
83-
Logger.Info(nameof(Managed), "Backend: "+ backend);
84-
// 初始化
85-
Benchmark.Begin();
71+
_ = RuntimeManager.Detect();
8672
var loader = new ModLoader(modsPath);
87-
Logger.Error($"{nameof(Managed)}-Benchmark", $"ModLoader init: {Benchmark.End():F3}s");
88-
89-
Benchmark.Begin();
9073
var ui = new ModManagerUI(loader, Path.GetDirectoryName(AssemblyPath)!);
91-
Logger.Error($"{nameof(Managed)}-Benchmark", $"ModManagerUI init: {Benchmark.End():F3}s");
92-
9374
HookHelper.Instance = new DobbyHook();
94-
Benchmark.Begin();
9575
ImGuiEGLRender.OnRender += ui.Render;
9676
ImGuiEGLRender.Install();
97-
Logger.Error($"{nameof(Managed)}-Benchmark", $"ImGui install: {Benchmark.End():F3}s");
9877

99-
totalSw.Stop();
100-
Logger.Error($"{nameof(Managed)}-Benchmark", $"=== Startup total: {totalSw.Elapsed.TotalSeconds:F3}s ===");
78+
Logger.Info($"{nameof(Managed)}-Benchmark", $"=== Startup total: {Benchmark.End():F3}s ===");
10179
return 0;
10280
}
10381

‎StArray.ModManager.Android/Native/Dobby.cs‎

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,6 @@ public static int Hook(nint address, MethodInfo replaceMethod, out nint origin)
8181
private static extern nint _GetVersionRaw();
8282

8383
public static IntPtr SymbolResolver(string imageName, string symbolName){
84-
Logger.Error("Dobby::SymbolResolver",$"parseing: {imageName}:{symbolName}, stack:\n{new StackTrace()}");
8584
return _SymbolResolver(imageName, symbolName);
8685
}
8786

‎StArray.ModManager.Android/UI/ImGuiEGLRender.cs‎

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -86,8 +86,6 @@ private bool InstallInstance()
8686
_onRender += s_pendingOnRender;
8787
s_pendingOnRender = null;
8888
}
89-
90-
Logger.Error(nameof(ImGuiEGLRenderer), "eglSwapBuffers hooked via [NativeHook]");
9189
return true;
9290
}
9391

@@ -150,19 +148,13 @@ public static int OnSwapBuffers(IntPtr display, IntPtr surface)
150148
private void InitImGui(IntPtr display, IntPtr surface)
151149
{
152150
if (_initialized) return;
153-
154-
Logger.Error(nameof(ImGuiEGLRenderer), "Initializing ImGui with official backends...");
155-
156151
// 从 EGL surface 获取 ANativeWindow
157152
if (!Egl.QuerySurface(display, surface, Egl.WIDTH, out var width) ||
158153
!Egl.QuerySurface(display, surface, Egl.HEIGHT, out var height))
159154
{
160155
Logger.Error(nameof(ImGuiEGLRenderer), "Failed to query EGL surface for initialization");
161156
return;
162157
}
163-
164-
Logger.Error(nameof(ImGuiEGLRenderer), $"Surface size: {width}x{height}");
165-
166158
// 创建 ImGui 上下文 + 加载嵌入式字体 msyh + FA 图标(共享接口)
167159
((IImGuiRenderer)this).InitImGui();
168160
ImGuiInputHandler.IsInitialized = true;
@@ -182,23 +174,11 @@ private void InitImGui(IntPtr display, IntPtr surface)
182174
if (nativeWindow != IntPtr.Zero)
183175
{
184176
ImGuiImplAndroid.Init(nativeWindow);
185-
Logger.Error(nameof(ImGuiEGLRenderer),
186-
$"ImGui_ImplAndroid_Init success with window: 0x{nativeWindow:X}");
187-
}
188-
else
189-
{
190-
Logger.Error(nameof(ImGuiEGLRenderer),
191-
"Failed to get Unity ANativeWindow, touch input may not work");
192177
}
193178

194179
ImGuiImplOpenGL3.Init();
195180

196-
Logger.Error(nameof(ImGuiEGLRenderer),
197-
"Touch input handled via ImGui_ImplAndroid");
198-
199181
_initialized = true;
200-
Logger.Error(nameof(ImGuiEGLRenderer),
201-
"ImGui initialized with official OpenGL3 + Android input backends");
202182
}
203183

204184
private void BuildUI()

0 commit comments

Comments
 (0)