欢迎访问移动开发之家(rcyd.net),关注移动开发教程。移动开发之家  移动开发问答|  每日更新
页面位置 : > > > 内容正文

swift 使用SMAMB2包,重新打包的心酸历程,问题就出在我的项目需

来源: 开发者 投稿于  被查看 40551 次 评论:132

swift 使用SMAMB2包,重新打包的心酸历程,问题就出在我的项目需


首先网上很多教程是关于使用swift SMAMB2包的,大部分都是

pod "SMAMB2"

这种方式还是非常简单的,如果仅仅是这样还不至于专门写一篇文章来纪念他。问题就出在我的项目需要用到SMB协议去读取文件,但是并不是直接读取!

通俗一点来讲就是我的用法和 SMAMB2包提供的用法不同!

那就意味我要重新打包了,而当我看了一下源码发现,AMSMB2竟然又用了libsmb2包,将libsmb2打包成 .a 文件。

刚开始看到两个项目的 README 我还以为会很简单。但是万万没想到,光是打包我就经历了两天才成功!

第一个坎: 

我是用的Mac mini安装brew,安装好多次都失败了,在度娘上寻找了一圈。最后在终端输入一下代码:

/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"

参考:https://blog.csdn.net/qq_40922656/article/details/123532784

经过不懈的努力,终于解决了这个问题。

第二个坎:

 

 

 也不知道是什么鬼,眼看要到开始生成 .a文件的时候返回找不到什么玩意。

经过无休止的百度之后,终于发现了解决方案。

autoreconf -vif

但是让我万万没想到的是,这个指令竟然需要到 AMSMB2/buildtool/libsmb2 中去执行(这里的libsmb2文件夹是源码中没有的,需要之后自己添加,如果不添加的话就会自动从github中拉去最新的libsmb2项目)

因为我的项目需要的用法就是要自己重写libsmb2,因此我已经提前准备好了修改之后的libsmb2(公司大佬修改的,用C写的,在下C仅局限于输出Hello world,见笑了)

经过终端编译后,出现一下这一幕就表示你应该是成功了

 

这个时候就可以进入到 AMSMB2/buildtool 文件夹下执行build命令了!

./build.sh

 

 

 

 出现以上,就表示你的 .a文件已经构建完成了(目前还是不太清楚这些WARNING是什么意思,如果有明白的大佬欢迎留言指导!)

到此就可以看到你的  libsmb2-ios.a 文件已经安安静静的躺在 AMSMB2/libsmb2 文件夹下了!

第三个坎:

我将已经打包完成的 .a文件并入 AMSMB2项目想要重新打包并生成新的静态 .framework给iOS使用。但是开始编译那一刻我心态崩了啊,祖国山河一片红叉!!!

 

 经过我向公司大佬的咨询在  libsmb2.h  文件中加入以下代码:

#ifndef UINT64_MAX 
 #include <stdint.h> 
 #endif 

very nice,终于干干净净的编译通过了,哈哈哈。

到这里我心酸的自定义libsmb算是画上一部分句号,至于其他的还有一部分内容没有解决,等解决完之后再决定是不是需要写下来!

 

参考网站:

AMSMB2项目:https://github.com/amosavian/AMSMB2

libsmb2项目:https://github.com/sahlberg/libsmb2

autoreconf -vif:https://stackoverflow.com/questions/15448582/installed-libtool-but-libtoolize-not-found

用户评论