Theos tweak适用于iPhone 5s但不适用于iPad 3

时间:2014-05-23 09:09:07

标签: ios objective-c ipad jailbreak theos

几天前我写了一个挂钩的调整 ASIdentifierManager advertisingIdentifier

这是我的Tweak.xm

#import <AdSupport/ASIdentifierManager.h>

%hook ASIdentifierManager

-(NSUUID*)advertisingIdentifier
{
    //id result = %orig;
    //%log;
    NSUUID *x = [[NSUUID alloc] initWithUUIDString:@"11111111-1111-1111-1111-111111111111"];
    return x;
}

%end

它在我的iphone 5s上工作正常,但在我的iPad上却没有。 可能我们的问题是,在我的iPad上我只在越狱后安装了openssh,在我的iphone上安装了很多东西。

这是我的Makefile

export SDKVERSION=7.1
export ARCHS = armv7 armv7s arm64
export TARGET = iphone:clang:7.1:7.0
export THEOS_DEVICE_IP=192.168.1.121


include theos/makefiles/common.mk

TWEAK_NAME = iHabrTweak
ARCHS = armv7 armv7s arm64
iHabrTweak_FILES = Tweak.xm
iHabrTweak_FRAMEWORKS = UIKit

include $(THEOS_MAKE_PATH)/tweak.mk

我的plist

{ Filter = { Bundles = ( "com.apple.UIKit" ); }; }

1 个答案:

答案 0 :(得分:2)

首先,它是否有任何特定的应用程序?这可能很重要。

其次,您需要更改过滤器过滤器以反映您希望在加载com.apple.AdSupport的任何位置加载,而不是com.apple.UIKit。这可能不会有太大变化,因为您可能只针对带有GUI的应用程序(而不是系统服务)。

应用程序是否可能根本没有调用-[ASIdentifierManager advertisingIdentifier]?在替换方法的顶部放置一个%log;并检查syslog以查看是否正在调用它。可能是您遇到依赖于UDID(-[UIDevice uniqueIdentifier])且仍然有效的应用程序,因为它们尚未重新编译,或者依赖于-[UIDevice identifierForVendor]的应用程序。

最后,您可能希望确保安装了 Cydia Substrate 。如果没有它,调整甚至不会安装(如果它有一个正确的Depends字段),但你永远不知道。