ShareKit与MonoTouch如何?

Sha*_*uch 7 xamarin.ios sharekit

你如何使用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并指导我完成使其工作所需的步骤?

提前致谢!

pie*_*gan 5

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

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


Sim*_*iwi 2

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

脚步

1)下载代码

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

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

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

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

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

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

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

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

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

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

10) 解析器可能会为每个解析的目录创建一个 enum.cs 文件,但如果没有使用 API 所需的任何结构或枚举创建您自己的名为 MyLibEnum.cs 的文件 - 将其添加到 /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 在单触摸中似乎不存在,所以我将它们更改为 NSArray(我认为这些在单触摸下是可变的???)

16) 返回12),重复直到生成dll。

17) 将dll的引用添加到项目中

18) 将以下内容添加到 iPhone Build> 模拟器调试/发布构建的附加 mtouch 选项中: @@ -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 后缀

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

19) 将以下内容添加到 iPhone Build> IPHONE DEBUG/RELEASE BUILD 的附加 mtouch 选项中: @@ -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) 测试一下!