我使用Theos创建了一个简单的调整,它在应用程序窗口中添加了一个黄色的UIView(没什么特别的),它运行得很好。然后我创建了一个dylib文件(名为AlertLib),其中包含一个类(也称为AlertLib),其中包含一个方法:显示一个简单的UIAlertView
。我将AlertLib.dylib复制到/ opt / theos / lib文件夹,将AlertLib.h复制到/ opt / theos / include文件夹。
我的Makefile看起来像这样:
export ARCHS = armv7 arm64
export TARGET = iphone:clang:latest:8.0
include $(THEOS)/makefiles/common.mk
TWEAK_NAME = YellowSquare
YellowSquare_FILES = Tweak.xm
YellowSquare_FRAMEWORKS = UIKit Foundation
YellowSquare_LDFLAGS = -lAlertLib
include $(THEOS_MAKE_PATH)/tweak.mk
after-install::
install.exec "killall -9 SpringBoard"
Tweak.xm文件看起来像这样:
#import "AlertLib.h"
%hook AppDelegate
- (void) applicationDidBecomeActive:(UIApplication *) application
{
static dispatch_once_t once;
dispatch_once(&once, ^{
UIView *yellowSquareView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];
yellowSquareView.backgroundColor = [UIColor yellowColor];
UILabel *tweakLabel = [[UILabel alloc] initWithFrame:yellowSquareView.bounds];
tweakLabel.backgroundColor = [UIColor clearColor];
tweakLabel.text = @"TWEAK";
tweakLabel.font = [UIFont systemFontOfSize:25];
tweakLabel.textAlignment = NSTextAlignmentCenter;
[yellowSquareView addSubview:tweakLabel];
UIWindow *window = [UIApplication sharedApplication].keyWindow;
yellowSquareView.center = window.center;
[window addSubview:yellowSquareView];
[[AlertLib sharedInstance] showAlert];
});
%orig;
}
%end
之后我编译了调整,并将其安装到设备上,没有错误。但是,现在调整不起作用,即在应用程序窗口上没有添加黄色视图,也没有显示警报。如何正确嵌入自定义dylib文件进行调整?
答案 0 :(得分:0)
根据它的外观判断我的赌注是AlertLib
未安装在设备上。如果" NOT WORKING"那就是这种情况。意味着应用程序崩溃
我想要求详细定义" NOT WORKING"如果可能的话,编译dylib。
答案 1 :(得分:0)
我通过将自定义库作为子项目添加到我的调整中解决了我的问题。
我在tweak的根目录中运行命令package configuration for libffi is not found
"x86_64-w64-mingw32-gcc -o conftest.exe -IC:/Ruby24-x64/include/ruby-
2.4.0/x64-mingw32 -IC:/Ruby24-x64/include/ruby-2.4.0/ruby/backward -
IC:/Ruby24-x64/include/ruby-2.4.0 -I. -D_FORTIFY_SOURCE=2 -
D__USE_MINGW_ANSI_STDIO=1 -DFD_SETSIZE=2048 -IC:/msys64/mingw64/lib/libffi-
3.2.1/include -D_WIN32_WINNT=0x0501 -D__MINGW_USE_VC2005_COMPAT -
D_FILE_OFFSET_BITS=64 -march=x86-64 -mtune=generic -O2 -pipe -I
C:/msys64/mingw64/lib/libffi-3.2.1/include conftest.c -L. -LC:/Ruby24-
x64/lib -L. -pipe -lx64-msvcrt-ruby240 -lgmp -lshell32 -lws2_32 -
liphlpapi -limagehlp -lshlwapi "
checked program was:
/* begin */
1: #include "ruby.h"
2:
3: #include <winsock2.h>
4: #include <windows.h>
5: int main(int argc, char **argv)
6: {
7: return 0;
8: }
/* end */
,然后从列表中选择库。它作为子项目自动添加。然后我将所需的文件添加到我的库中,并且它有效。