Действительно невозможно сделать пакет с Теосом

У меня действительно не получается "создать пакет" с помощью Theos для сделанного мной твика, поэтому я скопировал пример "unlockchanger" из Интернета (здесь https://github.com/codyd51/Theos-Examples/tree/master/unlockchanger ) и попытался сделать "сделать пакет". Я получаю эти ошибки:

iPhone-di-Gabriele:/var/mobile/unlockchanger root# make package
/var/mobile/unlockchanger/theos/makefiles/targets/Darwin-arm/iphone.mk:43: Targeting iOS 4.0 and higher is not supported with iphone-gcc. Forcing clang.
/var/mobile/unlockchanger/theos/makefiles/targets/Darwin-arm/iphone.mk:53: Deploying to iOS 3.0 while building for 6.0 will generate armv7-only binaries.
Making all for tweak UnlockChanger...
 Preprocessing Tweak.xm...
 Compiling Tweak.xm...
In file included from Tweak.xm:3:
/var/mobile/unlockchanger/theos/include/substrate.h:57:20: error: unknown type name 'pid_t'
bool MSHookProcess(pid_t pid, const char *library);
                   ^
/var/mobile/unlockchanger/theos/include/substrate.h:69:1: error: unknown type name 'IMP'
IMP MSHookMessage(Class _class, SEL sel, IMP imp, const char *prefix _default(NULL));
^
/var/mobile/unlockchanger/theos/include/substrate.h:69:42: error: unknown type name 'IMP'
IMP MSHookMessage(Class _class, SEL sel, IMP imp, const char *prefix _default(NULL));
                                         ^
/var/mobile/unlockchanger/theos/include/substrate.h:69:79: error: use of undeclared identifier 'NULL'
IMP MSHookMessage(Class _class, SEL sel, IMP imp, const char *prefix _default(NULL));
                                                                              ^
/var/mobile/unlockchanger/theos/include/substrate.h:48:27: note: expanded from macro '_default'
#define _default(value) = value
                          ^
/var/mobile/unlockchanger/theos/include/substrate.h:71:45: error: unknown type name 'IMP'
void MSHookMessageEx(Class _class, SEL sel, IMP imp, IMP *result);
                                            ^
/var/mobile/unlockchanger/theos/include/substrate.h:71:54: error: unknown type name 'IMP'
void MSHookMessageEx(Class _class, SEL sel, IMP imp, IMP *result);
                                                     ^
/var/mobile/unlockchanger/theos/include/substrate.h:125:92: error: use of undeclared identifier 'NULL'
static inline Type_ *MSHookMessage(Class _class, SEL sel, Type_ *imp, const char *prefix = NULL) {
                                                                                           ^
/var/mobile/unlockchanger/theos/include/substrate.h:126:82: error: unknown type name 'IMP'
    return reinterpret_cast<Type_ *>(MSHookMessage(_class, sel, reinterpret_cast<IMP>(imp), prefix));
                                                                                 ^
/var/mobile/unlockchanger/theos/include/substrate.h:132:58: error: unknown type name 'IMP'
    return MSHookMessageEx(_class, sel, reinterpret_cast<IMP>(imp), reinterpret_cast<IMP *>(result));
                                                         ^
/var/mobile/unlockchanger/theos/include/substrate.h:132:86: error: unknown type name 'IMP'
    return MSHookMessageEx(_class, sel, reinterpret_cast<IMP>(imp), reinterpret_cast<IMP *>(result));
                                                                                     ^
/var/mobile/unlockchanger/theos/include/substrate.h:137:5: error: use of undeclared identifier 'Ivar'
    Ivar ivar(class_getInstanceVariable(object_getClass(self), name));
    ^
/var/mobile/unlockchanger/theos/include/substrate.h:138:19: error: use of undeclared identifier 'ivar'
    void *pointer(ivar == NULL ? NULL : reinterpret_cast<char *>(self) + ivar_getOffset(ivar));
                  ^
/var/mobile/unlockchanger/theos/include/substrate.h:138:27: error: use of undeclared identifier 'NULL'
    void *pointer(ivar == NULL ? NULL : reinterpret_cast<char *>(self) + ivar_getOffset(ivar));
                          ^
/var/mobile/unlockchanger/theos/include/substrate.h:138:34: error: use of undeclared identifier 'NULL'
    void *pointer(ivar == NULL ? NULL : reinterpret_cast<char *>(self) + ivar_getOffset(ivar));
                                 ^
/var/mobile/unlockchanger/theos/include/substrate.h:138:89: error: use of undeclared identifier 'ivar'
    void *pointer(ivar == NULL ? NULL : reinterpret_cast<char *>(self) + ivar_getOffset(ivar));
                                                                                        ^
/var/mobile/unlockchanger/theos/include/substrate.h:294:71: error: use of undeclared identifier 'NULL'
    return MSHookFunction(symbol, replace, reinterpret_cast<Type_ **>(NULL));
                                                                      ^
/var/mobile/unlockchanger/theos/include/substrate.h:298:85: error: use of undeclared identifier 'NULL'
static inline void MSHookSymbol(Type_ *&value, const char *name, MSImageRef image = NULL) {
                                                                                    ^
/var/mobile/unlockchanger/theos/include/substrate.h:303:86: error: use of undeclared identifier 'NULL'
static inline void MSHookFunction(const char *name, Type_ *replace, Type_ **result = NULL) {
                                                                                     ^
/var/mobile/unlockchanger/theos/include/substrate.h:310:104: error: use of undeclared identifier 'NULL'
static inline void MSHookFunction(MSImageRef image, const char *name, Type_ *replace, Type_ **result = NULL) {
                                                                                                       ^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.
make[2]: *** [obj/Tweak.xm.7838be1a.o] Error 1
make[1]: *** [internal-library-all_] Error 2
make: *** [UnlockChanger.all.tweak.variables] Error 2

Некоторые детали:

  • У меня iOS8.1, с iPhone 5. Все установлено из Cydia
  • ...и в Windows 8.1 с WinSCP и PuTTY
  • Я установил Theos, Perl... все (также "рекомендуемые пакеты BigBoss")
  • Мне также пришлось установить LLVM+Clang, потому что make не нашел команду "clang++"
  • Я пытался сбросить классы вместо того, чтобы брать их из Интернета.
  • Я обновил substrate.h в /include/ и libsubstrate.dylib в /lib/

Если я попытаюсь «сделать пакет» в своем твике для SpringBoard, где в Tweak.xm я делаю:

#import <SpringBoard/Springboard.h>

Я получаю эти ошибки:

iPhone-di-Gabriele:/var/mobile/mytweak root# make package
/var/mobile/mytweak/theos/makefiles/targets/Darwin-arm/iphone.mk:43: Targeting iOS 4.0 and higher is not supported with iphone-gcc. Forcing clang.
/var/mobile/mytweak/theos/makefiles/targets/Darwin-arm/iphone.mk:53: Deploying to iOS 3.0 while building for 6.0 will generate armv7-only binaries.
Making all for tweak mytweak...
 Preprocessing Tweak.xm...
 Compiling Tweak.xm...
In file included from Tweak.xm:1:
/var/mobile/mytweak/theos/include/SpringBoard.h:33:19: error: field has incomplete type 'struct CGSize'
    struct CGSize size;
                  ^
/var/mobile/mytweak/theos/include/SpringBoard.h:33:12: note: forward declaration of 'CGSize'
    struct CGSize size;
           ^
/var/mobile/mytweak/theos/include/SpringBoard.h:229:34: error: cannot find protocol declaration for 'NSObject'
@protocol APSConnectionDelegate <NSObject>
                                 ^
/var/mobile/mytweak/theos/include/SpringBoard.h:233:37: error: cannot find protocol declaration for 'NSObject'
@protocol AVExternalDeviceDelegate <NSObject>
                                    ^
/var/mobile/mytweak/theos/include/SpringBoard.h:236:27: error: cannot find protocol declaration for
      'BBSectionIdentity'
@protocol BBDataProvider <BBSectionIdentity>
                          ^
/var/mobile/mytweak/theos/include/SpringBoard.h:240:31: error: cannot find protocol declaration for 'NSObject'
@protocol BBObserverDelegate <NSObject>
                              ^
/var/mobile/mytweak/theos/include/SpringBoard.h:246:30: error: cannot find protocol declaration for 'NSObject'
@protocol BBSectionIdentity <NSObject>
                             ^
/var/mobile/mytweak/theos/include/SpringBoard.h:250:41: error: cannot find protocol declaration for 'NSObject'
@protocol BSSettingDescriptionProvider <NSObject>
                                        ^
/var/mobile/mytweak/theos/include/SpringBoard.h:255:34: error: cannot find protocol declaration for 'NSObject'
@protocol BSTransactionObserver <NSObject>
                                 ^
/var/mobile/mytweak/theos/include/SpringBoard.h:258:31: error: cannot find protocol declaration for 'NSObject'
@protocol BSWatchdogDelegate <NSObject>
                              ^
/var/mobile/mytweak/theos/include/SpringBoard.h:261:38: error: cannot find protocol declaration for 'NSObject'
@protocol CLLocationManagerDelegate <NSObject>
                                     ^
/var/mobile/mytweak/theos/include/SpringBoard.h:264:41: error: cannot find protocol declaration for 'NSObject'
@protocol FBApplicationLibraryObserver <NSObject>
                                        ^
/var/mobile/mytweak/theos/include/SpringBoard.h:267:45: error: cannot find protocol declaration for 'NSObject'
@protocol FBApplicationPlaceholderObserver <NSObject>
                                            ^
/var/mobile/mytweak/theos/include/SpringBoard.h:270:41: error: cannot find protocol declaration for
      'FBProcessObserver'
@protocol FBApplicationProcessObserver <FBProcessObserver>
                                        ^
/var/mobile/mytweak/theos/include/SpringBoard.h:276:37: error: cannot find protocol declaration for 'NSObject'
@protocol FBDisplayManagerObserver <NSObject>
                                    ^
/var/mobile/mytweak/theos/include/SpringBoard.h:279:37: error: cannot find protocol declaration for 'NSObject'
@protocol FBProcessManagerObserver <NSObject>
                                    ^
/var/mobile/mytweak/theos/include/SpringBoard.h:284:30: error: cannot find protocol declaration for 'NSObject'
@protocol FBProcessObserver <NSObject>
                             ^
/var/mobile/mytweak/theos/include/SpringBoard.h:287:35: error: cannot find protocol declaration for 'NSObject'
@protocol FBSceneManagerDelegate <NSObject>
                                  ^
/var/mobile/mytweak/theos/include/SpringBoard.h:293:35: error: cannot find protocol declaration for 'NSObject'
@protocol FBSceneManagerObserver <NSObject>
                                  ^
/var/mobile/mytweak/theos/include/SpringBoard.h:302:46: error: cannot find protocol declaration for 'NSObject'
@protocol FBSynchronizedTransactionDelegate <NSObject>
                                             ^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.
make[2]: *** [obj/Tweak.xm.0ad6af3a.o] Error 1
make[1]: *** [internal-library-all_] Error 2
make: *** [mytweak.all.tweak.variables] Error 2

Я действительно не знаю, где ошибка, я действительно все перепробовал, также «make -i», но он не создает файл dylib!

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

iPhone-di-Gabriele:/var/mobile/test root# make package
/var/mobile/test/theos/makefiles/targets/Darwin-arm/iphone.mk:43: Targeting iOS 4.0 and higher is not supported with iphone-gcc. Forcing clang.
/var/mobile/test/theos/makefiles/targets/Darwin-arm/iphone.mk:53: Deploying to iOS 3.0 while building for 6.0 will generate armv7-only binaries.
Making all for tweak test...
 Preprocessing Tweak.xm...
 Compiling Tweak.xm...
In file included from Tweak.xm:1:
In file included from /var/mobile/test/theos/include/SpringBoard/SpringBoard.h:9:
In file included from /var/mobile/test/theos/include/SpringBoard/SBBannerContainerViewController.h:8:
In file included from /var/mobile/test/theos/include/SpringBoard/UIViewControllerAnimatedTransitioning.h:8:
In file included from /var/mobile/test/theos/include/SpringBoard/NSObject.h:8:
/var/mobile/test/theos/include/SpringBoard/SpringBoard-Structs.h:26:2: error:
      unknown type name 'BOOL'
        BOOL _field1;
        ^
/var/mobile/test/theos/include/SpringBoard/SpringBoard-Structs.h:27:2: error:
      unknown type name 'BOOL'
        BOOL _field2;
        ^
/var/mobile/test/theos/include/SpringBoard/SpringBoard-Structs.h:28:2: error:
      unknown type name 'BOOL'
        BOOL _field3;
        ^
/var/mobile/test/theos/include/SpringBoard/SpringBoard-Structs.h:29:2: error:
      unknown type name 'BOOL'
        BOOL _field4;
        ^
/var/mobile/test/theos/include/SpringBoard/SpringBoard-Structs.h:30:2: error:
      unknown type name 'BOOL'
        BOOL _field5;
        ^
/var/mobile/test/theos/include/SpringBoard/SpringBoard-Structs.h:66:2: error:
      unknown type name 'BOOL'
        BOOL itemIsEnabled[25];
        ^
/var/mobile/test/theos/include/SpringBoard/SpringBoard-Structs.h:67:2: error:
      unknown type name 'BOOL'
        BOOL timeString[64];
        ^
/var/mobile/test/theos/include/SpringBoard/SpringBoard-Structs.h:70:2: error:
      unknown type name 'BOOL'
        BOOL serviceString[100];
        ^
/var/mobile/test/theos/include/SpringBoard/SpringBoard-Structs.h:71:2: error:
      unknown type name 'BOOL'
        BOOL serviceCrossfadeString[100];
        ^
/var/mobile/test/theos/include/SpringBoard/SpringBoard-Structs.h:72:2: error:
      unknown type name 'BOOL'
        BOOL serviceImages[2][100];
        ^
/var/mobile/test/theos/include/SpringBoard/SpringBoard-Structs.h:73:2: error:
      unknown type name 'BOOL'
        BOOL operatorDirectory[1024];
        ^
/var/mobile/test/theos/include/SpringBoard/SpringBoard-Structs.h:80:2: error:
      unknown type name 'BOOL'
        BOOL batteryDetailString[150];
        ^
/var/mobile/test/theos/include/SpringBoard/SpringBoard-Structs.h:86:2: error:
      unknown type name 'BOOL'
        BOOL activityDisplayId[256];
        ^
/var/mobile/test/theos/include/SpringBoard/SpringBoard-Structs.h:102:2: error:
      unknown type name 'BOOL'
        BOOL _field3[4088];
        ^
/var/mobile/test/theos/include/SpringBoard/SpringBoard-Structs.h:116:2: error:
      unknown type name 'BOOL'
        BOOL __opaque[40];
        ^
/var/mobile/test/theos/include/SpringBoard/SpringBoard-Structs.h:162:2: error:
      unknown type name 'BOOL'
        BOOL valid;
        ^
/var/mobile/test/theos/include/SpringBoard/SpringBoard-Structs.h:179:2: error:
      unknown type name 'BOOL'
        BOOL isValid;
        ^
In file included from Tweak.xm:1:
In file included from /var/mobile/test/theos/include/SpringBoard/SpringBoard.h:9:
In file included from /var/mobile/test/theos/include/SpringBoard/SBBannerContainerViewController.h:8:
In file included from /var/mobile/test/theos/include/SpringBoard/UIViewControllerAnimatedTransitioning.h:8:
/var/mobile/test/theos/include/SpringBoard/NSObject.h:10:1: error: redefinition
      of 'NSString' as different kind of symbol
@class NSString;
^
/var/mobile/test/theos/include/SpringBoard/SpringBoard-Structs.h:135:3: note:
      previous definition is here
} NSString;
  ^
In file included from Tweak.xm:1:
In file included from /var/mobile/test/theos/include/SpringBoard/SpringBoard.h:9:
In file included from /var/mobile/test/theos/include/SpringBoard/SBBannerContainerViewController.h:8:
In file included from /var/mobile/test/theos/include/SpringBoard/UIViewControllerAnimatedTransitioning.h:8:
/var/mobile/test/theos/include/SpringBoard/NSObject.h:24:3: error: expected a
      type
-(BOOL)respondsToSelector:(SEL)selector;
  ^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.
make[2]: *** [obj/Tweak.xm.56f06e0e.o] Error 1
make[1]: *** [internal-library-all_] Error 2
make: *** [test.all.tweak.variables] Error 2

Спасибо всем, кто хочет мне помочь.


person gabrielepmattia    schedule 14.11.2014    source источник


Ответы (1)


Если вы получаете эти ошибки, убедитесь, что вы не извлекли и не скопировали папку SDK (iPhoneOSX.X.sdk) в Windows, потому что в таким образом вы потеряете все (символические) ссылки между файлами SDK. Так что управляйте и организуйте свою папку sdk в Mac OS, iOS или Linux (но я не пробовал на этом).

Удачи!

person gabrielepmattia    schedule 21.11.2014