转载

Pod私有库制作podspec

Pod私有库制作podspec, umbrella, pod spec lint –sources, pod repo push, resource_bundles, pod_target_xcconfig, vendored_frameworks, vendored_libraries

Cocoapods安装

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

podspec制作

以下所以本地路径,均为相对路径,和 podspec 文件在同一级目录。

VenderFramework

三方库可统一配置:

  s.subspec 'VenderFramework' do |ss|
      ss.pod_target_xcconfig = {
          'HEADER_SEARCH_PATHS' => '$(PODS_ROOT)/Framework/*.framework/Headers',
          'OTHER_LDFLAGS' => '-ObjC' }
      ss.vendored_frameworks =  'Framework/**/*.framework'
      ss.vendored_libraries = 'Framework/**/*.a'
 
      ss.subspec 'Wechat' do |sss|
          sss.source_files = 'Framework/Wechat/*.h'
          sss.public_header_files = 'Framework/Wechat/*.h'
      end      
  end
 

预编译头文件

如果在引用OC的库时,报找不到umbrella的问题,可通过以下解决:

  s.prepare_command = <<-EOF
  rm -rf Framework/Tencent/TencentOpenAPI.framework/Modules
  mkdir Framework/Tencent/TencentOpenAPI.framework/Modules
  touch Framework/Tencent/TencentOpenAPI.framework/Modules/module.modulemap
  cat <<-EOF > Framework/Tencent/TencentOpenAPI.framework/Modules/module.modulemap
  framework module TencentOpenAPI {
      umbrella header "Tencent.h"
      export *
      module * { export * }
  }
  /EOF
  EOF
 

resource

引用bundle资源时,做如下:

  s.resource_bundles = {
     'PPXXX' => ['PPXXX/Assets/**/*.png']
  }
 

引用系统库

引用系统的framework,library时,如下:

  s.frameworks   =  'CoreLocation', 'QuartzCore', 'OpenGLES', 'SystemConfiguration', 'CoreGraphics', 'Security', 'CoreTelephony'
  s.libraries    = 'sqlite3.0', 'stdc++', 'z', 'iconv'
 

限定swift版本

限定swift版本,需加上: s.swift_version = '3.0'

pod安装路径

在引用pod本地库时,需要修改Podfile文件,需要这种样式去添加:

  pod 'PPModules', :path => '../'
 

引用私有远程库时,需要改成这样:

– 添加源

source 'https://github.com/CocoaPods/Specs.git'
source 'http://xxx.com/xxSpecs.git'
 
  • 远程名称
pod 'PPXXX'
 

公共库修改

拉取分支上传,统一合并打 tag ,做 repo push

私有库打包流程

tag

git 仓库中打 tag ,代码提交完毕后,下一个版本要发布的为1.0.0,如下:

– 创建一个tag

git tag 1.0.0
 
  • 把所有tag推到远程:
git push --tags
 
 
  • 删除tag
git tag -d 1.0.0
 

然后,从远程删除。删除命令也是push,但是格式如下:

git push origin :1.0.0
 

spec lint

提交代码时,记得把podspec文件中的版本号加1。

如果自己创建的私有库,做打包时,需要先做验证:

pod spec lint --sources='http://xxx.com/xxSpecs.git,https://github.com/CocoaPods/Specs.git' --allow-warnings
 

由于引用的一个三方库中有warning,所以这里要忽略warning。

repo push

做完lint验证后,需要推送到远程:

pod repo xxSpecs xxx.spec --allow-warnings
 

其中 xxSpecs 为私有库在你本地仓库中的名称,可通过 pod repo list 查看。

原文  https://devthinking.com/pod私有库制作podspec/
正文到此结束
Loading...