2014-01-06 4 views
4

Я пытаюсь заставить theos работать на OSX Mavericks. Недавно я купил iPhone 5 и с тех пор взломал его. Теперь я пытаюсь заставить Теоса работать, чтобы снова начать работу над некоторыми настройками. Я работал над OSX Lion и IOS 5 и 6. У меня очень простая программа, которая должна отображать UIAlert при запуске приложения. Проблема заключается в том, когда я запускаю команду грима в попытке скомпилировать мой код я получаю эту ошибку:Theos for armv7 и arm64

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

Theos - аббревиатура от Theodores, не так ли? Кто знает!? –

ответ

0

Я бы сказал, обновите свои заголовки. Скачать новый набор из rpetrich

+0

Пробовал, что. не удачи ... – user3163990

+0

Он компилируется, но он не запускает uialert, как он должен ... – user3163990

5

Редактировать свой Makefile и вставьте следующее в верхней части:

export ARCHS = armv7 armv7s arm64 
export TARGET = iphone:clang:7.0:7.0 

Кроме того, связать Foundation рамки с подстройкой.

+0

Хмм ... компилируется нормально, но UIAlert не появляется. Есть идеи? – user3163990

1

Если вы используете iOS 7, вам нужно подключить правильный метод: попробуйте -(void)launchFromLocation:(int)location.

Поскольку он использует параметр, ваш код должен выглядеть следующим образом:

-(void)launchFromLocation:(int)location { 
    // your stuff 
    %orig(location); 
} 
+0

Жаль, что я не имел в виду проголосовать, но СО не разрешит изменить мой голос. Тупой. –

+1

Упрощенный для отмены случайного downvote @ alexgray. –

2

Для устранения предупреждения проблемы необходимо включить UIKit/UIKit.h (К сожалению, я не могу комментировать)

1

Вам необходимо включить рамки UIKit в вашем Makefile путем добавления XXX_FRAMEWORKS = UIKit где XXX это имя вашего проекта

3

это старый вопрос, но все-таки я Figur Я должен ответить на него тем, у кого есть тот же вопрос. Вам нужно позвонить objc_getClass для того, чтобы работать, как это:

UIAlertView *alert = [[objc_getClass("UIAlertView") alloc] initWithTitle:@"TEST" message:@"message...." delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; 

Обратите внимание, что это не обязательно на левой стороне задания.

+2

Вы также можете использовать '% c (UIAlertView)' вместо 'objc_getClass (" UIAlertView ")' – kabiroberai

Смежные вопросы