【问题标题】:Objective C - Error loading bundleObjective C - 加载包时出错
【发布时间】:2014-11-22 03:36:24
【问题描述】:

我正在处理一个 THEOS 项目。在我的项目中,我想将其他框架或库与他们的捆绑资源 (*.bundle) 一起使用,例如 Google Plus 框架。因为,这不是 Xcode 项目,所以它没有 Copy Bundle Resources 部分。我使用 NSBundle 类加载捆绑资源,但出现此错误

Error Domain=NSCocoaErrorDomain Code=4 "捆绑包“MyBundle”不能 被加载,因为它的可执行文件无法定位。” UserInfo=0x15a308d0 {NSLocalizedRecoverySuggestion=尝试重新安装 捆绑包., NSLocalizedFailureReason=捆绑包的可执行文件不能 被定位。, NSLocalizedDescription=捆绑包“MyBundle”不能被定位 已加载,因为无法找到其可执行文件。, NSBundlePath=/var/mobile/Documents/MyBundle.bundle}

这是我的代码

NSString *bundlePath = @"/var/mobile/Documents/MyBundle.bundle";
NSBundle *myBundle = [NSBundle bundleWithPath:bundlePath];
NSError *error;
BOOL loaded = [myBundle loadAndReturnError:&error];

NSLog(@"loaded: %@", (loaded ? @"TRUE" : @"FALSE"));
NSLog(@"error: %@", error);

我已经尝试过使用其他路径和其他捆绑资源,但仍然遇到同样的错误

【问题讨论】:

  • frameworkBundlemyBundle 不一样,是吗?

标签: objective-c nsbundle theos tweak


【解决方案1】:

您不能从应用程序包或包容器之外加载资源。您的应用程序无法访问“/var/mobile/Documents”。

您得到的实际错误是系统无法加载捆绑包的可执行文件-loadAndReturnError: 用于加载该包中的代码。您似乎正在加载一个包含资源但没有可执行代码的包。

【讨论】:

  • 我有root 权限并且我的代码在SpringBoard 中运行,因此捆绑源路径将是/System/Library/CoreServices/SpringBoard.app。我尝试使用GooglePlus.bundle,但仍然收到相同的错误消息
  • “GooglePlus.bundle”是一个资源包。它不包含可执行文件。调用 -loadAndReturnError: 是为了在包中加载可执行二进制文件,而不是资源。
  • 我看到了-loadAndReturnError: 的错误,tks。但是使用原始代码[NSBundle bundleWithPath:path],我收到一条错误消息MyBundle.bundle (not loaded yet)
  • 再次,您没有要加载的代码。这些是资源包。使用 bundleWithPath 实例化 NSBundle 后,就可以开始使用 bundle 中的资源了。
  • 我已经明白了,我再次阅读Apple文档。我知道-loadAndReturnError: 用于加载捆绑包的可执行代码。但我的问题是,在我使用 bundleWithPath 实例化 NSBundle 后,我无法使用它的*.png*.nib。在模拟器和真实设备上,我的应用程序总是崩溃并出现类似 Cannot find executable for CFBundle 0x156ad8b0 </var/mobile/Applications/E3E9EA24-B495-4C2F-8405-6BDCA408ABA7/AppTest.app/MyBundle.bundle/en.lproj> (not loaded) 的错误消息
猜你喜欢
  • 1970-01-01
  • 2013-03-04
  • 2012-03-07
  • 2012-05-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多