我在ObjC框架上工作,我们为客户提供他们自己的应用程序。它是一个静态库,可生成.framework文件(模拟器和iphoneos),然后我们将其创建到胖库中。为了使用CoreData并与iOS 7兼容,我们需要将.momd部分放在我们提供给客户端的单独的.bundle文件中。
现在,当我使用该框架和捆绑创建示例Swift应用程序并将其上传到App Store时,我在抱怨.bundle的加载命令后收到一封电子邮件:
缺少加载命令 - ' /Payload/TestSwift.app/TheBundle.bundle/TheBundle'中的可执行文件;没有必要的加载命令。尝试使用最新的Xcode版本重建应用程序。如果您使用的是第三方开发工具,请与提供商联系。
我不知道它想要什么。不幸的是,我是提供者并且联系我自己没有帮助。
我已经用Google搜索并遵循了几条可用的说明:
但邮件仍然会收到警告,并且不会上传内容。
知道如何解决这个问题吗?
重要提示:我想避开XY problem,但此处有更多信息:
在我潜入之前,这是一个有趣的解决方案吗?如果是,如何将静态库正确转换为动态库? .framework中用于加载.bundle的当前代码:
NSBundle *bundle = [NSBundle bundleWithPath:[[NSBundle mainBundle] pathForResource:@"TheBundle" ofType:@"bundle"]];
NSString *modelPath = [bundle pathForResource:@"TheCache" ofType:@"momd"];
NSURL *modelURL = [NSURL fileURLWithPath:modelPath];
如果TheCache架构在.framework中,则假设代码:
NSBundle *bundle = [NSBundle mainBundle];
NSURL *modelURL = [bundle URLForResource:@"TheCache" withExtension:@"momd"];
谢谢。
答案 0 :(得分:1)
这是我们刚刚发现的一个奇怪的问题,它与我们从主要的静态Lib构建一个单独的Bundle有关。如果您还要构建一个单独的包;
答案 1 :(得分:0)
我通过会员中心的技术支持向Apple询问。 我的核心问题是我的Bundle表现得像一个可执行文件,因为Compile Sources中有元素。
解决方案:
我建议在复制新生成的软件包之前手动删除主机项目中的先前软件包