美文网首页ios
验证podspec文件踩过的坑

验证podspec文件踩过的坑

作者: 盖小聂 | 来源:发表于2018-10-08 10:27 被阅读94次

    1、验证.podspec会先测试本地.podspec文件是否存在语法错误。测试成功再根据.podspec文件找到远端仓库对应的版本clone到本地并进行配置。最后测试文件是否能够编译成功。

    2、再次验证
    如果错误发生在.podspec中。当修改完时,不需要再次提交就可以直接验证。如果错误发生在代码中,则需要再次提交才能验证。

    3、pod spec相对于pod lib 会更为精确,pod lib相当于只验证一个本地仓库,pod spec会同时验证本地仓库和远程仓库。

    4、—sources变量的使用
    当你的.podspec文件依赖其他私有库时要引入source
    pod spec lint React.podspec —allow-warnings —sources=lcoal_spec_name,master
    lint通过之后push的时候依然需要—sources
    pod push local_spec_name React.podspec —allow-warning —source=local_spec_name,master

    5、pod lib lint PodName.podspec的实现细节探究:
    a. podspec文件可以独立存在,不需要上传到远端,文件中的s.version跟s.source中的git仓库必须有同名的branch或者tag。这样在执行lint的时候才能下载到对应的源代码进行编译校验。(podspec文件往往会跟项目代码放到同级目录下并且保存到git仓库,但是不是必须。尤其是在调试lint的时候,不需要调试一次push一次)。
    b. 在调用lint方法的时候,读取的是本地的podspec文件,但是拉取的代码,是podspec文件中的s.source描述的远端git仓库代码.所以podspec文件传不传到git仓库本身没有关系,因为读取的是本地的.

    6、podspec文件解析
    a. podspec是一个ruby文件
    b. homepage:只支持HTTP和HTTPS地址,不支持SSH地址
    c. source_files:表示源文件的路径,这个路径是相对podspec文件而言的
    d. 源代码库,不仅仅可以指定tag,还可以指定branch。
    注意:如果branch上的代码有了变动,使用方直接pod install或者pod update是不行的。因为pod对branch或者tag的代码在本地有缓存,需要clean缓存之后再pod install或pod update
    pod cache clean PodName

    相关文章

      网友评论

      • 別来无恙:请问你有没有遇到过 pod lib lint 效验通过,pod spec lint 报这个错 ERROR | [iOS] file patterns: The `source_files` pattern did not match any file.) .线上和本地的目录结构是一样的

      本文标题:验证podspec文件踩过的坑

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