如何将ShareKit与MonoTouch一起使用?
MonoTouch Bindings project on GitHub似乎有bindings for ShareKit,但我无法让它们发挥作用。我目前在MonoDevelop中使用MonoTouch开发了一个iPhone应用程序,但我不知道如何将ShareKit实际应用到我的应用程序中。
我已经下载了MonoTouch Bindings项目,但是当我在ShareKit目录中make
时,它似乎需要ShareKit本身。然后我下载了ShareKit,但我不确定我是否应该遵循将ShareKit集成到XCode项目中的安装说明,或者我是否应该构建ShareKit。我尝试使用ShareKit“构建”一个空的iPhone应用程序项目,但部分说明似乎并不是最新的XCode的最新版本,似乎我被困在这个过程中。我正在努力让这个工作,但到目前为止我对XCode的经验仅限于MonoTouch开发所需的一切。
或者是否有可以与MonoTouch一起使用的“预编译”ShareKit iOS二进制文件?
有人可以验证ShareKit实际上是否可用于MonoTouch并引导我完成使其工作所需的步骤?
提前致谢!
答案 0 :(得分:5)
大多数情况下,在MonoTouch中使用绑定时,您必须下载实际库的绑定(或SDK)。例如,使用TestFlight绑定,您需要下载SDK并将其放在与makefile相同的目录中。我没有亲自使用ShareKit进行过实验,但我认为它的工作方式相同(我知道MT绑定GitHub项目中的大多数(如果不是全部)绑定都是这样的)。您根本不应该处理Xcode。只需下载SDK,将其放在正确的目录中,然后运行makefile。那应该吐出一个DLL供你参考,以便与MonoTouch一起使用。
使用ShareKit绑定的一个限制是,据我所知,在您尝试使用链接器之前,必须在Objective-C中完成UI调整。如果您对开箱即用的UI很好,那么我会选择它。否则,还有很多其他的开源库可用于创建简单的共享对话框(现在,Twitter内置于iOS,它更容易)。
答案 1 :(得分:2)
您是首先从getsharekit.com下载还是使用ShareKit 2.0?如果您使用的是来自getsharekit的DL,那么我强烈建议您先升级。其次是使ShareKit与MonoTouch一起使用的一些基本安装说明:
步骤
1)下载代码
2)在Xcode中打开,如果它的应用程序创建一个类型为iOS库的新Xcode项目
3)编译库并记下所需的框架 - 这些将在以后链接到monotouch时帮助你
3)编译lib的i386 Sim版本并重命名为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,helper方法。
7)将所有MonoMac.cs文件合并到一个新的MyLib.cs文件中,并将其添加到/ Lib下的项目中 - 将其构建选项设置为None
8)将任何引用从MonoMac更改为MonoTouch
10)解析器可能为每个解析的目录创建一个enum.cs文件,但如果没有创建自己的名为MyLibEnum.cs的API,需要API所需的任何结构或枚举 - 将其添加到/ Lib并将构建选项设置为无
11)打开终端窗口并导航到项目的/ Lib目录
12)运行以下btouch命令行 - 这将从MyLib.cs中定义的接口创建一个wrapper.dll @@ / Developer / MonoTouch / usr / bin / btouch -v MyLib.cs -s MyLibEnum.cs @@
13)将任何缺失的枚举或结构添加到MyLibEnum.cs并重复步骤12
14)通过重命名来修复选择器的任何多个声明 - 这可能会导致以后出现问题(参见注释1)
15)修复任何遗漏的参考文献,例如NSMutableArray似乎不存在于monotouch中,因此我将这些更改为NSArrays(我认为这些在monotouch下是可变的???)
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后缀
为创建lib时使用的每个框架添加一个框架 - 上面不是一个详尽的列表
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)测试它!