Xian Rong

Stay hungry Stay foolish


  • 首页

  • 归档

  • 分类

  • 标签

  • 关于

CFSocket探讨

发表于 2018-07-29 | 分类于 OC

CFSocket的优势

1、是对BSD Socket的封装和抽象,性能好。
2、由CFRunLoop去管理监听CFSocket,易于统一管理,实现资源的合理分配,降低CPU资源损耗。
3、处于CoreFoundation底层,易于向上扩展,可结合CFStream实现SSL安全传输的相关设置。

阅读全文 »

CFNetwork

发表于 2018-07-29 | 分类于 OC

CFNetwork是核心服务框架中的一个框架,提供了抽象概念的网络协议库。这些抽象概念使得执行各种网络任务变得更容易,例如:
1、使用BSD套接字
2、使用SSL或TLS创建加密连接
3、解析DNS主机
4、使用HTTP,验证HTTP和HTTP服务器
5、使用FTP服务器
6、发布、解析和浏览Bonjour 服务

阅读全文 »

SDK包对应用的增量计算

发表于 2018-07-28 | 分类于 OC

1、创建一个空的iOS工程,然后选择最低支持系统的版本。

2、然后在Xcode顶部选择“Generic iOS Device”,即打包针对所有iOS设备。

3、command+B编译一次,然后查看“Product”,选中.app文件“Show in Finder”,将其压缩成zip,查看体积。

阅读全文 »

Bitcode

发表于 2018-07-28 | 分类于 OC

iOS9开始支持bitcode,能够让用户按需安装设备对应的二进制,从而减少善用手机存储空间。

有没有遇到过You must rebuild it with bitcode enabled……的报错,一般情况都是因为某第三方库不支持Bitcode,Xcode默认在创建项目时是支持Bitcode的。

阅读全文 »

自动化打包.framework

发表于 2018-07-26 | 分类于 组件化

Image text

阅读全文 »

组件静态库化

发表于 2018-04-26 | 分类于 组件化

一、基础了解

闭源库可以分为静态库和动态库
静态库 有.a 文件/.framework 文件 (白色的文件)
动态库 有.dylib/.framework 文件 (黑色的文件)

静态库支持的架构:(不同机型的CPU对应不同的架构)
模拟器:4s —— 5 : i386
5s – X : x86_64

真机:3gs – 4s : armv7
5/5c : armv7s(armv7兼容armv7s)
5s–X : arm64

阅读全文 »

组件私有库自动化升级思路

发表于 2018-03-26 | 分类于 组件化

方案一:使用fastlane实现自动化
安装fastlane

1
sudo gem install fastlane --verbose

进入工程路径,初始化fastlane

1
fastlane init

更多了解:
fastlane
docs

我们可以利用fastlane自定义做组件私有库升级的一些步骤实现自动化:

1
2
3
4
5
6
7
8
9
# 1、pod install
# 2、git add .
# 3、git commit -m 'xxx'
# 4、git push origin master
# 5、验证tag是否已存在,如果存在,应该删除本地标签和远程标签
# 6、git tag 标签名称
# 7、git push --tags
# 8、pod spec lint
# 9、pod repo push XXXX AAA.podspec

注意:如果在业务组件中,依赖了自己的私有库的源,有可能因为找不到源而验证失败,这时可以省略掉本地和远程验证,只要最终提交成功也就可以了。

iOS私有库实现方案

发表于 2018-02-07 | 分类于 组件化

iOS项目组件化架构方案中,需要把每个组件以独立工程的形式存储在远程仓库
Image text

阅读全文 »

iOS项目组件化开发

发表于 2018-01-30 | 分类于 组件化

组件化概述

随着项目Swift化、跨平台混合开发、业务越来越复杂等的因素,不管是老项目重构还是新项目开发,都需要引入组件化架构开发思维。
组件化开发方案在业务类型多、开发团队大、多APP多功能有交叉、多语言混编的项目所体现出来的优势尤为明显。
Image text

阅读全文 »

使用Swift构建服务端

发表于 2018-01-26 | 分类于 Swift

使用Swift后端开源框架Perfect,需要最新版本的Swift 4.0

创建Swift软件包

1、创建名为myServer的项目文件夹

1
2
mkdir myServer
cd myServer

2、初始化项目

1
swift package init --type=executable

3、打开Package.swift文件进行编辑(要求Swift编译的最低版本为3.0.0)

1
2
3
4
5
6
7
8
9
10
11
let package = Package(
name: "myServer",
dependencies: [
.package(url: "https://github.com/PerfectlySoft/Perfect-HTTPServer.git", from: "3.0.0")
],
targets: [
.target(
name: "myServer",
dependencies: ["PerfectHTTPServer"]),
]
)

4、编译和运行

1
2
swift build
.build/debug/myServer

设置服务器

1、在main.swift文件编写

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import PerfectHTTP
import PerfectHTTPServer
//注册路由和请求/响应句柄
var routes = Routes()
routes.add(method:.get,uri:"/"){request,response in
response.setHeader(.contentType, value: "text/html")
response.appendBody(string: "<html><title>Hello, world!</title><body>Hello, world!</body></html>")
.completed()
}
do{
// 启动HTTP服务器
try HTTPServer.launch(.server(name:"www.example.ca",port:8181,routes:routes))
}catch{
fatalError("\(error)")
}

2、再次编译运行可看到[INFO] Starting HTTP server www.example.ca on :::8181,此时服务器已启动运行,浏览器访问http://localhost:8181/就可以看到欢迎信息了。
control+c可停止服务器。
3、利用Swift软件包管理器(SPM)为项目生产Xcode工程,方便运行和调试

1
swift package generate-xcodeproj

4、打开工程,在”Library Search Paths“检索项目软件库中增加:

1
$(PROJECT_DIR) - Recursive

5、请选择 “My Mac”,选择”myServer”。现在您就可以在Xcode中运行调试您的服务器了。
Image text

补充

编译debug版本的使用:swift build,可执行文件被放在.build/debug/隐藏目录下;
编译release版本的使用:swift build -c release,可执行文件被放到.build/release/路径下;
清理编译临时文件,删除.build,使用:swift build –clean
清理.build目录和Packages目录,使用:swift build –clean=dist

12…5
XianRong

XianRong

yhtyhrt66@gmail.com

45 日志
6 分类
6 标签
© 2018 XianRong
由 Hexo 强力驱动
主题 - NexT.Pisces