
SDK
郏国上
Object C, JavaScript, python高级研发工程师
展开
-
制作SDK注意事项
开发SDK一般需要三个工程:1. 研发SDK工程;2.生成SDK工程;3.SDK使用demo工程SDK一般有两大优点:1.防止别人看到代码和实现;2.组件化,提高代码复用率(SDK也算一个功能组件,和pod导入的工程一样)。提供sdk的日志开关宏(sdk内头文件定义)和头文件包含宏(对外开放的总头文件定义)。原创 2023-06-16 17:59:17 · 334 阅读 · 0 评论 -
找不到RongIMKit.h问题及解决方案
找不到RongIMKit.h问题及解决方案。另一个同事的在他电脑上使用正常。我把他的代码拷贝过来也正常,但是一旦使用pod update --verbose --no-repo-update更新库就报这个错误了。把公有源删除和把本地库都删除,重新下载还是报头文件找不到。融云SDK5.1.3版本也无法使用。4.0.4版本没有问题 我们线上版本是4.0.4版本。问题解决了,是通过降低版本到4.0.4解决的。原创 2021-07-08 09:36:47 · 825 阅读 · 0 评论 -
含有swift组件的SDK打包
SDK打包有两种方式:1:cocoapods-packager命令打包。2:采用传统的简历打包工程进行打包:iOS制作.framework静态库和iOS制作.a类型的静态库。原创 2019-11-04 17:41:16 · 687 阅读 · 0 评论 -
iOS使用SDK静态库
iOS使用SDK静态库。1.首先建立一个测试工程。2.修改工程。3.修改主页跳转。4.增加TestSDKSingleObject.h,TSBaseEntity.h,libTestSDK.a(SDK)到测试工程。5.增加Podfile,执行pod update(pod update --verbose --no-repo-update)加载第三方库。原创 2019-05-10 17:54:44 · 336 阅读 · 0 评论 -
打包SDK静态库
1.修改配置.podspec文件。2.删除淘宝镜像,增加'gem sources -a https://gems.ruby-china.com/',升级cocoapods到1.5.0以上版本,安装cocoapods-packager。打包.framework类型的静态库或.a类型的静态库。3.framework类型的静态库和.a类型的静态库的优缺点。原创 2019-05-09 18:12:23 · 876 阅读 · 0 评论 -
制作SDK静态库
1.修改storyboard启动的主页为代码实现主页启动。2.实现SDK对外接口。Development Pods下的TestSDK是我们SDK代码存放的地方。3.写SDK的测试代码。Example for TestSDK文件夹下是我们的测试工程的测试页面和代码存放的家。4.测试Demo对测试代码文件的复用问题。原创 2019-05-09 15:30:15 · 1126 阅读 · 0 评论 -
创建制作SDK的静态库工程
使用cocoapods。1.在命令行终端输入`pod lib create TestSDK`创建工程。2.修改TestSDK.podspec文件。3.修改Podfile文件,加入共有源和私有源。4.修改工程。1)Development Pods下的TestSDK是我们SDK代码存放的地方。2)Example for TestSDK文件夹下是我们的测试工程的测试页面和代码存放的家。5.查看SDK代码和测试代码的物理路径。6.cocoapods库的更新,`pod update`。原创 2019-05-09 11:48:48 · 591 阅读 · 0 评论 -
制作传统动态库和静态库遇到的问题
之前整理过两种打包静态库的方法与使用:iOS制作.framework静态库、 iOS使用.framework类型的静态库和iOS制作.a类型的静态库、iOS使用.a类型的静态库。不过这种方式的缺点很明显,以我们要开发的SDK自定义库为例子:需要自己使用Xcode创建静态库工程;当SDK自定义库使用里第三方库,而使用SDK的工程也使用了相同的库,那么由于静态库实际上是拷贝两份代码,直接导致编译...原创 2019-05-06 16:01:35 · 414 阅读 · 0 评论 -
.framework类型的静态库和.a类型的静态库的优缺点及.framework类型的静态库zip压缩后解压后头文件丢失问题
.framework类型的静态库和.a类型的静态库各有优缺点。.framework类型的静态库使用方便,一包在手万事我有,但是会出现zip压缩后解压头文件丢失。.a类型的静态的有点是zip压缩不失真,可以按照你的需要要提供给用户头文件,不需要删除含安全信息的头文件。缺点是它不包含头文件和bundle资源文件,bundle资源文件要自己另外制作,需要你另外提供给用户。原创 2019-05-13 18:24:08 · 614 阅读 · 3 评论 -
由于工程变更导致Build input file cannot be found问题及解决方案
有时候你变更工程文件,导致Build input file cannot be found。如你的工程原来是支持Pods的,你删除了Pods,那么有可能遇到这个文件。我在做SDK开发时就遇到这个问题。error: Build input file cannot be found: '/Users/jiaguoshang/Library/Developer/Xcode/DerivedData/EL...原创 2019-03-10 17:29:49 · 28646 阅读 · 0 评论 -
如何去除Pods
我们要做SDK,以前工程都是用Pods引入第三方库的,所以新工程也惯性的使用了Pods,测试发现,做出来的.a文件无法调用第三方库。只好把Pods去掉了。1.先删除Podfile,Podfile.lock,Pods文件和文件夹2.若你认为删除干净了,打开原来的工程BLockSDKUnitTest并运行,会报下面的错误。3.删除中的下面文件夹。再运行报错:diff: /Podfile...原创 2019-03-10 17:23:47 · 1059 阅读 · 0 评论 -
-ObjC引起的duplicate symbol _OBJC_IVAR
ld: 205 duplicate symbols for architecture armv7clang: error: linker command failed with exit code 1 (use -v to see invocation)通过去掉other linker flags的-ObjC解决。为什么不加-ObjC时,CorePlot会崩,出现“selector not...原创 2019-03-09 18:14:10 · 1724 阅读 · 0 评论 -
iOS使用.framework类型的静态库
iOS使用.framework类型的静态库1.新建一个新工程2.增加资源文件SDKDemoBundle.bundle,不增加资源文件,而使用资源文件会crash.注意: SDKStaticFrameworkDemo.framework中的SDKDemoBundle.bundle资源文件不能在工程中直接访问需要把它移动到工程才能使用。不是从 SDKStaticFrameworkDemo.fra...原创 2019-03-06 19:50:40 · 426 阅读 · 0 评论 -
iOS使用.a类型的静态库
iOS使用.a类型的静态库1.新建一个新工程2.引入SDKDemoBundle.bundle资源文件注意:不过SDKDemoBundle.bundle资源文件并不被编译进.a文件,只是以后找SDKDemoBundle.bundle资源文件方便。可以通过比较添加和删除SDKDemoBundle.bundle资源文件生成的libSDKStaticDemo.a大小知道他们一样大。3.引入 inc...原创 2019-03-06 16:12:21 · 3723 阅读 · 0 评论 -
iOS制作.a类型的静态库
iOS制作.a类型的静态库库(Library)其实就是一段编译好的二进制代码,加上头文件就可以供别人使用,一般会有两种情况要用到库:1.某些代码需要给别人使用,但是我们不希望别人看到源码,就需要以库的形式进行封装,只暴露出头文件。2.对于某些不会进行大的改动的代码,比方说很多大公司常用且很少变动的模块都会编译成库,这样做的好处一是可以节省编译时间,二来对于代码的管理也非常方便。因为库是已经...原创 2019-03-06 11:13:56 · 1185 阅读 · 0 评论 -
iOS生成Bundle 资源文件包与使用
Bundle 文件,简单理解,就是资源文件包。我们将许多图片、XIB、文本文件组织在一起,打包成一个 Bundle 文件。方便在其他项目中引用包内的资源。Bundle 文件是静态的,也就是说,我们包含到包中的资源文件作为一个资源包是不参加项目编译的。也就意味着,bundle 包中不能包含可执行的文件。它仅仅是作为资源,被解析成为特定的 2 进制数据。1.sdk 中xib,图片等一切资源都需要添...原创 2019-03-04 15:20:25 · 7706 阅读 · 0 评论 -
iOS制作动态库
如果我们有些功能要给别人用,但是又不想公开代码实现,这时候我们就要打包成库了。库分静态库和动态库两种:静态库:以.a 和 .framework为文件后缀名。动态库:以.tbd(之前叫.dylib) 和 .framework 为文件后缀名。静态库与动态库的区别静态库:链接时会被完整的复制到可执行文件中,被多次使用就有多份拷贝。动态库:链接时不复制,程序运行时由系统动态加载到内存,系统只加载...原创 2019-03-04 18:55:38 · 2632 阅读 · 0 评论 -
iOS使用动态库
什么是库 ? 库就是程序代码的集合,将N个文件组织起来,是共享程序代码的一种方式。库从本质上来说是一种可执行代码的二进制格式,可以被载入内存中执行。咱们自定义的私有组件和公有组件也是一种库。库的分类开源库:源代码是公开的,可以看到每个实现文件(.m文件)的实现,例如GitHub上的常用的开源库:AFNetworking、SDWebImage等;闭源库:不公开源代码,是经过编译后的二进制文...原创 2019-03-05 11:06:21 · 2656 阅读 · 1 评论