当前位置: 首页>后端>正文

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

前言

最近在研究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`

https://www.xamrdz.com/backend/3k81940098.html

相关文章: