美文网首页iOS Development
创建私有Private Pods 笔记

创建私有Private Pods 笔记

作者: Larry萝卜 | 来源:发表于2018-02-28 23:08 被阅读12次

    创建私有Private Pods 笔记

    1. 创建私有 spec repo:
      pod add repo ‘MySpecs’ ‘specs repo url’

    2. 创建私有库,并创建 pod 同名 .spec 文件
      执行 pod lib lint 本地验证,pod spec lint 远程验证

    3. 添加私有库到私有 specs
      pod repo push MySpecs 私有库.podspec
      Eg: pod repo push Specs BTCacheKit.podspec

    4. 私有库依赖私有库
      在 podfile 顶部添加 source
      source ‘MySpecs url link’
      source 'https://github.com/CocoaPods/Specs.git'
      之后 podfile 以及 s.dependency 中都是正常引用就可以

    5. 校验当前私有库;本地校验执行的 pod lib lint 需要添加sources 如:pod lib lint —sources=‘MySpecs url link’如果,sources 是多个,中间用逗号隔开即可;出现警告:--allow-warnings 进行排除;(pod lib lint --sources="私有库链接,https://github.com/CocoaPods/Specs.git")

    6. 远程校验 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

    相关文章

      网友评论

        本文标题:创建私有Private Pods 笔记

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