如何在Theos makefile中包含资源文件?

如何在Theos makefile中包含资源文件?,makefile,include,theos,Makefile,Include,Theos,我对theos做了一个全功能的调整,我需要使用一个图像文件 其中,获取图像的代码是正确的(在Xcode上测试)。 但最终的DEB文件中不包括该图像 我有一个makefile: SDKVERSION=6.0 include theos/makefiles/common.mk include theos/makefiles/tweak.mk TWEAK_NAME = MyTweak MyTweak_FRAMEWORKS = Foundation CoreGraphics UIKit MyTwea

我对theos做了一个全功能的调整,我需要使用一个图像文件 其中,获取图像的代码是正确的(在Xcode上测试)。 但最终的DEB文件中不包括该图像

我有一个makefile:

SDKVERSION=6.0
include theos/makefiles/common.mk
include theos/makefiles/tweak.mk

TWEAK_NAME = MyTweak
MyTweak_FRAMEWORKS = Foundation  CoreGraphics UIKit
MyTweak_FILES = Tweak.xm image.png

include $(THEOS_MAKE_PATH)/tweak.mk
但当我尝试编译时,我得到:

 No rule to make target `obj/image.png.o', needed by `obj/MyTweak.dylib'.  Stop. 
我能做些什么来包含它


(抱歉语法错误,请从iphone询问)。

MyTweak\u FILES变量应仅包括可编译的文件。使文件以不同的方式处理资源

要包含资源,您需要创建一个包,如下所示

1)在tweak.xm目录中创建一个名为Resources的文件夹。

#define kBundlePath @"/Library/MobileSubstrate/DynamicLibraries/your_bundle_identifier.bundle"
2)将所有资源文件(所有PNG)放入该文件夹。

#define kBundlePath @"/Library/MobileSubstrate/DynamicLibraries/your_bundle_identifier.bundle"
3)将以下信息添加到制作文件中

BUNDLE_NAME = your_bundle_identifier

your_bundle_identifier_INSTALL_PATH = /Library/MobileSubstrate/DynamicLibraries

include $(THEOS)/makefiles/bundle.mk
4)在tweak.xm文件上定义包,如下所示。

#define kBundlePath @"/Library/MobileSubstrate/DynamicLibraries/your_bundle_identifier.bundle"
5)您现在可以初始化捆绑包,并使用调整中的图像,如下所示:

NSBundle *bundle = [[[NSBundle alloc] initWithPath:kBundlePath] autorelease];

NSString *imagePath = [bundle pathForResource:@"your_image_name" ofType:@"png"];

UIImage *myImage = [UIImage imageWithContentsOfFile:imagePath]
在上述步骤中,使用控制文件中的调整包标识符替换\u bundle\u标识符。(例如:com.yourdomain.tweak_name)

还可以用要使用的图像名称替换您的图像名称


您几乎可以通过上述方式使用任何资源(例如:声音文件)。

除了发布的答案之外,通常的做法是将捆绑包放在“/Library/Application Support/”而不是“/Library/MobileSubstrate/DynamicLibraries/”

只有熟悉Theos构建系统的人才能提供帮助。从make的角度来看,这意味着其中一个包含的makefile将
MyTweak\u文件
变量的内容视为要编译的源文件。或者有其他变量应该用于图像文件,或者makefiles不知道如何处理PNG文件。这在2021年仍然有效。要做的唯一更改是从步骤5中删除“autorelease”调用。