CocoaPods Plugins - cocoapods-packager

优质
小牛编辑
127浏览
2023-12-01

CocoaPods Plugins - cocoapods-packager

  • 作为CocoaPods Plugins, 默认是不包含的, 需要单独安装

      sudo gem install -n /usr/local/bin cocoapods-packager
    

    等待安装完成

      Password:
      Successfully installed cocoapods-packager-1.5.0
      Parsing documentation for cocoapods-packager-1.5.0
      Done installing documentation for cocoapods-packager after 0 seconds
      1 gem installed
    
  • 生成类库

      pod package YourPodName.podspec --force --library
    
  • 参数说明

    | 参数 | 说明 |:-------------|:-----------------------------------------| |--force |强制覆盖之前生成的文件 | |--no-mangle |不使用name-mangling技术,也就是自动改类名等符号 | |--embedded |生成静态的framework | |--library |生成静态.a | |--dynamic |生成动态framework | |--local |使用本地文件 | |--bundle-identifier |生成动态framework的时候需要这个BundleId来签名 | |--exclude-deps |不包含依赖的符号表,也就是不把依赖的第三方库打包进去 | |--configuration=Release |生成debug还是release的库,默认是release | |--subspecs=subspec1,subspec2 |如果你的pod库有subspec,那么加上这个命名表示只给某个或几个subspec生成二进制库| |--spec-sources=private,https://github.com/CocoaPods/Specs.git |默认是CocoaPods的Specs仓库,如果你的项目有私有的source,就可以通过这个参数来设置|

    补充说明

    - `Name-Mangling`会把类名和全局常量改成`Pod#{pod_name}_#{symbol}`的形式,比如说我们的`pod`库`YourPodName`中有一个`YourClass`类,那它最终会被改成`PodYourPodName_YourClass`  
    - `Name-Mangling`并不会改方法名  
    - `Name-Mangling`无法对静态库生效  
    - `--exclude-deps`参数,它也只会去除我们引入的第三方开源库,静态库还是会被打包进去。那如果接入方也引入了这个第三方静态库,还是会冲突