#工程创立 1、首要创立一个文件夹,例如TestDemo

iOS使用workspace开发framework 结合 Cocoapod管理

2、运用xcode创立workspace并放入TestDemo文件夹内,如图 挑选File → new→Workspace →编辑 → 点击save

iOS使用workspace开发framework 结合 Cocoapod管理

3、在TestDemo文件夹中分别创立TestDemo App和 ShowText Framework, 如图

iOS使用workspace开发framework 结合 Cocoapod管理

4、打开workspace,分别增加app和framework,可以拖动.xcodeproj,也可以点击加号或许右键Add Files to “TestDemo“,增加后如图

iOS使用workspace开发framework 结合 Cocoapod管理

5、新建Podfile文件,变编写


platform :ios, '13.0'
workspace 'TestDemo.xcworkspace'              #指定workspace
inhibit_all_warnings!        #疏忽正告
use_frameworks!
def commpod #宏定义几个target都要用的的pod
  pod 'SVProgressHUD'
end
target 'TestDemo' do
  project 'TestDemo'
  commpod
  pod 'Alamofire'
end
target 'ShowText' do
  project 'ShowText/ShowText.xcodeproj'
  commpod
  pod 'Alamofire'
end

6、pod install,完成后和第四步的图相同

7、将framework增加到主工程

iOS使用workspace开发framework 结合 Cocoapod管理

#framework设置

1、设置Build Active Architecture Only 值 为NO

iOS使用workspace开发framework 结合 Cocoapod管理
2、查找Mach,设置为Dynamic Library

iOS使用workspace开发framework 结合 Cocoapod管理

3、查找Dead Code Stripping 设置为NO

iOS使用workspace开发framework 结合 Cocoapod管理
4、去除模拟器中arm64 查找Excluded Architectures 下Any ios Simulator SDK 值为 arm64。模拟器生成的.framework 不需求arm64

iOS使用workspace开发framework 结合 Cocoapod管理

5、Build Libraries for Distribution 设置为Yes (如果是swift言语的时分需求)

iOS使用workspace开发framework 结合 Cocoapod管理

至此应该就完成了大部分内容了

#遇到的问题

1、pod 失利报错,我用的是xcode 14.2,报错

force_encoding': can't modify frozen String (FrozenError)

解决如图

iOS使用workspace开发framework 结合 Cocoapod管理

2、新建的动态库中运用asset办理图片,读取的方法有所改变

public class ImageProvider {
  // convenient for specific image
  public static func picture() -> UIImage {
    return UIImage(named: "test", in: Bundle(for: self), with: **nil**) ?? UIImage()
  }
  // for any image located in bundle where this class has built
  public static func image(named: String) -> UIImage? {
    return UIImage(named: named, in: Bundle(for: self), with: nil)
  }
}

3、国际化,和普通差不多,只是在framework需求留意应该运用有bundle参数,和图片读取相同 留意主app也需求做国际化才会有作用哦

public class LocalizedProvider {
  public static func localizedString(key: String) -> String {
    return NSLocalizedString(key,
                bundle: Bundle(for: self), comment: "")
  }
}

打包好的framework直接增加到主工程运用就行,如果有pod依靠库,只需求在主工程pod相应的库就可以了

#参考文章

iOS开发 运用Pods办理调试个人Framework

iOS运用workspace开发framework以及集成cocoapod方法