LIBDSM库对多平台、多方案支持的开发与探索 - 准备

7 篇文章 0 订阅
2 篇文章 0 订阅

系列文章

项目地址 - https://github.com/biezhihua/libdsm

前言

已经入行很久了,心中一直有个想法,就是写个能够为大家所用的、支持多平台的基础库。

主要目标有如下:

  • 一个是能带来一些成就感
  • 一个是能够熟悉更多一些的技术细节
  • 一个是能够对多平台支持的架构设计能有一些心得

奈何种种情况之下,这个想法一直没有达成,趁着春节,花了不少时间,终于完成了该想法。

目前针对于客户端iOS和Android平台,从底层到上层的的实现,各自有如下技术栈:

  • Android:

    • Java/Kotlin + JNI + C/C++
      • 产物: .aar
  • iOS:

    • OC/Swift + Birdge + C/C++
      • 产物: .framework
  • Flutter:

    • Dart + Dart Channel + Platform Plugin:
      • Android Plugin: Java/Kotlin + AAR
      • iOS Plugin: OC/Swift + Framework
    • Dart + Dart FFI + C/C++:
      • https://flutter.dev/docs/development/platform-integration/c-interop
  • Unity3D (仅Android):

    • C# + AndroidJNIModule + aar

这次的Code,也同时涉及这四个方面,分别会给出各自方案的实现。

对于DSM,这里简单介绍一下,这是一个用C写的,SMB的客户端简版实现,由VLC团队维护。

无意中发现该DSM库,在各个平台上并没有开源的实现,故此,造一个轮子。

架构

架构以简单明了为原则,选取已实现的部分,作为子项。

image.png

可以看到,整个的实现方案是以双端Android和iOS的实现方案为基础,扩展到Flutter和Unity3D的。

并且,为了能够最大程度的复用,是将纯C/C++作为一个独立的模块。

以此图为架构,就能完成一个,适用于双端的、支持原生Android、原生iOS、Flutter、Unity3D的DSM库。

构建

由于目前的方案是基于DSM©在双端平台的封装实现,自然一个前提就是首先构建出来DSM用于支持双端架构(ARCH)的的静态库(.so)和动态库(.a)。

DSM实现的很好,但是奈何在编译产出这一步,比较繁琐艰难。

这里使用libs-build-tool,可以快速协助构建产物。

Android:

/android.sh -c && ./android.sh --enable-libdsm --arch-all

iOS:

./ios.sh -c && ./ios.sh --arch-all --enable-libdsm

最后的产物结果目录如下:

Android:

libdsm
  |
  |---- include
  |
  |---- lib
          |
          |---- arch
                  |
                  |---- libcharset.a
                  |---- libdsm.a
                  |---- libiconv.a
                  |---- libtasn1.a

iOS:

libdsm
  |
  |---- include
  |
  |---- lib
         |
         |---- libcharset.a
         |---- libdsm.a
         |---- libiconv.a
         |---- libtasn1.a

构建好产物之后,现在开始各个平台的开发。

引用

  • https://github.com/videolabs/libdsm/
  • https://github.com/biezhihua/libdsm
  • http://videolabs.github.io/libdsm
  • https://github.com/biezhihua/libs-build-tool
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值