我的问题与this earlier one正好相反。我正在开发一个开源应用程序,它以2种形式发布,预编译的二进制文件和源代码。
我安装了预编译的二进制文件,它工作正常,在Dock中有一个漂亮的小图标。
我成功编译了源代码,但是在启动时遇到了运行时错误。调查后我怀疑这个应用程序需要命令行选项才能正常运行。
所以我的问题是:如果我的假设是正确的并且工作版本实际上是定义命令行参数,那么如何从打包的应用程序中检索CL参数?
如果它有任何区别,我正在谈论的应用程序是Cyberduck,我正在运行OS X版本10.8.2
答案 0 :(得分:1)
问题不在于命令行。来自代码here
// Get an instance of the non-localized keys.
CFDictionaryRef bundleInfoDict = CFBundleGetInfoDictionary(mainBundleRef);
if(NULL == bundleInfoDict) {
fprintf(stderr, "[Launcher Error] No info dictionary.\n");
exit(-1);
}
其中mainBundleRef引用.app包。
问题是应用程序内的Info.plist(/Applications/Cyberduck.app/Contents/Info.plist)中没有正常的密钥。它已经以某种方式被破坏了。代码库中的一个看起来很好看。有关结构的信息,我将查看Apple开发document。
最简单的解决方法是重新下载并安装应用程序。