创建私有Private Pods 笔记
-
创建私有 spec repo:
pod add repo ‘MySpecs’ ‘specs repo url’ -
创建私有库,并创建 pod 同名 .spec 文件
执行 pod lib lint 本地验证,pod spec lint 远程验证 -
添加私有库到私有 specs
pod repo push MySpecs 私有库.podspec
Eg: pod repo push Specs BTCacheKit.podspec -
私有库依赖私有库
在 podfile 顶部添加 source
source ‘MySpecs url link’
source 'https://github.com/CocoaPods/Specs.git'
之后 podfile 以及 s.dependency 中都是正常引用就可以 -
校验当前私有库;本地校验执行的 pod lib lint 需要添加sources 如:pod lib lint —sources=‘MySpecs url link’如果,sources 是多个,中间用逗号隔开即可;出现警告:--allow-warnings 进行排除;(pod lib lint --sources="私有库链接,https://github.com/CocoaPods/Specs.git")
-
远程校验 pod spec lint --allow-warnings
出现警告
[!] The repo
Specs
at../../../../../.cocoapods/repos/Specs
is not clean
cd ../../../../../.cocoapods/repos/Specs
git clean -f
问题:
pod repo中明明存在的podspec 却search 不到
指定--sources: pod lib lint --sources="自己私有的pod,https://github.com/CocoaPods/Specs.git"
私有库中添加图片/音频资源
第一种
spec.resources = ["Images/.png", "Sounds/"]
但是这些资源会在打包的时候直接拷贝的app的Bundle中,这样说不定会和其它资源产生命名冲突
第二种
spec.resource = "Resources/MYLibrary.bundle"
把资源都放在bundle中,然后打包时候这个bundle会直接拷贝进app的mainBundle中。使用的时候在mainBundle中查找这个bundle然后再搜索具体资源
NSURL *bundleURL = [[NSBundle mainBundle] URLForResource:@"JZShare" withExtension:@"bundle"]; NSBundle *bundle = [NSBundle bundleWithURL:bundleURL]; UIImage *img = [UIImage imageNamed:icon inBundle:bundle compatibleWithTraitCollection:nil];
第三种
spec.resource_bundles = {
'MyLibrary' => ['Resources/.png'],
'OtherResources' => ['OtherResources/.png']
}
这种方法利用 framework 的命名空间,有效防止了资源冲突。
使用方法是先拿到最外面的 bundle,然后再去找下面指定名字 的 bundle 对象,再搜索具体资源
NSBundle *bundle = [NSBundle bundleForClass:[MYSomeClass class]]; NSURL *bundleURL = [bundle URLForResource:@"MyLibrary" withExtension:@"bundle"]; NSBundle *resourceBundle = [NSBundle bundleWithURL: bundleURL]; UIImage *img = [UIImage imageNamed:icon inBundle:bundle compatibleWithTraitCollection:nil];
问题:include of non-modular header inside framework module”
spec.user_target_xcconfig = { 'CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES' => 'YES' }
拉取远程的分支:
git remote add origin xxxxx
出现冲突的话
git pull origin master --allow-unrelated-histories
官方文档
https://guides.cocoapods.org/making/private-cocoapods.html
https://guides.cocoapods.org/syntax/podspec.html
网友评论