命令行工具中的strings命令没有做任何事情

时间:2014-07-06 19:52:18

标签: ios xcode xamarin appstore-sandbox

我正在尝试将我的代码推送到苹果。我正在验证Xcode中的代码。 我正在关注这篇文章: http://developer.xamarin.com/guides/ios/deployment,_testing,_and_metrics/app_distribution_overview/publishing_to_the_app_store/

但我收到一条错误消息“应用程序引用非公共选择器/ myproject / path:artwork,command,finished,initWithSendPort

我读过有人说要在xcode中运行命令行工具对抗dll来找到像这样的罪魁祸首:

strings /path/to/dllfolder.dll  | grep artwork

但我的应用程序中没有任何dll。在Xamarin中对我的配置进行构建后,接收文件夹只有myapp,myapp.dsym,myapp.exe,我的app.xcent和资源文件夹为空。

我被困住了。我该怎么办?

解决方案:

@Rolf,我会将你的答案标记为解决方案,因为它的一部分就是我为解决问题所做的工作。我下载了最新的Xamarin更新,版本3.0,然后“链接所有程序集”,它立即工作。

2 个答案:

答案 0 :(得分:0)

将此选项用于字符串:

'''  -一个   - 所有         - 不要仅扫描对象的初始化和加载部分        文件;扫描整个文件。 '''

http://www.freebsd.org/cgi/man.cgi?query=strings&sektion=1&n=1

答案 1 :(得分:0)

这些选择器很可能出现在monotouch.dll中。然而,大多数这些选择器实际上是公开记录的[1],那些未被删除的(从你的列表中我相信initWithSendPort:receivePort:components是唯一的一个)来自未来版本的Xamarin.iOS。

当前的解决方法是在项目的iOS构建选项中启用托管链接器(设置"链接器行为"到"链接所有程序集"或"链接仅限SDK程序集")。这将删除monotouch.dll中未使用的代码,除非您实际使用相关API,否则将删除这些选择器的使用。

[1] http://forums.xamarin.com/discussion/comment/59264/#Comment_59264