iOS 自制SDK包流程
【原文】( )
创新互联公司拥有一支富有激情的企业网站制作团队,在互联网网站建设行业深耕十多年,专业且经验丰富。十多年网站优化营销经验,我们已为千余家中小企业提供了成都网站制作、网站建设解决方案,按需搭建网站,设计满意,售后服务无忧。所有客户皆提供一年免费网站维护!
图1:
图2:
图3:创建成功效果
图4:
图5:
图6:
图7:
图8:成功效果图
图9:
图10:
图11:成功效果图
图12:
图13:
图14:
图15:
6.选中目标SDK设置支持的架构(一般模拟器环境是x86_64 真机环境是armv7 armv64)
7.最后编译,command + B,编译通过在finder中找到framework,拷贝出来
编译之前设置工程为release环境
8.获取真机环境下的可执行文件
9.获取模拟器环境下的可执行文件
10.使用lipo -create /Users/suning/Desktop/未命名文件夹/FDDTestSDK.framework/FDDTestSDK /Users/suning/Desktop/未命名文件夹/FDDTestSDK1.framework/FDDTestSDK -output /Users/suning/Desktop/未命名文件夹/FDDTestSDK.framework/FDDTestSDK. 合并导出可以在真机和模拟器环境下的SDK文件。
最终的SDK文件目录,可以拖拽到项目中进行使用了。
打包资源文件的方式可以参考 此文章
iOS开发:SDK依赖第三方库及其踩过的坑
公司开发的SDK,是集成了各个平台的商品,包括购买、分享、提现等功能,为了加快进度,我是使用了一些第三方。但是有些需求,比如分享到微信朋友圈或者还有,必须用到微信的SDK。考虑到后期的维护成本和集成,笔者采用了cocoapods管理第三方库。
笔者有片文章专门介绍SDK的开发步骤的,大家可以参考,我这里就直接进入主题了。
首先,你创建一个静态的framework工程MyTestSDK,把这个工程集成cocpapods,至于如何集成cocpapods,网上有教程,自己搜索。这个时候把你项目中所用的第三方库添加到Podfile文件中,然后 pod install。这个时候你command + B 编译运行,如果你的第三方库中还有Bundle资源,那么编译后,第三方库的bundle资源会被编译,一起放到Products文件下的framework文件中,右键Show in Finder就会看到。如下图所示的MBProgressHUD文件夹,里面都是MBProgressHUD第三方的资源文件。
然后把你的项目放入SDK工程中,编译运行一下,看看有没有错误。之所以先把SDK工程选用cocoapods管理,就是怕你的项目放入SDK中运行报错。没有任何问题,直接编译即可。
由于SDK中的第三方是通过cocoapods管理的,所以接入者的项目也要用cocoapods管理。
1:把SDK工程中,Products文件夹下的framework文件copy到项目中,最好项目中建立一个文件夹,专门放SDK和bundle。我是放到了一个文件夹中,方便分类寻找。如下图所示:
2:打开终端,cd到SDK所在的文件夹下,执行如下命令,回车,创建spec文件。
其中,MyTestSDK是你的SDK名称。
创建出来的spec文件,是个很长的文件,但是大部分都是注释的,我这里只提取了有用的信息展示出来:
然后把spec中依赖的第三方库,逐个加入到项目中的Podfie文件中。然后 终端打开,cd到自己的项目中,pod install即可。
本人亲自测试过的,No Problem。当初感觉SDK如果依赖了第三方库,接入的项目中也有同样的第三方库,会不会冲突啊,感觉好难搞啊。事实证明,通过spec进行依赖,可以很好的解决这个问题,也就没有那么麻烦了。
首次开发SDK还是遇到了很多问题,运行出现很多bug,但是最后还是一一解决了,就是没有记录下bug和解决发的方法。
1;path路径不对,就会报错 ,如下
是因为我把路径写成了:
其实正确的写法是:把“/”放在前面
2:SDK中有第三方,但是项目中的Podfile里面没有这个第三方,报错如下所示:
解决办法是就是在项目中的 Podfile里面加入缺失的第三方库,重新 pod install。
如何使用IOS SDK进行基于LBS的开发
1、下载iOS地图SDK的最新版本
2、申请LBS密钥(见第二部分)。
3、xCode新建工程
新建一个 Single View Application 工程。注意:Language 选择 Swift
4、工程配置
a. 引入地图库搜索库
左侧目录中选中工程名,在 TARGETS-Build Phases- Link Binary With Libaries 中点击“+”按钮,在弹出的窗口中点击“Add Other”按钮,选择解压后的 MAMapKit.framework 文件添加到工程中。
搜索库的添加方法同上。
b.引入AMap.bundle资源文件
AMap.bundle资源文件中存储了定位、默认大头针标注视图等图片,可利用这些资源图片进行开发。
左侧目录中选中工程名,在右键菜单中选择Add Files to “工程名”…,从 MAMapKit.framework-Resources 文件夹中选择 AMap.bundle文件,并勾选“Copy items if needed”复选框,单击“Add”按钮,将资源文件添加到工程中。
c.引入系统库
左侧目录中选中工程名,在TARGETS-Build Settings- Link Binary With Libaries中点击“+”按钮,在弹出的窗口中查找并选择所需的库(见下表),单击“Add”按钮,将库文件添加到工程中。
说明:
备注中,2D表示使用2D栅格地图需要的系统文件,3D表示使用3D矢量地图需要的系统文件、Search表示使用搜索库需要的系统文件。
SystemConfiguration.framework、CoreTelephonySecurity.framework、Security.framework 是为了统计app信息使用。
d.Swift编译配置
首先:新建桥接头文件(放在工程路径下),这里命名为 AMapDemoSwift-Bridging-Header.h,在该头文件中import需要的库文件,代码如下:
#import MAMapKit/MAMapKit.h
#import AMapSearchKit/AMapSearchAPI.h
然后,左侧目录中选中工程名,在 TARGETS-Build Phases- Swift Compiler - Code Generation - Objective-C Briding Header 中输入桥接文件的路径
5、地图的显示
以3D矢量地图SDK为例,进行介绍。
在 ViewController.swift 中,继承 MAMapViewDelegate 协议,在 viewDidLoad 方法中配置用户Key,初始化 MAMapView 对象,并添加到 Subview中。代码如下:
let APIKey = "8a1383b14466a8dbf362f44357c496c0"
class ViewController: UIViewController , MAMapViewDelegate{
var mapView:MAMapView?
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
// 配置用户Key
MAMapServices.sharedServices().apiKey = APIKey
// 初始化MAMapView
initMapView()
}
func initMapView(){
mapView = MAMapView(frame: self.view.bounds)
mapView!.delegate = self
self.view.addSubview(mapView!)
}
}
运行程序,地图显示出来了,就是这样简单~
iOS 封装静态库(SDK)的详细过程
最近公司由于业务需求,需要提供一个SDK以供第三方公司的集成开发,之前没有这方面的开发经验有点迷茫。然后就在网上查看了一些相关的资料,自己研究了一天,成功的封装出了自己iOS开发过程中的第一个SDK包。同时也是为了以后开发SDK留下一个比较完整的笔记。
SDK的英文全名是:software development kit,翻译成中文的意思就是“软件开发工具包”,我个人的理解就是一个工具包,完全可以理解成开发中我们的一个公共类。
二、怎么实现SDK的封装呢?
1.打开Xcode开发工具创建我们的工具类
注:本文中使用的开发工具为xcode9.3
创建完成后
创建完成后,我们新建两个继承于基类的文件,一个用于封装网络请求一个用于封装我们需要提供给他人使用的方法以及需要动态改变的参数。
2.网络请求添加到SDK中一起封装
因为我们封装的SDK有的数据涉及到网络请求,所以我们封装的时候,顺便把需要用到的网络请求也封装进去。
1).使用cocoapods导入第三方库AFNetWorking
具体使用 见印象笔记内容,包含了使用cocoapods遇到的问题以及解决方法:
2).在封装的SDK中如果涉及到使用第三方的库引用的时候,一定要在.m文件中进行引用
3.做完想要封装的文件后,开始进行封装
先进行编辑设置,在product --Scheme---Edit Scheme
此处必须是release,不能用debug模式,选择SDK是在iOS 、tvOS还是watchOS 4上面运行的SDK,在这儿我们选择iOS
在build Setting里面 搜索linking 设置Mach-O Type 为 static library
在build Phases --- headers 中添加需要暴露的类,将Project里面想暴露的文件.h拖动到Public里面进行文件暴露
完成所有设置后,我们进行真机编辑和模拟器编辑最后合并成一个可以在真机和模拟器上运行的第三方SDK,
4.到这一步我们的SDK封装就差最后一步了,合并成能在真机和模拟器上运行的SDK
选中编辑好的包,我这儿是Demo_SDK.framework然后右击显示文件内容
找到这两个文件后,我们开始合并,得到我们想要的SDK
1).打开终端---输入lipo -create 加上文件路径
1.为真机的文件,2为模拟器的文件,3为合并后输出问的地址
注意:我们所合并的文件是Demo_SDK,并不是所有的文件
合并到处文件为lipo结尾的
更改合并和的文件名称和合并前文件名称相同,并且去掉后缀。用合并和的文件替换掉和并前的文件
合并完成后拷贝处我们封装的SDK,在其他项目中引用就可以了
总结:截图比较多,为了照顾像我这样的小白,希望大家理解。第一次写,不喜勿喷,这只是作为自己的个人笔记,如果有什么不对的地方,希望大家指出一起交流学习,Thanks♪(・ω・)ノ
Demo链接:
iOS开发之SDK国际化
对SDK内部text进行国际化处理
在控制器上显示一段文字,底下有三个按钮,每一个按钮点击之后切换不同的语种,分英文、简体中文和繁体中文三种。
注意:
创建静态库可以参考: iOS开发库之(二):静态库Framework的创建
创建Bundle可以参考: iOS之Bundle的创建与使用
点击刚刚创建的Localizable.strings文件,点击以下红框:
默认只支持英文的:
选择需要支持的语言,比如说Chinese(Simlified)/Chinese(Traditional):
本处只需要支持三种:英文、简体中文、繁体中文,那配置结果如下图:
以上属于Bundle里面的设置内容,这个国际化的内容就设置完了,接下来是如何显示不同的内容,先编译一下Bundle,另外每次改变Bundle都需要重新单独编译~
注意:其他的联调的我就不说了,另外还有Alert的那个类我也不说了,大家更详细的可以看DEMO, DEMO传送门
以下附上三张效果图:
附带其他的国际化:
3分钟实现iOS语言本地化/国际化(图文详解)
以上!!!
当前名称:iossdk开发教程,ios开发 下载
转载来源:http://scyingshan.cn/article/dssgssp.html