1

我按照http://brandontreb.com/beginning-jailbroken-ios-development-building-and-deployment 进行了调整。一切似乎都很好,并且软件包安装成功,
但是当我的 iPhone 重新启动时,“helloworld”框没有出现,有没有人知道如何解决这个问题?

我的 xcode 是 4.6 并安装
了 sdk5.1 我的 iPhone 是 iOS6.1.2

我设置了那些

export THEOS=/opt/theos/
export SDKVERSION=5.1
export THEOS_DEVICE_IP=192.168.1.101

这是 Makefile

export ARCHS=armv7
export TARGET=iphone:5.1
include $(THEOS)/makefiles/common.mk
helloworld_FRAMEWORKS = UIKit
TWEAK_NAME = helloworld
helloworld_FILES = Tweak.xm
include $(THEOS)/makefiles/tweak.mk

这是 Tweak.xm

#import <SpringBoard/SpringBoard.h>

%hook SpringBoard

-(void)applicationDidFinishLaunching:(id)application {
%orig;

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Welcome"
    message:@"Hello world"
    delegate:nil
    cancelButtonTitle:@"123"
    otherButtonTitles:nil];
    [alert show];
    [alert release];
}

%end
4

1 回答 1

1

我想通了, *.plist 应该是
{ Filter = { Bundles = ( "com.apple.springboard" ); }; }

谢谢@H2CO3,我在其他地方找到了你的评论,
但是在我成功完成了 helloworld 调整之后。
我挂钩fopen使用 MSHookFunction

然后我遇到链接错误

Making all for tweak hw...
 Preprocessing Tweak.xm...
 Compiling Tweak.xm...
 Linking tweak hw...
Undefined symbols for architecture armv7:
  "_MSHookFunction", referenced from:
      global constructors keyed to Tweak.xm.mmin Tweak.xm.51941273.o
ld: symbol(s) not found for architecture armv7
collect2: ld returned 1 exit status
make[2]: *** [.theos/obj/hw.dylib.ba964c90.unsigned] Error 1
make[1]: *** [internal-library-all_] Error 2
make: *** [hw.all.tweak.variables] Error 2

这是 Tweak.xm

#import "substrate.h"

static FILE * (*s_orig_fopen) ( const char * filename, const char * mode );
static FILE * my_fopen ( const char * filename, const char * mode ){
    return s_orig_fopen(filename, mode);
}

static void entry(void)  __attribute__ ((constructor));
static void entry(void) {
    MSHookFunction(fopen, my_fopen, &s_orig_fopen);
}
于 2013-08-10T18:31:18.400 回答