美文网首页iOS开发攻城狮的集散地iOS点点滴滴ios实用技术
iOS组件化干货系列(三)---最全面的podspec(描述文件

iOS组件化干货系列(三)---最全面的podspec(描述文件

作者: 会飞的大马猴 | 来源:发表于2017-11-03 16:00 被阅读171次

前言

这里主要介绍podspec文件的编辑方法,涉及到多种情况,文件资源的引用、.a文件的引用等,下一篇文章我会介绍子组件的写法,那是需要你已经掌握里这里的知识后采取研究的。

一、基本的配置


Pod::Spec.new do |s|
  s.name             = 'Module'   #(1)组件的名称
  s.version          = '1.0.9'    #(2)组件的版本
  s.summary          =  ModuleSummary'  #(3)组件的简述
  s.homepage         = 'http://192.168.0.1/Module'
  s.license          = { :type => 'MIT', :file => 'LICENSE' }    #(4)用户协议
  s.author           = { 'you' => 'your_email' }   #(5)邮箱
  s.source           = { :git => 'http://192.168.0.1/Module.git', :tag => s.version.to_s }    #(6)git的地址



  s.ios.deployment_target = '8.0'   #(7)支持的平台及版本
  s.source_files = 'Module/Classes/**/*'  #(8)代码源文件地址,**/*表示Classes目录及其子目录下所有文件,如果有多个目录下则用逗号分开,如果需要在项目中分组显示,这里也要做相应的设置

#(9)资源文件的路径,图片、音频等
  s.resource_bundles = {
     'BunldeName' => ['Module/Assets/*.png','Module/Assets/*']
   }

 #(10)这个组件依赖的其他组件或者第三方库
    s.dependency 'Masonry'
    s.dependency 'SDWebImage'  
end

  • (1)组件名称:这个就是你组件的名字 没啥说的
  • (2)组件的版本: 这个版本号,当验证podspec 的时候远端一定要有;我们可以根据不同的版本号拉到不同的代码
  • (3)组件的简述 :没啥说的
  • (4)用户协议:没啥说的
  • (5)邮箱:邮箱,没啥说的
  • (6)git的地址: 这个东西很重要,直接影响到当别人用你的组件的时候 拉的是哪个仓库的代码
  • (7)支持的平台及版本:没啥说的
  • (8)代码源文件地址:这个跟(6)一样重要,作用耶差不多,表示别人用你的组件,拉的是你组件里的哪一部分代码
  • (9)资源文件的路径: 当你的组件里涉及到一些UI上的东西,需要引用一些图片的时候,需要把这个设置一下;
  • (10)这个组件依赖的其他组件或者第三方库: 你的组件可能没有那么纯净,会依赖一些别人的组件,那你需要在这里说明,你的组件依赖里哪些东西,比如你写一个弹窗,可能依赖了Masonry,那么 你这里就必须要写s.dependency 'Masonry'

二、当你需要增加一个环境变量

这中情况一般很少见,我一般是在创建子组件的时候才使用。
作用:因为在子组件中,一定会用一些共用的代码,但是有一些小的细节不一样,这个时候我就会用 这个来区分,在build 的时候 放一个环境变量进去

f.pod_target_xcconfig = { 'GCC_PREPROCESSOR_DEFINITIONS' => 'FIRST_MODULE=1'}

s.pod_target_xcconfig = { 'GCC_PREPROCESSOR_DEFINITIONS' => 'SECOND_MODULE=1'}

f 和 s分别代表两个子组件,怎么才能这么写,下一篇文章再介绍
用的时候我们在代码中一般会判断这个变量存不存在,而不是判断它是不是 == 1,判断等于1 是不准确的

#ifdef FIRST_MODULE
      //there is first module do everything you want
#endif

三、pod中引入.a或者.framework

#自己的framework 后面是路径
s.vendored_frameworks = ['Module/Vendors/*.framework']
#系统的framework
s.frameworks = ['UIKit', 'MapKit']
#自己的.a 后面是路径
s.vendored_library = 'Module/Classes/SDK/*.a'
#系统的.a
s.libraries = ['xml2.2','sqlite3.0']


相关文章

网友评论

    本文标题:iOS组件化干货系列(三)---最全面的podspec(描述文件

    本文链接:https://www.haomeiwen.com/subject/zustmxtx.html