2013-04-14 53 views
7

我做了一个功能齐全的调整,我需要在其中使用一个图像文件 ,获取图像的代码是正确的(在Xcode上测试)。 但图像未包含在最终的DEB文件中。如何在Theos makefile中包含资源文件?

,我有这个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询问)。

+0

只有一个人熟悉西奥斯构建系统将能够帮助。从make的角度来看,这意味着其中一个包含makefile的是将MyTweak_FILES变量的内容视为要编译的源文件。要么有其他一些应该用于图像文件的变量,否则makefile就不知道如何处理PNG文件。 – MadScientist

回答

6

这不是使用theos包含资源的方式。 MyTweak_FILES变量应该只包含可以编译的文件。使文件处理资源不同。

要包含您需要创建捆绑的资源,如下所示。

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

2)将所有的资源文件(所有PNG的)放入该文件夹中。

3)添加以下信息到您的make文件

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] 

在上述步骤中与调整包标识符这将是在更换your_bundle_identifier控制文件。 (例如:com.yourdomain.tweak_name)

还将your_image_name替换为要使用的图像的名称。

你可以用上面的方式使用任何资源(例如:声音文件)。

0

除了张贴的答案,这是常见的做法是将在“/库/ Application Support /”,而不是捆绑“/图书馆/ MobileSubstrate有/ DynamicLibraries /”

相关问题