美文网首页
podspec引入图片、宏定义、依赖库

podspec引入图片、宏定义、依赖库

作者: 独孤流 | 来源:发表于2024-02-16 20:11 被阅读0次

    前言

    最近在研究Telegram代码,Telegram的代码是使用Bazel管理的,但是平常的项目都是使用Pod管理,于是将Bazel转换为pod依赖,过程中遇到很多问题,一一记录

    问题一:项目库依赖项目写法

    1.1 本地项目依赖本地项目,使用s.dependency "xxx"的语法

    demo如下:本地项目LibA依赖本地项目LibB

    Pod::Spec.new do |s|
        s.name = 'LibA'
        # ... 其他配置
    
        # 依赖测其他项目的名称
        s.dependency "LibB"
      end
    

    被依赖的项目配置

    Pod::Spec.new do |s|
        s.name = 'LibB'
        # ... 其他配置
      end
    

    Podfile里的配置

    platform :ios, '12.0'
    use_frameworks!
    target 'StudyAsynDisplay' do
      ## Pods for StudyAsynDisplay
      pod 'LibA', :path => 'xxx/xxxx/LibA'
      pod 'LibB', :path => 'xxx/xxxx/LibB'
    end
    
    1.2 本地项目依赖其他远程项目,使用s.dependency "xxx"的语法

    demo如下:本地项目LibC依赖远程项目LibD

    Pod::Spec.new do |s|
        s.name = 'LibC'
        # ... 其他配置
    
        # 依赖测其他项目的名称
        s.dependency "LibD"
    end
    

    Podfile里的配置

    platform :ios, '12.0'
    use_frameworks!
    target 'StudyAsynDisplay' do
      ## Pods for StudyAsynDisplay
      pod 'LibC', :path => 'xxx/xxxx/LibC'
      pod 'LibD'
    end
    

    问题二:pod库引入xxx.bundlexxx.xcassets资源文件

    Pod::Spec.new do |s|
        s.name = 'LibA'
        # ... 其他配置
    
        # 引入资源文件
        s.resource_bundle = {'XXX' => ['XXX/XXX.bundle']}
        # 也可以使用下面这种方式
        # s.resources = ['xxx/**/*.*', "yyyy/**/*.*", "ccc/*.xcassets"]
    end
    

    Multiple commands produce '…/xxx.app/Assets.car’问题
    私有库使用Images.xcassets会出现Assets.car生成多次导致冲突的问题.

    在Podfile第一行添加install! 'cocoapods', :disable_input_output_paths => true

    #### 问题三:pod库引入`xxx.a`,`xxx.framework`静态库
    

    Pod::Spec.new do |s|
    s.name = 'LibA'
    # ... 其他配置
    s.ios.vendored_libraries = 'xxxx/xxxx.a'
    s.static_framework = true
    # s.ios.vendored_frameworks = 'xxx/xxx.framework'
    end

    #### 问题四:pod库引入宏设置
    

    Pod::Spec.new do |s|
    s.name = 'LibA'
    # ... 其他配置
    s.pod_target_xcconfig = {
    'GCC_PREPROCESSOR_DEFINITIONS' => 'MyDefineA=1 MyDefineB=1'
    }
    end

    #### 问题五,当引入了静态库后,会报编译不通过,将`Podfile`里的`use_frameworks!`改为`use_frameworks! :linkage => :static`
    

    platform :ios, '12.0'

    use_frameworks!

    use_frameworks! :linkage => :static
    target 'StudyAsynDisplay' do

    Pods for StudyAsynDisplay

    end

    
    #### 问题六,`pod install`时报
    

    Specs satisfying the xxxx (= x.x), xxxx dependency were found, but they required a higher minimum deployment target.

    将`platform :ios, '12.0'`改高些比如`platform :ios, '13.0'`,改完后`pod install`,然后再改回来成`platform :ios, '12.0'`,之后再`pod install`

    相关文章

      网友评论

          本文标题:podspec引入图片、宏定义、依赖库

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