【发布时间】:2014-01-12 13:21:25
【问题描述】:
我的项目中有一个应用程序(名为 App_Main)。我想在 App_Main 的包中打包另一个小应用程序(我们称之为 App_Tiny)。
然后,由于我知道 App_tiny 的路径,我可以在需要时在 App_Main 的运行时以编程方式执行 App_Tiny。
我怎样才能做到这一点?如何指定和构建另一个可执行目标,并且最重要的是,自动将 App_Tiny 放入 App_Main 的包目录中?
【问题讨论】:
我的项目中有一个应用程序(名为 App_Main)。我想在 App_Main 的包中打包另一个小应用程序(我们称之为 App_Tiny)。
然后,由于我知道 App_tiny 的路径,我可以在需要时在 App_Main 的运行时以编程方式执行 App_Tiny。
我怎样才能做到这一点?如何指定和构建另一个可执行目标,并且最重要的是,自动将 App_Tiny 放入 App_Main 的包目录中?
【问题讨论】:
要添加新目标,只需点击项目浏览器左侧窗格中的“新目标”按钮即可。 Xcode 将允许您在添加时选择目标类型(应用程序)。
接下来,您需要添加 FooBarTiny 作为主应用程序 (FooBar) 的构建依赖项。编辑主目标的方案并将子目标添加为显式依赖项。
现在当你构建 FooBar 时;如果需要,将构建 FooBarTiny。
接下来,您将 FooBarTiny 添加到“复制捆绑资源”阶段。点击添加按钮并向下滚动树,您可以在 Products 文件夹中找到 FooBarTiny。
要从您的应用中启动 FooBarTiny,您可以使用 NSWorkspace。
- (NSRunningApplication *)launchApplicationAtURL:(NSURL *)url options:(NSWorkspaceLaunchOptions)options configuration:(NSDictionary *)configuration error:(NSError **)error 可能是一个很好的起点。查看 API 文档了解其他变体。
应用商店的额外服务
仅签署您的主应用程序是不够的。任何 Applescripts 和子应用程序 (FooBarTiny) 都必须进行签名,否则您的应用程序将无法通过验证。这个答案与此无关,但这里有一个good blog on the issue。
【讨论】: