swift 使用SMAMB2包,重新打包的心酸历程

打印 上一主题 下一主题

主题 806|帖子 806|积分 2418

首先网上很多教程是关于使用swift SMAMB2包的,大部分都是
  1. pod "SMAMB2"
复制代码
这种方式还是非常简单的,如果仅仅是这样还不至于专门写一篇文章来纪念他。问题就出在我的项目需要用到SMB协议去读取文件,但是并不是直接读取!
通俗一点来讲就是我的用法和 SMAMB2包提供的用法不同!
那就意味我要重新打包了,而当我看了一下源码发现,AMSMB2竟然又用了libsmb2包,将libsmb2打包成 .a 文件。
刚开始看到两个项目的 README 我还以为会很简单。但是万万没想到,光是打包我就经历了两天才成功!
第一个坎: 
我是用的Mac mini安装brew,安装好多次都失败了,在度娘上寻找了一圈。最后在终端输入一下代码:
  1. /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"
复制代码
参考:https://blog.csdn.net/qq_40922656/article/details/123532784
经过不懈的努力,终于解决了这个问题。
第二个坎:

 
 
 也不知道是什么鬼,眼看要到开始生成 .a文件的时候返回找不到什么玩意。
经过无休止的百度之后,终于发现了解决方案。
  1. autoreconf -vif
复制代码
但是让我万万没想到的是,这个指令竟然需要到 AMSMB2/buildtool/libsmb2 中去执行(这里的libsmb2文件夹是源码中没有的,需要之后自己添加,如果不添加的话就会自动从github中拉去最新的libsmb2项目)
因为我的项目需要的用法就是要自己重写libsmb2,因此我已经提前准备好了修改之后的libsmb2(公司大佬修改的,用C写的,在下C仅局限于输出Hello world,见笑了)
经过终端编译后,出现一下这一幕就表示你应该是成功了

 
这个时候就可以进入到 AMSMB2/buildtool 文件夹下执行build命令了!
  1. ./build.sh
复制代码

 
 
 
 出现以上,就表示你的 .a文件已经构建完成了(目前还是不太清楚这些WARNING是什么意思,如果有明白的大佬欢迎留言指导!)
到此就可以看到你的  libsmb2-ios.a 文件已经安安静静的躺在 AMSMB2/libsmb2 文件夹下了!
第三个坎:
我将已经打包完成的 .a文件并入 AMSMB2项目想要重新打包并生成新的静态 .framework给iOS使用。但是开始编译那一刻我心态崩了啊,祖国山河一片红叉!!!

 
 经过我向公司大佬的咨询在  libsmb2.h  文件中加入以下代码:
  1. #ifndef UINT64_MAX
  2. #include <stdint.h>
  3. #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

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

羊蹓狼

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表