7

如何将 ShareKit 与 MonoTouch 一起使用?

GitHub 上的MonoTouch Bindings 项目似乎有ShareKit的绑定,但我无法让它们工作。我目前在 MonoDevelop 中使用 MonoTouch 开发了一个 iPhone 应用程序,但我不知道如何将 ShareKit 实际应用到我的应用程序中。

我已经下载了 MonoTouch Bindings 项目,但是当我make在 ShareKit 目录中时,它似乎需要 ShareKit 本身。然后我下载了 ShareKit,但我不确定是否应该按照安装说明将 ShareKit 集成到 XCode 项目中,甚至是否应该构建 ShareKit。我已经尝试使用 ShareKit“构建”一个空的 iPhone 应用程序项目,但是对于最新的 XCode,部分说明不是最新的,看来我陷入了这个过程。我正在努力让这个工作,但到目前为止我对 XCode 的体验仅限于 MonoTouch 开发所需的少量内容。

或者是否有可以与 MonoTouch 一起使用的“预编译”ShareKit iOS 二进制文件?

有人可以验证 ShareKit 确实可以与 MonoTouch 一起使用,并指导我完成使其工作所需的步骤吗?

提前致谢!

4

2 回答 2

5

大多数时候,在 MonoTouch 中使用绑定时,您必须下载实际库的绑定(或 SDK)。例如,使用 TestFlight 绑定,您需要下载 SDK 并将其放在与 makefile 相同的目录中。我没有亲自体验过 ShareKit,但我想它会以同样的方式工作(事实上,我知道 MT 绑定 GitHub 项目中的大多数绑定(如果不是全部的话)都是这样工作的)。您根本不必处理 Xcode。只需下载 SDK,将其放在正确的目录中,然后运行 ​​makefile。这应该会吐出一个 DLL 供您参考,以便与 MonoTouch 一起使用。

使用 ShareKit 绑定的限制之一是,据我所知,UI 调整必须在 Objective-C 中完成,然后才能尝试使用链接器。如果您对开箱即用的 UI 感到满意,那么我会选择它。否则,还有很多其他开源库可用于创建简单的共享对话框(现在 Twitter 已内置到 iOS 中,这更容易了)。

于 2012-06-08T15:43:00.953 回答
2

首先,您是从 getsharekit.com 下载还是使用 ShareKit 2.0?如果您使用的是 getsharekit 的 DL,那么我强烈建议您先升级。其次,这里有一些基本的安装说明,用于让 ShareKit 与 MonoTouch 一起使用:

脚步

1) 下载代码

2) 在 Xcode 中打开,如果它是一个 App,则创建一个 iOS 库类型的新 Xcode 项目

3) 编译库并记下所需的框架 - 这些将在以后在 monotouch 中链接时帮助您

3) 编译 lib 的 i386 Sim 版本并重命名为 libXYZLib_Sim.a - 将其复制到项目中的 /Lib 并将其构建操作设置为 None。您可以在 /ProjectLib/build/Debug-iphonesimulator/ 下找到它

4) 使用正确的版本编译 arm6 版本并将其复制到项目中的 /Lib 并将其构建操作设置为无。您可以在 /ProjectLib/build/Debug-iphoneos/ 下找到它

5) 像这样对包含 .h 文件的库目录运行 NovellHeaderParser

@@ 单声道“/Users/XX/Projects/NovellHeaderParser/NovellHeaderParser/bin/Debug/NovellHeaderParser.exe”/Users/XX/Documents/ShareKitLib/ShareKit/Core @@

这应该会生成一个 MonoMac.cs 文件,您可以将其导入系统

6) 对其他目录重复步骤 5。注意您实际上只需要针对具有入口点的 .h 文件运行解析器,例如 API 直接调用的顶级类。子类、实用程序、辅助方法不需要解析。

7) 将所有 MonoMac.cs 文件合并到一个新的 MyLib.cs 文件中,并将其添加到 /Lib 下的项目中 - 将其构建选项设置为 None

8) 将任何引用从 MonoMac 更改为 MonoTouch

10) 解析器可能会为每个解析的目录创建一个 enum.cs 文件,但如果没有创建您自己的名为 MyLibEnum.cs 的文件,其中包含 API 所需的任何结构或枚举 - 将其添加到 /Lib 并将构​​建选项设置为 None

11) 打开终端窗口并导航到项目的 /Lib 目录

12) 运行以下 btouch 命令行 - 这将从 MyLib.cs @@ /Developer/MonoTouch/usr/bin/btouch -v MyLib.cs -s MyLibEnum.cs @@ 中定义的接口创建一个 wrapper.dll

13) 将任何缺少的枚举或结构添加到 MyLibEnum.cs 并重复步骤 12

14)通过重命名选择器的任何多个声明来修复它们 - 这可能会导致以后出现问题(见注1)

15) 修复任何缺失的引用,例如 NSMutableArray 在 monotouch 中似乎不存在,所以我将它们更改为 NSArrays(我认为这些在 monotouch 下是可变的???)

16)回到12)并重复,直到生成一个dll。

17)在项目中添加对dll的引用

18) 将以下内容添加到 iPhone Build> Additional mtouch options TO THE SIMULATOR DEBUG/RELEASE BUILD:@@ -gcc_flags "-L${ProjectDir}/Lib -lMyLib_Sim -framework QuartzCore -framework CoreGraphics -framework MessageUI -framework Security -framework UIKit -framework CFNetwork -force_load ${ProjectDir}/Lib/libMyLib_Sim.a -ObjC" @@

'''注意'''

-L${ProjectDir}/Lib 上没有尾随 /

-lShareKitLib_Sim 不需要起始 lib 前缀或 .a 后缀

为创建 lib 时使用的每个框架添加一个框架 - 上面不是详尽的列表

19) 将以下内容添加到 iPhone Build> Additional mtouch options TO THE IPHONE DEBUG/RELEASE BUILD:@@ -gcc_flags "-L${ProjectDir}/Lib -lMyLib -framework QuartzCore -framework CoreGraphics -framework MessageUI -framework Security -framework UIKit -framework CFNetwork -force_load ${ProjectDir}/Lib/libMyLib.a -ObjC" @@

20) 测试它!

于 2012-06-13T17:31:56.400 回答