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