Проблемы с компиляцией твика на iOS

В настоящее время я пытаюсь скомпилировать твик с помощью theos на моем iPhone 5s на 8.1.1 через ssh.

Я использовал пакет с открытым исходным кодом под названием EasyRespring, который я нашел на github и который, как утверждается, совместим с iOS 8.

После копирования всех файлов из него и запуска make я получил множество ошибок, которые мне трудно расшифровать.

При необходимости могу предоставить любую дополнительную информацию.

drop-it-like-its-hotspot:/private/var/easyrespring root# make
/private/var/easyrespring/theos/makefiles/targets/Darwin-arm64/iphone.mk:43: Targeting iOS 4.0 and higher is not supported with iphone-gcc. Forcing clang.
/private/var/easyrespring/theos/makefiles/targets/Darwin-arm64/iphone.mk:53: Deploying to iOS 3.0 while building for 6.0 will generate armv7-only binaries.
Making all for tweak EasyRespring...
 Preprocessing Tweak.xm...
 Compiling Tweak.xm...
In file included from <built-in>:181:
In file included from <command line>:3:
In file included from /private/var/easyrespring/theos/Prefix.pch:4:
In file included from /private/var/easyrespring/theos/sdks/iPhoneOS8.1.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIKit.h:9:
/private/var/easyrespring/theos/sdks/iPhoneOS8.1.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIAccelerometer.h:18:1: error: 
      C++ requires a type specifier for all declarations
NS_CLASS_DEPRECATED_IOS(2_0, 5_0, "UIAcceleration has been replaced by t...
^~~~~~~~~~~~~~~~~~~~~~~
/private/var/easyrespring/theos/sdks/iPhoneOS8.1.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIAccelerometer.h:18:26: error: 
      invalid suffix '_0' on integer constant
NS_CLASS_DEPRECATED_IOS(2_0, 5_0, "UIAcceleration has been replaced by t...
                         ^
/private/var/easyrespring/theos/sdks/iPhoneOS8.1.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIAccelerometer.h:18:98: error: 
      expected ';' after top level declarator
  ...5_0, "UIAcceleration has been replaced by the CoreMotion framework")
                                                                         ^
/private/var/easyrespring/theos/sdks/iPhoneOS8.1.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIAccelerometer.h:26:1: error: 
      unexpected '@' in program
@property(nonatomic,readonly) UIAccelerationValue x;
^
/private/var/easyrespring/theos/sdks/iPhoneOS8.1.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIAccelerometer.h:27:1: error: 
      unexpected '@' in program
@property(nonatomic,readonly) UIAccelerationValue y;
^
/private/var/easyrespring/theos/sdks/iPhoneOS8.1.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIAccelerometer.h:28:1: error: 
      unexpected '@' in program
@property(nonatomic,readonly) UIAccelerationValue z;
^
/private/var/easyrespring/theos/sdks/iPhoneOS8.1.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIAccelerometer.h:30:1: error: 
      '@end' must appear in an Objective-C context
@end
^
/private/var/easyrespring/theos/sdks/iPhoneOS8.1.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIAccelerometer.h:32:1: error: 
      C++ requires a type specifier for all declarations
NS_CLASS_DEPRECATED_IOS(2_0, 5_0, "UIAccelerometer has been replaced by ...
^~~~~~~~~~~~~~~~~~~~~~~
/private/var/easyrespring/theos/sdks/iPhoneOS8.1.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIAccelerometer.h:32:26: error: 
      invalid suffix '_0' on integer constant
NS_CLASS_DEPRECATED_IOS(2_0, 5_0, "UIAccelerometer has been replaced by ...
                         ^
/private/var/easyrespring/theos/sdks/iPhoneOS8.1.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIAccelerometer.h:32:99: error: 
      expected ';' after top level declarator
  ...5_0, "UIAccelerometer has been replaced by the CoreMotion framework")
                                                                          ^
/private/var/easyrespring/theos/sdks/iPhoneOS8.1.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIAccelerometer.h:45:1: error: 
      unexpected '@' in program
@property(nonatomic) NSTimeInterval updateInterval; //May be capped at ...
^
/private/var/easyrespring/theos/sdks/iPhoneOS8.1.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIAccelerometer.h:46:1: error: 
      unexpected '@' in program
@property(nonatomic,assign) id<UIAccelerometerDelegate> delegate;
^
/private/var/easyrespring/theos/sdks/iPhoneOS8.1.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIAccelerometer.h:48:1: error: 
      '@end' must appear in an Objective-C context
@end
^
/private/var/easyrespring/theos/sdks/iPhoneOS8.1.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIAccelerometer.h:50:35: error: 
      cannot find protocol declaration for 'NSObject'
@protocol UIAccelerometerDelegate<NSObject>
                                  ^
/private/var/easyrespring/theos/sdks/iPhoneOS8.1.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIAccelerometer.h:53:24: error: 
      expected a type
- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UI...
                       ^
/private/var/easyrespring/theos/sdks/iPhoneOS8.1.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIAccelerometer.h:53:71: error: 
      expected a type
- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAc...
                                                                      ^
/private/var/easyrespring/theos/sdks/iPhoneOS8.1.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIAccelerometer.h:53:118: error: 
      expected ':'
  ...didAccelerate:(UIAcceleration *)acceleration NS_DEPRECATED_IOS(2_0, 5_0);
                                                                   ^
/private/var/easyrespring/theos/sdks/iPhoneOS8.1.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIAccelerometer.h:53:118: error: 
      expected ';' after method prototype
In file included from <built-in>:181:
In file included from <command line>:3:
In file included from /private/var/easyrespring/theos/Prefix.pch:4:
In file included from /private/var/easyrespring/theos/sdks/iPhoneOS8.1.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIKit.h:10:
In file included from /private/var/easyrespring/theos/sdks/iPhoneOS8.1.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIAccessibility.h:11:
/private/var/easyrespring/theos/sdks/iPhoneOS8.1.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIBezierPath.h:12:20: error: 
      C++ requires a type specifier for all declarations
typedef NS_OPTIONS(NSUInteger, UIRectCorner) {
                   ^~~~~~~~~~
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.
make[2]: *** [obj/Tweak.xm.1c1f697b.o] Error 1
make[1]: *** [internal-library-all_] Error 2
make: *** [EasyRespring.all.tweak.variables] Error 2

Я не уверен, что это лучший способ опубликовать это, поэтому я оставлю ссылку на Ghostbin здесь, возможно, это более понятно?


person user286152    schedule 20.04.2015    source источник


Ответы (1)


Мне интересно, если это проблема с используемыми вами заголовками SDK, проблема, похоже, связана со случайными файлами, не связанными с вашим проектом (согласно файлам easyrespring на github). Попробуйте другую версию ios 8.1 SDK, если вы загрузили ее вручную. Может, попробовать этот? https://github.com/MP0w/iOS-Headers

Редактировать: загруженными заголовками 8.1 вы замените существующие в каталоге theos/sdks/. Затем вы можете попробовать снова запустить make в своем проекте, чтобы убедиться, что он работает правильно.

person Micaiah Wallace    schedule 20.04.2015
comment
Извините, но я все еще немного новичок во всем этом, я скачал заголовки, и теперь у меня есть папка с именем 8.1, но я не уверен, где в моей файловой системе все это разместить? в //var/theos/sdks/iPhoneOS8.1.sdk у меня есть мой старый SDK, поэтому я должен поместить эту папку IOS8.1 в SDK? Нужно ли удалять папку iPhoneOS8.1.sdk после? - person user286152; 20.04.2015
comment
Я мог бы добавить, что в настоящее время мой путь //var/theos/sdks/iPhoneOS8.1.sdk/Developer/Library имеет только папку Frameworks, в то время как в этой папке IOS8.1 есть Frameworks, PrivateFrameworks и SpringBoard, возможно, я вставляю IOS8.1 содержимое в этой папке вместо этого? - person user286152; 20.04.2015
comment
Я считаю, что theos рекурсивно ищет каталог sdks, поэтому вы должны иметь возможность заменить каталог Frameworks новым каталогом Frameworks и вставить новые каталоги (PrivateFrameworks и SpringBoard) рядом с ним. Как она устроена в новой скачанной копии. По сути, это не должно иметь значения, если только это не запутанно изложено - person Micaiah Wallace; 20.04.2015
comment
я пытался сделать это, но я все еще получаю ту же самую ошибку. Я так запутался, потому что это не похоже даже на использование правильных файлов - person user286152; 20.04.2015
comment
Какую версию easyrespring вы используете с github (есть несколько опубликованных версий) и редактировали ли вы какой-либо код из нее? Я могу проверить это позже и посмотреть, получаю ли я те же ошибки. - person Micaiah Wallace; 20.04.2015
comment
Помимо использования заголовков, вы можете просто написать нужный заголовок вручную и добавить нужные вам методы. Так сделать намного проще. - person Andy Ibanez; 20.04.2015
comment
Итак, я просто попытался создать пустой проект, используя nic с именем test, затем сразу же после его создания я попытался запустить make test, но я получаю ту же самую ошибку, когда пытаюсь использовать easyrespring, я предполагаю, что это означает, что это не так. не имеют ничего общего с конкретным проектом. - person user286152; 20.04.2015
comment
Попробуйте сделать то, что сказал @AndyIbanez, удалите все файлы заголовков в папке sdks, затем просто добавьте свои собственные файлы .h для... это похоже на SBUIController и добавьте определение для -(void)finishLaunching; затем сделать это снова - person Micaiah Wallace; 20.04.2015
comment
Я ухожу на пару часов и у меня не будет доступа к компьютеру, но я попробую это и прокомментирую здесь, когда мне удастся закончить попытку, извините за задержку, но пока спасибо за помощь. - person user286152; 20.04.2015
comment
Я смог найти решение здесь, похоже, мои заголовки не были настроены должным образом. reddit.com/r/jailbreak/comments/338wu3/help_compiling_on_ios - person user286152; 21.04.2015