iOS创立与运用SDK (framework)

开发准备

xcode: 版别14.2 (14C18)

创立SDK

New Project

iOS创建与使用SDK (framework)

挑选iOS -> framework

iOS创建与使用SDK (framework)

项目名称暂时就叫SDK

iOS创建与使用SDK (framework)

挑选保存途径

iOS创建与使用SDK (framework)

创立成功

iOS创建与使用SDK (framework)

新建文件

iOS创建与使用SDK (framework)

挑选Swift文件, 然后Next

iOS创建与使用SDK (framework)

输入文件名index.swift

iOS创建与使用SDK (framework)

文件创立成功

iOS创建与使用SDK (framework)

在index.swift编写一个sayHello方法, 需要用public

import Foundation
public func sayHello(_ name: String) {
    print("Hello", name)
}

iOS创建与使用SDK (framework)

build项目

command + b 或许点击build按钮
build成功后就会生成SDK

iOS创建与使用SDK (framework)

查看build后生成的SDK

iOS创建与使用SDK (framework)

iOS创建与使用SDK (framework)

SDK.framework目录便是我们需要的SDK, 等会运用SDK的时分会用到这个文件夹

能够看到SDK.framework的前面一个目录是Debug-iphonesimulator, 这阐明SDK只能用于模拟器, 不能用于真机, 先暂时不论这些, 跑通整个流程了后面再讲怎样兼并真机与模拟器SDK

到此SDK创立成功, 接下来运用SDK

运用SDK

创立一个iOS App项目来运用SDK

持续New Project

iOS创建与使用SDK (framework)

挑选iOS -> App

iOS创建与使用SDK (framework)

项目名称就叫App

iOS创建与使用SDK (framework)

挑选保存途径

iOS创建与使用SDK (framework)

App创立成功

iOS创建与使用SDK (framework)

点击build, 就会启动iPhone 14 Pro模拟器

iOS创建与使用SDK (framework)

在App中导入SDK

找到SDK build后生成的SDK.framework文件夹

按住SDK.framework文件夹, 拖拽到xcode的App项目里边的App文件夹, 如下图位置, 然后松开

iOS创建与使用SDK (framework)

会弹出一个框, 勾选Copy items if needed, 然后点击Finish

iOS创建与使用SDK (framework)

然后能够看到目录里边多了一个SDK.framework

iOS创建与使用SDK (framework)

在App配置里边也能够看到成功引入了SDK

iOS创建与使用SDK (framework)

将Embed由Do Not Embed改为Embed & Sign

iOS创建与使用SDK (framework)

再次点击build, 提示Build Succeeded, 一切正常

调用SDK的方法

先导入SDK, 然后直接调用即可, 控制台成功输出Hello

iOS创建与使用SDK (framework)

代码:

import SwiftUI
import SDK
struct ContentView: View {
    let msg: () = sayHello("ZP")
    var body: some View {
        VStack {
            Image(systemName: "globe")
                .imageScale(.large)
                .foregroundColor(.accentColor)
            Text("Hello, world!")
        }
        .padding()
    }
}
struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

整个创立与运用SDK的流程结束了
但是还有一个问题, 在开发SDK的时分每次改动SDK的代码, 就要从头build一次并且在App中从头导入一次, 很麻烦, 所以在开发中能够直接导入SDK源码, 这样的话修正SDK代码后, build App的时分会主动把SDK build一次并且运用最新的SDK代码

将SDK源码添加到App, 方便开发

先删除现在现已导入的SDK

iOS创建与使用SDK (framework)

选第一个

iOS创建与使用SDK (framework)

从头build, 报错阐明删除成功

iOS创建与使用SDK (framework)

在finder中找到SDK项目

iOS创建与使用SDK (framework)

然后在xcode中关闭SDK项目, 必定要在xcode中关闭SDK项目才能做下一步操作!

在finder中选中SDK.xcodeproj

iOS创建与使用SDK (framework)

将SDK.xcodeproj拖进App项目

iOS创建与使用SDK (framework)

在App项目中双击SDK.xcodeproj, 如果能看到这个界面就阐明成功了

iOS创建与使用SDK (framework)

但还差一步, 按如下操作把SDK参加App中

iOS创建与使用SDK (framework)

挑选SDK.framework, 点击Add

iOS创建与使用SDK (framework)

成功

iOS创建与使用SDK (framework)

从头build, 没有报错

iOS创建与使用SDK (framework)

修正SDK代码

iOS创建与使用SDK (framework)

在App中运用

iOS创建与使用SDK (framework)

从头build就能够看到效果了, 屏幕中多了”你好”两个字, 这两个字来自SDK函数的返回值

iOS创建与使用SDK (framework)

代码:

index.swift

import Foundation
public func sayHello(_ name: String) {
    print("Hello", name)
}
public class MySDK {
    public init () {}
    public func getMessage() -> String {
        return "你好"
    }
}

ContentView.swift

import SwiftUI
import SDK
let sdk = MySDK()
struct ContentView: View {
    let msg: () = sayHello("ZP")
    var body: some View {
        VStack {
            Image(systemName: "globe")
                .imageScale(.large)
                .foregroundColor(.accentColor)
            Text("Hello, world!")
            Text(sdk.getMessage())
        }
        .padding()
    }
}
struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

将SDK由debug改为release

打开SDK build后的目录, 现在是debug形式

iOS创建与使用SDK (framework)

将其改为release, 操作如下:

iOS创建与使用SDK (framework)

iOS创建与使用SDK (framework)

改为release, 然后关闭就行

iOS创建与使用SDK (framework)

从头build一次, 现在便是release了

iOS创建与使用SDK (framework)

兼并真机与模拟器SDK

网上许多教程都是用的lipo -create兼并的, 例如

lipo -create "Release-iphonesimulator/SDK.framework/SDK" "Release-iphoneos/SDK.framework/SDK" -output "common/SDK.framework/SDK"

但如果模拟器的架构和真机的架构相同, 用这条指令兼并就会报错, 更推荐运用xcframework兼并

xcframework: Xcode 11.0及以上版别支撑

用法

xcodebuild -create-xcframework -framework <path> [-framework <path>...] -output <path>

分别生成模拟器和真机SDK

首要进入到SDK项目根目录(SDK.xcodeproj同级的目录)

生成模拟器SDK, 履行

xcodebuild -scheme SDK -sdk iphonesimulator clean build

iOS创建与使用SDK (framework)

生成真机SDK, 履行

xcodebuild -scheme SDK -sdk iphoneos

iOS创建与使用SDK (framework)

现在模拟器和真机SDK都有了, 指令行进入到Products目录, 开端兼并

iOS创建与使用SDK (framework)

履行:

xcodebuild -create-xcframework -framework ./Release-iphonesimulator/SDK.framework -framework ./Release-iphoneos/SDK.framework -output ./SDK.xcframework

就会在Products目录里边生成SDK.xcframework, 这个便是模拟器和真机都能够运用的SDK

iOS创建与使用SDK (framework)

运用方法也很简单, 和运用framework一样, 将SDK.xcframework文件夹拖进App项目即可.