重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
需要注意的要点:
10年积累的成都做网站、成都网站制作、成都外贸网站建设经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站制作后付款的网站建设流程,更有巴南免费网站建设让你可以放心的选择与我们合作。
苹果如果自带了api,尽量使用,第三方肯定没有苹果自己实现的好。
注意的是,最好不要让使用的人能看到你的源代码。
开放的接口要灵活,想清楚各种使用的情景。
SDK里调用第三方框架,要考虑冲突问题。
另外其他注意事项:
1.类名、宏定义、枚举、通知、类别等命名时加静态库统一特殊前缀,以避免命名冲突。
2.类别中方法名也需要加特殊前缀,以避免方法覆盖导致不必要麻烦。
3.对于项目中的c、c++中的方法,需要加前缀。
4.对于开发静态库时引入的开源库,若体量过大,可外部引用,提供给接入方时加以说明,体量小的可以对类名及类中所用枚举、通知等加前缀使用。
5.特别需要注意的是在同一个类中多个interface的情况,加前缀时一定要检查所有的interface,避免遗漏。
6.由于一些接入方引入静态库时,对app的体积有严格的控制,所以在开发静态库时,要尽量精简代码,引入开源库时,可剔除一些不必要的部分,如能用系统提供的方法实现的功能,尽量不去引入大型第三方库。
因为公司的组件化开发的深入,虽然自己只是使用不需要去处理组件(组件模块是另外的小伙伴+大佬架构师负责的),还是需要自己造轮子。就屡屡了...花了点时间整理了下简单的,这些都是为组件做基础,后续会持续更新并实现组件。
废话就不多说了,关于SDK可以自行百度这边就不扯了,开始下面的正文。
静态库: .a 和 .framework
动态库: .dylib 和 .framework
选择 Cocoa Touch Static Library :
Build Active Architecture Only 设置为YES,表示只编译当前的 Architecture 版本,为了适配各种机型需要关闭当前的设置。
可以在编译完成后查看生成的静态库支持的系统架构,终端命令:
结果如下:
一般第三方只提供 release 的版本。
这边就不多讲了,国际化语言跟平时设置是一样的,具体的就附上个通道吧 iOS之SDK开发的总结 ,查看上面介绍的第四点即可。
真机、模拟器各需要运行一次生成对应的静态库,根据 第4点 切换环境编译生成对应的静态库,编译快捷键 cmd + B 。
如何查看编译是否成功,查看工程目录如下图红色框里面的名字,如果是红色的则未编译,下图是已经编译后的颜色:
编译完成后可以点击上面红色框 Show In Finder 进入该文件目录。
终端命令
注 :格式如上,上面的空格不是为了美观,而是格式
举个例子:
静态库制作完成,将静态库拖入工程中,记得导入相应需要暴露的头文件。因为静态库没有提供相应的头文件,只是单纯的一个.a文件。
使用 framework 制作静态库的方法就放到 动态库 中一起说明,具体的可以查看 动态库--2、配置Mach
在制作动态库上跟制作静态库的流程是大同小异,主要介绍不同的。
新建工程,选择如下:
Mach-O Type 默认为动态库,如果需要制作静态库的话在这边修改 framework 类型即可。
配置完成后, cmd + B 分别编译生成模拟器、真机 Framework 。
终端命令与制作.a静态库是一样的,不同的是选择的文件,需要用来合并的文件如下:
终端命令如下:
别忘了该空格的地方带上空格。
举个例子:
输出的文件是 result.lipo ,它的格式是 .lipo ,将该文件修改成合并文件时的文件名并放入其中一个 framework 中替换,通用的 Framework 制作好了。
图中红色框的文件是替换合并后的文件。
将库导入需要使用的工程中即可。
在工程中新建bundle,iOS-Resource-Setting Bundle 命名bundle,比如Resource.bundle。
创建一个文件夹如:images,将需要放入的图片拖进去即可,拖进去后Xcode还是未显示出加入的图片,可以将bundle取出然后重新添加进去就有了。
项目中导入使用的时候需要配置的编译参数 Build Settings - Linking - Other Linker Flags ,相关的介绍附上。
如果静态库中有 category ,那么需要添加 -ObjC 参数标识,否则可能会报: unrecognized selector sent to instance ,因为链接器就会把静态库中所有的Objective-C类和分类都加载到最后的可执行文件中。
会让链接器把所有找到的目标文件都加载到可执行文件中,但是千万不要随便使用这个参数!假如你使用了不止一个静态库文件,然后又使用了这个参数,那么你很有可能会遇到 ld: duplicate symbol 错误,因为不同的库文件里面可能会有相同的目标文件,所以建议在遇到 -ObjC 失效的情况下使用 -force_load 参数。
所做的事情跟 -all_load 其实是一样的,但是 -force_load 需要指定要进行全部加载的库文件的路径,这样的话,你就只是完全加载了一个库文件,不影响其余库文件的按需加载
iOS-SDK从无到有(学有所出,有所记)
配置和使用静态库
iOS之SDK开发的总结
iOS 库.a 和 framework的区别和创建
SDK 是软件开发工具包(外语首字母缩写:SDK、外语全称:Software Development Kit)一般都是一些软件工程师为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件时的开发工具的集合。
iOS SDK 一般是指适用于iOS系统开发的SDK。
iOS系统一般应用于 iPhone、iPad、iPod。
iPhone SDK 这个一般理解成 iOS SDK的。
具体来说,可以举个有使用SDK的例子
一、基于Android系统的例子
1、准备工作:
使用Eclipse新建一个Android项目,根据要求提示填写相关信息,然后构建APP框架
2、这里使用的是一个比分SDK,要了解所用的SDK,可获取整个示例工程以及对应的APK安装包进行运行。运行工程可以通过以下两种方式进行运行:
a. 直接安装比分SDK Demo.apk至手机进行运行
b. 在Eclipse中导入并运行比分SDKDemo工程
3、提供应用程序包名和签名,到留言申请应用程序的APP_KEY,得到开放接口。完成后在应用中添加SDK所需要的权限,打开AndroidManifest.xml文件,将SDK需要的权限添加到该文件中即可:
uses-permission android:name="android.permission.INTERNET" /
uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /
uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /
uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /
4、用一个简单的APP框架,内嵌进去一个现成的比分SDK,就可以达成以下效果:
二、基于IOS系统的例子
1、准备工作:
同上,还是要先创建一个IOS项目,这回使用的是xcode,详细图文可以继续问度娘。
2、引入SMSDK.framework
将所需的SMSDK.framework拷贝到工程所在文件夹下。
在 TARGETS-Build Phases- Link Binary With Libaries中点击“+”按钮,在弹出的窗口中点击“Add Other”按钮,选择SMSDK.framework文件添加到工程中。
2、引入所需的第三方库(7M SDK需要在XCode工程引入以下的第三方类库以确保项目能够正确运行)
通过CocoaPods安装,将以下语句添加进工程的Podfile,然后打开终端在工程目录执行pod install命令,运行[工程名称].xcworkspace,开始工作!
pod 'Reachability'
pod 'Masonry'
pod 'ReactiveCocoa'
pod 'AFNetworking'
pod 'CocoaLumberjack'
pod 'Nimbus/Core', '1.0.0'
pod 'Nimbus/AttributedLabel', '1.0.0'
3、引入资源bundle
需要在Xcode工程中引入SMSDK.bundle,确保SMSDK图片能正常显示
4、环境配置
在TARGETS-Build Settings-Other Linker Flags 中添加-ObjC。
效果如图:
第一次这么认真地回答一个问题,恰好用到了这个SDK,如有做体育项目的朋友也有需要,可自行搜索sportsdt,其他就不多说了。