在向其添加自定义dylib文件后,我的theos调整停止工作

时间:2017-07-24 08:51:05

标签: ios jailbreak theos tweak

我使用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文件进行调整?

2 个答案:

答案 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 */ ,然后从列表中选择。它作为子项目自动添加。然后我将所需的文件添加到我的库中,并且它有效。