几天前我写了一个挂钩的调整 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" ); }; }
答案 0 :(得分:2)
首先,它是否有任何特定的应用程序?这可能很重要。
其次,您需要更改过滤器过滤器以反映您希望在加载com.apple.AdSupport
的任何位置加载,而不是com.apple.UIKit
。这可能不会有太大变化,因为您可能只针对带有GUI的应用程序(而不是系统服务)。
应用程序是否可能根本没有调用-[ASIdentifierManager advertisingIdentifier]
?在替换方法的顶部放置一个%log;
并检查syslog以查看是否正在调用它。可能是您遇到依赖于UDID(-[UIDevice uniqueIdentifier]
)且仍然有效的应用程序,因为它们尚未重新编译,或者依赖于-[UIDevice identifierForVendor]
的应用程序。
最后,您可能希望确保安装了 Cydia Substrate 。如果没有它,调整甚至不会安装(如果它有一个正确的Depends
字段),但你永远不知道。