我正在努力让这些人在OSX Mavericks上工作。我最近购买了iPhone 5s,从那时起就越狱了。现在我想让Theos工作,所以我可以再次开始进行一些调整。我有它在OSX Lion和IOS 5和6上工作。我有一个非常简单的程序,应该在应用程序启动时显示UIAlert。问题是,当我运行make命令试图编译我的代码时,我得到了这个错误:
Making all for tweak test...
Preprocessing Tweak.xm...
Compiling Tweak.xm...
Linking tweak test...
Undefined symbols for architecture armv7:
"_OBJC_CLASS_$_UIAlertView", referenced from:
objc-class-ref in Tweak.xm.b0410391.o
ld: symbol(s) not found for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [obj/test.dylib.1cc22e7c.unsigned] Error 1
make[1]: *** [internal-library-all_] Error 2
make: *** [test.all.tweak.variables] Error 2
Williams-MacBook-Pro-2:test williamfsmillie$
这是我的Tweak.xm代码:
%hook SBApplicationIcon
-(void)launch{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"TEST" message:@"message...." delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alert show];
[alert release];
%orig;
}
%end
我的makefile:
export SDKVERSION=7.0
include theos/makefiles/common.mk
TWEAK_NAME = test
test_FILES = Tweak.xm
ARCHS = armv7 arm64
test_FRAMEWORKS = UIKit
include $(THEOS_MAKE_PATH)/tweak.mk
after-install::
install.exec "killall -9 SpringBoard"
谢谢!
答案 0 :(得分:5)
编辑您的makefile并在顶部插入以下内容:
export ARCHS = armv7 armv7s arm64
export TARGET = iphone:clang:7.0:7.0
另外,将Foundation
框架与您的调整相关联。
答案 1 :(得分:5)
这是一个古老的问题,但我仍然认为我应该为那些有同样问题的人回答这个问题。您需要致电objc_getClass
才能使其正常工作,如下所示:
UIAlertView *alert = [[objc_getClass("UIAlertView") alloc] initWithTitle:@"TEST" message:@"message...." delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
请注意,在作业的左侧不需要这样做。
答案 2 :(得分:2)
要修复警报问题,您必须包含UIKit / UIKit.h(抱歉,我无法发表评论)
答案 3 :(得分:2)
您需要在 Makefile 中加入UIKit框架,方法是添加 XXX_FRAMEWORKS = UIKit ,其中XXX是您的项目名称
答案 4 :(得分:1)
如果您使用的是iOS 7,则必须使用正确的方法:尝试-(void)launchFromLocation:(int)location
。
因为它使用参数,所以您的代码应如下所示:
-(void)launchFromLocation:(int)location {
// your stuff
%orig(location);
}
答案 5 :(得分:0)
我会说更新您的标题。 从中下载新集 rpetrich