私有库问题总结

2020-08-10  本文已影响0人  老急急

问题一 : 关于第三方库支持 的cpu的框架

or/App.build/Objects-normal/i386/Binary/App
    Undefined symbols for architecture i386:
      "_OBJC_CLASS_$_HMDBUToBCrashTracker", referenced from:
          objc-class-ref in BUAdSDK(BUByteFinder.o)
      "_OBJC_CLASS_$_HMDBUToBCrashTrackerRestrict", referenced from:
          objc-class-ref in BUAdSDK(BUByteFinder.o)
      "_OBJC_CLASS_$_HMDBUToBAddressRange", referenced from:
          objc-class-ref in BUAdSDK(BUByteFinder.o)
    ld: symbol(s) not found for architecture i386
    clang: error: linker command failed with exit code 1 (use -v to see invocation)

cup的框架 : arm64 x86_64 armv7 armv7s i386
解决方案
s.xcconfig = { 'VALID_ARCHS' => 'arm64 x86_64 armv7 armv7s', }

问题二 第三方含有 静态库(.a) 和 动态库(.framework)

解决方案
///添加
s.static_framework = true

问题三 自己引进 静态库(.a) 和 动态库(.framework)

解决方案
 s.vendored_libraries  = 'UC_IM/Classes/Lib/*.{a}' /// 该目录下 .a
 s.vendored_framework  = 'UC_IM/Classes/Framework/***.framework'  ///Framework目录下的***.framework动态库
验证静态库和动态库时需要的命令

--allow-warnings --skip-import-validation --use-libraries --verbose

如果依赖自己的私有库 需要的命令是

--sources='http://git.hnbangyao.com/TT/ttspecs.git,https://github.com/CocoaPods/Specs.git'

问题四 私有库使用子模块

如果你想引用一个私有库里面的一小部分功能,但是又不想把整个库导入,那么私有库的子模块 ,外部单独依赖这个子模块
  子模块的定义,也还是在.podspec文件中
  #子模块 —— 头文件
  s.subspec 'Header' do |ss|
      ss.source_files = 'UC_IM/Classes/Header/*.{h,m}'
  end
  使用子模块时只需在podfile中添加  pod 'UC_IM/header' 

问题五 使用私有的技巧

使用私有库的分支和本地库

主工程podfile
pod 'Ucoupon',:git => 'http://git.hnbangyao.com/ios', :branch => 'dev' #直接使用远程库的branchName最新提交,而不是通过XXXRepo索引库中的tag标签
使用本地的仓库
 pod 'Ucoupon',:path => '/Users/MacBook/Project/UC_IM' #直接使用本地库, '/Users/MacBook/Project/UC_IM' 是私有库在本地的目录,这种更方便于开发。

问题六 直接使用头文件 像PCH文件一样、

   s.prefix_header_contents = '#import <Masonry/Masonry.h>','#import "header.h"'

问题七 公共库需要多人操作

//添加管理者
 pod trunk add-owner xxx_Mediator xxxxxxxxxxx@qq.com
//删除管理者
pod trunk remove-owner xxx_Mediator xxxxxxxxxxx@qq.com

问题八 关于c文件 和c++文件

引入c文件会遇到引用 或者 Unknown type name ‘NSString’等问题

解决方案一:

修改文件的引用类型


WeChatd959af0a856d6c4c280d776bf6061bf3.png
解决方案二:

把.c文件修改成.m文件!

WeChatb7848dfb08d05c74185e49f7d1e1278d.png

问题九 私有库含有swift文件

验证私有库不能使用 --use-libraries  
不能使用静态库的验证
上一篇下一篇

猜你喜欢

热点阅读