gpt4 book ai didi

ios - 链接第 3 方框架时,theos tweak 未加载到应用程序中

转载 作者:行者123 更新时间:2023-11-28 20:52:03 26 4
gpt4 key购买 nike

我正在使用 theos 将第三个框架链接到我的测试调整中,它除了日志之外什么都不做,似乎在链接框架之后,tweak.dylib 根本没有加载到应用程序中。如果我在 makefile 中注释掉框架,调整效果很好。任何想法?谢谢

makefile关于框架的内容很简单:

ARCHS = arm64

include $(THEOS)/makefiles/common.mk

ADDITIONAL_OBJCFLAGS = -fobjc-arc

TWEAK_NAME = WebServerTest
WebServerTest_FILES = Tweak.xm


WebServerTest_CFLAGS += -F./Frameworks
WebServerTest_LDFLAGS += -F./Frameworks -framework GCDWebServers

include $(THEOS_MAKE_PATH)/tweak.mk

after-install::
install.exec "killall -9 SpringBoard"

tweak.xm 非常简单:

%ctor {
NSLog(@"Staring up tweak...");
%init();
}

所以如果我在上面注释掉

WebServerTest_CFLAGS += -F./Frameworks

WebServerTest_LDFLAGS += -F./Frameworks -framework GCDWebServers

调整工作正常:

Aug 13 10:06:20 iOS-Dev SpringBoard(WebServerTest.dylib)[10378] <Notice>: Staring up tweak...

但是,如果我开始链接框架,则根本不会加载 WebServerTest.dylib

我在 lldb cmd image list 中手动检查了一个测试应用程序,它显示 WebServerTest.dylib 根本没有加载

有什么想法吗?或者我如何开始调试错误?因为我不确定可能的原因在哪里。

环境:iOS 12.0,unc0ver 3.1.0

otool -l WebServerTest.dylib | fgrep -A5 LC_LOAD_DYLIB

表演

--
cmd LC_LOAD_DYLIB
cmdsize 72
name @rpath/GCDWebServers.framework/GCDWebServers (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 1.0.0
compatibility version 1.0.0
--

好像是用了@rpath,我能理解,但是我可以把这个框架嵌入到tweak.dylib中,这样它就可以自动加载了吗?

最佳答案

无论您将 GCDWebServers.framework 放在哪里,dyld 都不会寻找它。有几种方法可以解决这个问题。

您可以修补 GCDWebServersLC_ID_DYLIB 命令以包含绝对路径 - 您可能希望为此查看 man install_name_tool .

或者您可以将一些-rpath 标志添加到您的LDFLAGS。具体来说,如果您的 GCDWebServers 位于 /mypath/GCDWebServers.framework/GCDWebServers,您将添加:

-rpath /mypath/

或者,如果您想在 dylib 旁边放置 GCDWebServers.framework,无论绝对路径如何,您都应该能够使用:

-rpath @loader_path/

有关详细信息,请参阅 man dyldman ld

关于ios - 链接第 3 方框架时,theos tweak 未加载到应用程序中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57470368/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com