Пожалуйста, прокрутите вниз, обновите ниже
Я использовал это руководство, чтобы запачкать руки при разработке Theos и джейлбрейк-твика: http://iphonedevwiki.net/index.php/Theos/Getting_Started
Вопрос был опубликован ранее ( Theos для armv7 и arm64 ), но он не т был дан ответ.
Для начала я просто хочу, чтобы консольное сообщение появлялось всякий раз, когда я разблокирую устройство. Я следовал инструкциям, но мне пришлось установить dpkg
через MacPorts, чтобы запустить ldid
.
Вот мой код:
Настройка.xm:
%hook SBAwayLockBar
- (void)unlock {
%orig;
NSLog( @"SBAwayLockBar.unlock()" );
}
%end
make-файл:
include theos/makefiles/common.mk
TWEAK_NAME = TweakTest01
TweakTest01_FILES = Tweak.xm
TweakTest01_FRAMEWORKS = UIKit
include $(THEOS_MAKE_PATH)/tweak.mk
after-install::
install.exec "killall -9 SpringBoard"
Это происходит, когда я пытаюсь либо make
, либо make package install
:
/tmp/theos/makefiles/targets/Darwin/iphone.mk:41: Deploying to iOS 3.0 while building for 6.0 will generate armv7-only binaries.
Making all for tweak TweakTest01...
Linking tweak TweakTest01...
ld: warning: ignoring file /tmp/theos/lib/libsubstrate.dylib, missing required architecture armv7 in file /tmp/theos/lib/libsubstrate.dylib (2 slices)
Undefined symbols for architecture armv7:
"_MSHookMessageEx", referenced from:
_logosLocalInit() in Tweak.xm.6991e5bc.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/TweakTest01.dylib.ba964c90.unsigned] Error 1
make[1]: *** [internal-library-all_] Error 2
make: *** [TweakTest01.all.tweak.variables] Error 2
Я попробовал /usr/bin/xcode-select --install
(как было предложено Не удалось собрать утилиту Saurik ldid), но это совсем не помогло - в основном потому, что у меня уже были установлены все инструменты Xcode.
Любые подсказки?
ОБНОВЛЕНИЕ 25 марта 2014 г.
Итак... похоже, проблема заключалась в пробеле в именах путей, с которыми я работал. После переименования папки с "материалы для побега из тюрьмы" на "материал для побега из тюрьмы" make
заработало нормально. Но так как написанный мной твик толком ничего не делал, я начал с нуля.
Вот что я сделал:
- Получите скрипт установщика theos с https://gist.github.com/tom-go/3342263< /а>
- Измените
install_theos.sh
строку 40 наmsdeb="mobilesubstrate_0.9.5001_iphoneos-arm.deb"
(последняя версия при просмотре http://apt.saurik.com/debs/ а> ) Я заметил, что получение
ldid
с указанного URL-адреса Dropbox привело к ошибке, потому что загруженный файл содержал только HTML ("Вы будете перенаправлены..."); поэтому я сослался на http://iphonedevwiki.net/index.php/Theos/Getting_Started#For_Mac_OS_X и выполнил шаг №4git clone git://git.saurik.com/ldid.git cd ldid git submodule update --init ./make.sh cp -f ./ldid $THEOS/bin/ldid
Вот мои источники:
Tweak.mm/Tweak.mm (символическая ссылка)
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#import <SpringBoard/SpringBoard.h>
%hook SBAwayLockBar
- (void)unlock {
%orig;
%log;
// Call flash on SBScreenFlash => will flash Screen
[[%c(SBScreenFlash) sharedInstance] flash];
}
%end
создать файл
export ARCHS = armv7 armv7s arm64
export TARGET = iphone:clang:7.1:7.1
include theos/makefiles/common.mk
TWEAK_NAME = TweakTest01
TweakTest01_FILES = Tweak.xm
TweakTest01_FRAMEWORKS = UIKit Foundation
include $(THEOS_MAKE_PATH)/tweak.mk
after-install::
install.exec "killall -9 SpringBoard"
Вот вывод из консоли make package
(я заменил "mycompanyname" перед публикацией здесь):
Making all for tweak TweakTest01...
Preprocessing Tweak.xm...
Compiling Tweak.xm...
Linking tweak TweakTest01...
Stripping TweakTest01...
Signing TweakTest01...
Making stage for tweak TweakTest01...
dpkg-deb: Baue Paket »com.mycompanyname.tweaktest01« in »./com.mycompanyname.tweaktest01_0.0.1-9_iphoneos-arm.deb«.
Теперь я передаю файл с iFunBox и устанавливаю пакет, выбрав его в iFile. Установка работает нормально. Я перезагружаю свое устройство, разблокирую его ... и ни вспышки, ни вывода журнала. Единственное, что показывает журнал (Xcode - Organizer), это
SpringBoard[4602] <Notice>: MS:Notice: Loading: /Library/MobileSubstrate/DynamicLibraries/TweakTest01.dylib
SpringBoard[4602] <Warning>: MS:Warning: nil class argument for selector unlock
Я пробовал две разные версии libsubstrate.dylib
- https://github.com/kokoabim/iOSOpenDev/blob/master/lib/libsubstrate.dylib
- http://cdn.hbang.ws/dl/libsubstrate_arm64.dylib (переименован в
$THEOS/lib/libsubstrate.dylib
)
но поведение такое же. Что дальше? :)