很少写这东西,今天写是为了前半个月纠结的心。
刚换了工作,从以前的c++客户端跑来写ios,使用的是c#语言开发。开发平台用到了xcode4.5 monotouch平台。
近两个多星期一直在玩91SDK对接的问题,从不是如何下手到了今天找到了一些感觉了。
第一,monotouch中只能使用静态库,如自己在xcode中生成的一个.a文件, .dylib文件。
第二,对接91的时候发现了他们只给我们一个framework的文件(framework是一个动态库,还好里面找到了一个类.a的文件)
第三封装framework为一个.a的库。这样子我们可以在这个.a库中写一个中间类去调用91库。不这样子做应该也是可以的,但我没有试过,因为monotouch是用c#写的,要绑定的东西太多了,所以建议是写一个中间类,然后在monotouch中去绑定这个类的开放接口.
好了工作开始:
1.找到91framework文件中的.a文件吧。
上图有标出了哪个是.a文件了别找错了。
好的我们现在把这种.a的文件在framework中全找出来。还有哦里面的头文件也要拿出来全部的放在一个文件夹里面。
2.现在新建一个xcode工程
3.加入一些要的库
4.生成的版本
有真机和虚拟机上面的
真机
虚拟机
这时候会生成两个.a的,他们也是可以合成到一个.a里面的,具体上baidu
这里就小打个例子 liop -create "文件1.a路径" "文件2.a路径" -output "生成路径.a"
查看版本liop -info "文件.a路径"
会看到i386 armv7 armv6
(解出.a文件可以在终端中使用ar命令,NND说是ar命令其实是tar我研究了半天才发现)
1. tar -x -f 文件.a
会生成几个.o的文件
5.使用这个.a
在monodevelop中创建一个monotouch binding工程
6。引入.a
这个是绑定的代码,是写在ApiDefinition.cs,如果有用到enum的绑定或是结构体的绑定定居 structsandenums.cs
7最后创建一个工程用于调用 他们。我这创建的是一个iphone的视图工程,记的在工程中要在选项中iphone build加入-v -gcc_flags="-lsqlite3 -L${ProjectDir}/lib/libsqlite3.dylib"
这个是连接一下系统的库。还有把第一张图中有提示的资源加入到工程中就OK了。
研究了大半个月转了很多圈子又回到了起点。国内baidu不给力,国外googole常打不开(不过找资料上google没选错)我全是在那上面找到的,同时这不是我一个人的研究,还有我的同事和我一起。感谢他们,感谢cctv,最后感谢csdn