Unsupported architecture 或者 Undefined symbols for architecture armv7

尝试编译 https://github.com/Naville/WTFJH/blob/master/Hooks/API/NSURLConnection.xm

时,会报错Unsupported architecture。
在去掉几个头文件,比如:

//#import < substrate.h>
//#import < objc/runtime.h>
//#import < mach-o/getsect.h>
//#import< UIKit/UIKit.h>
…等

后。不报错Unsupported architecture。而有了新错误:
Undefined symbols for architecture armv7:
OBJC_CLASS$_CallTracer”, referenced from:
objc-class-ref in Tweak.xm.5cb99599.o
objc-class-ref in NSURLConnectionDelegateProxy.m.5cb99599.o

不是很理解这种现象。

在编译自己的demo时,比如我想在xxx.xm中调用UIAlertView。当我把UIAlertView封装在单独的yy.m文件中,在xxx.xm中include<yy.h>。并使用yy.m中实现的关于UIAlerVIew的方法时。也会出现上述Unsupported architecture 或者 Undefined symbols for architecture armv7的现象。表现形式一模一样。也是在yy.m 中去掉一些比如#import< UIKit/UIKit.h>这样的的头文件,报错由Unsupported architecture 变为 Undefined symbols for architecture armv7。


我的makefile文件
THEOS_DEVICE_IP = 192.168.2.3
ARCHS = armv7 arm64
TARGET = iPhone:latest:8.0

include theos/makefiles/common.mk

TWEAK_NAME = hookNSURLConnection
hookNSURLConnection_FILES = Tweak.xm NSURLConnectionDelegateProxy.m
HookNSURLConnection_FRAMEWORKS = Foundation UIKit CFNetwork Security

include $(THEOS_MAKE_PATH)/tweak.mk

after-install::
install.exec “killall -9 SpringBoard”
--------------
谢谢大家!!

将makefile中的
hookNSURLConnection_FILES = Tweak.xm NSURLConnectionDelegateProxy.m
改为
hookNSURLConnection_FILES = Tweak.xm
可以解决Unsupported architecture 但是 Undefined symbols for architecture armv7依旧存在

你干啥了。。。
我跟82直接 ./build.py 没问题啊

哦项目结构不是给你提取出来用的
“OBJCCLASS_$_CallTracer”, referenced from:

把CallTracer加入makefile即可

我没有直接./build.py 而是把需要的截取出来了。然后好像找到问题了正在尝试

Utils/下的都加入makefile。
我代码里用了这些类你没编译才会导致undefined。
顺便,拿开源代码当作自己的毕设是很Low的行为哦 : D

完全没接触过Makefile的话我建议你还是拉进iOSOpenDev作改动 :smiley:

嗯。我只是截取了关于NSURLConnection的这部分,而且还需要修改,现在只是想编译运行成功,看看对网络通信的监听有没有效果。这只是毕设中很小很小的一部分,算是部分信息的采集部分。直接用开源项目是毕不了业的。我不会这么干的,否则也不用这么费劲了。多谢提醒~

独立的话记得把extern void init_NS___hook那段改成%ctor,
或者直接用introSpy (我项目就是基于这个改的)也行

确实最近看Makefile特别费劲,之前没接触过。准备先学习一下,实在不行再试试iOSOpenDev。我研究一下,也许theos确实不适合短期上手。

嗯 我有参考introSpy 和 IOTrackerOnWeb 但是它们很久没维护了,所以才想到先运行一下WTFJH的部分方法,毕竟是最新的,至少版本兼容上的问题比较少

有问题加群直接找我吧。群号另一贴有,记得注明论坛ID

好的 谢谢了~

我实践的经验是报Unsupported architecture不影响最终结果,还是能正常运行

嗯 但是看着不舒服啊,这个链接解决了我的问题。