首页 > 其他分享 >iOS SDK开发

iOS SDK开发

时间:2023-02-08 13:55:22浏览次数:57  
标签:接入 静态 iOS framework 开发 动态 链接 SDK

一款好用且设计充分的 SDK 必须要遵循以下 4 条基本原则,即:

1、SDK 安全,稳定
2、统一的开发规范
3、Library 小而精
4、不依赖第三方 SDK
安全,稳定:考虑到 SDK 是需要嵌入到 App 里面去的,所以 SDK 最重要的特性就是安全性,不会因为乱开放接口而导致 App 数据泄露;其次重要的是 SDK 的稳定性, SDK 的 Crash 如果没有被捕获进行处理,则会导致应用彻底崩溃(这样就会导致第三方接入的 App 体验性非常差),甚至会直接导致接入方的用户流失;
统一的开发规范:对于 SDK 开发规范来说,统一的命名规范很重要,最好的状态是“接入方看到接口命名就能知道是哪家厂商的 SDK”,换句话说就是 SDK 的命名规范统一,形成自己公司的品牌效应,此外也方便开发者进行接入使用。此外也需要具有自己的编码规范,你可以在网上找到大厂的规范模板,并通过借鉴整理出属于自己的规范,从而尽早统一代码风格;
Library 小而精:小是指要避免造成接入方的App增加很大,不然会引起接入方的不满,甚至下架。精是指功能要专注,比如极光推送,就是专注推送相关的功能;
不依赖第三方 SDK:这个也很好理解,SDK 中如果又依赖其他第三方 SDK, 不仅会导致 SDK 的体积变大,也会影响接入方集成 SDK 的相关成本。

 

静态连接:一般是指在创建应用程序的时候,将库集成进去,这样做的好处就是应用程序包自身可以独立运行,而不好的地方就是包会略显臃肿,库不能共享(静态库经常以 .a 结尾);
动态连接:创建应用的时候只约定好与库之间的调用关系,而不彻底将库包集成进应用。这样在应用运行时,需要运行环境中提供库,并且连接装载。优劣与静态库相反,动态链接库需要库环境,但由于本身不集成库内容,会比较小,同时也为和其他应用共享库的使用提供了可能(常见的动态库是 Windows 下的 .dll,Linux 下的 .so,Mac 下的 .dylib/.tbd)。   静态库:链接时完整地拷贝至可执行文件中,被多次使用就有多份冗余拷贝。表现形式为 .a和.framework。动态库:链接时不复制,程序运行时由系统动态加载到内存,供程序调用,系统只加载一次,多个程序共用,节省内存。 表现形式为 .dylib和.framework。注意:动态库只能苹果使用,如果项目中使用了动态库不允许上架(如:jspatch)
a与.framework有什么区别?

.a是一个纯二进制文件,.framework中除了有二进制文件之外还有资源文件。 .a文件不能直接使用,至少要有.h文件配合(微信的SDK就是这种形式),.framework文件可以直接使用。 .a + .h + sourceFile = .framework。 建议用.framework。再者 静态方式开发,一直是iOS SDK开发的主流方式

 

静态库和动态库的区别

如果说要找出静态库与动态库的区别,那可以从文件链接(每个源代码模块独立编译,然后按照需要将他们组装起来,这个组装模块的过程,就是链接)的角度进行解释:

静态库:链接时会被完整的复制到可执行文件中,所以如果两个程序都用了某个静态库,那么每个二进制可执行文件里面,都会含有这份静态库的代码;
动态库:链接时不复制,而是在程序启动后动态加载,然后再进行符号决议(符号绑定)。理论上动态库只存在一份就可以了。其他的程序都可以动态链接到这个动态库上面,从而节省内存(内存中只有一份动态库)。另外一个好处是,由于动态库并不绑定到可执行程序上,所以我们想升级这个动态库就很容易,windows和linux上面一般插件和模块机制都是这样实现的。
具体的优劣势可以看这张表:


 

标签:接入,静态,iOS,framework,开发,动态,链接,SDK
From: https://www.cnblogs.com/fightinglikeKobe/p/17101467.html

相关文章

  • 小程序高级电商前端第3周电商系统分类页面客服商品详情页面开发<三>----为你推荐实现
    为你推荐实现:概述:接着https://www.cnblogs.com/webor2006/p/16645627.html继续往下学习,对于整个首页的功能,还差最后一个木有实现:而这块也是最麻烦的,推荐的商品是需要分......
  • 离线地图的开发笔记(一)
    最近做一个项目,用到离线谷歌地图的开发,而现在谷歌地图在中国的发展不是很完美,导致项目的定项迟迟不能决定。后来制作了一个地图插件mymapw.ocx,完美地解决了Winform窗体里......
  • IOS中的Context Menu
    IOS中的ContextMenu通过长按组件或者3Dtouch方式,周边全部虚化,弹出一个可操作的菜单,并且菜单之间也可以嵌套IOS13之后已经弃用UIViewControllerPreviewingDelegate......
  • 怎样巧妙的使用推送 SDK
    推送,时下比较主流的SDK,使得开发者可以即时的向其应用程序的用户推送通知或者消息,与用户保持互动,从而有效地提高留存率,提升用户体验。 大家都在说哪家好哪家坏,关于数据性能......
  • 【Oculus Interaction SDK】(四)使用双手操作物体
    前言这篇文章是【OculusInteractionSDK】系列的一部分,如果发现有对不上的对方,可以回去翻看我之前发布的文章,或在评论区留言。如果文章的内容已经不适用于新版本了,也可以......
  • JavaScript 实战开发经验!函数多参数传参技巧
    Tips:必选参数指的是必须要传入实参的参数;可选参数在函数中有默认值,如有传入实参,则取实参的值,如果没有传入实参,则使用默认值。函数的众多参数问题当一个函数既有必选参数,......
  • 开源基于.Net Core 6.0 +DDD模式开发的通用权限系统
    项目简介这是一个基于.NetCore6.0+DDD模式开发的通用权限系统。前端借鉴了诺依的框架,框架选型都是使用了比较最新的技术、前后端分离。技术架构1、跨平台:这是基于.Ne......
  • freeswitch智能语音开发之ASR
    ASR(AutomaticSpeechRecognition)自动语音识别技术是一种将人的语音转换为文本的技术。一、freeswitch如何使用asrfreeswitch提供两个app功能detect_speech和play_and_de......
  • 安装和配置Java开发环境JDK
    我们通常软件开发的操作系统选择Windows,生产环境选择linux或windowsServer。移动开发可能是安卓或IOS和鸿蒙系统等。Windows下一般选择的是64位的操作系统,一般建议CPUI5......
  • 快速上手Java开发工具Eclipse之简易手册
    Eclipse下载,可以下载最新版本,文档是以2020-12R版本为例http://www.eclipse.org/downloads/ 下载Packages即可安装Eclipse 解压安装除了我的电脑----高级---环境变......