让你的项目支持Carthage

作者: 巴依老爷的锅 | 来源:发表于2016-10-14 23:38 被阅读0次

    闲来无事,将自己的一个iOS项目支持Carthage,遇到一些问题记录于此

    • Carthage 只能支持动态库即 Dynamic Frameworks(iOS 8以上)。
      新建一个Xcode工程并选择Cocoa Touch Framework模板。
    新建Framework

    将源文件,资源文件,加入工程,编译,通过。

    • Carthage要求工程的Scheme必须为Shared。
      Xcode -> Product -> Scheme -> Manage Schemes...


      设置Scheme为Shared

    carthage update 时,如遇到错误提示Dependency "xxx" has no shared framework schemes 说明工程的scheme没有被标记为shared,原因可能是git忽略了对应的工程文件。检查gitignore
    确保此文件未被忽略 xxx.xcodeproj/xcshareddata/xcschemes/xxx.xcscheme
    gitignore.io生成的gitignoe(macOS,Xcode,Swift,Carthage)会有

    ### Swift.SwiftPackageManager Stack ###
    Packages
    .build
    xcuserdata
    # *.xcodeproj 这句注释掉
    

    修改一下就好,因为后面还有:

    ### Xcode Patch ###
    *.xcodeproj/*
    !*.xcodeproj/project.pbxproj
    !*.xcodeproj/xcshareddata
    !*.xcworkspace/contents.xcworkspacedata
    /*.gcno
    
    • Carthage 默认通过Tag来获取源码版本进行编译,所以必须将要发布的版本打上Tag,否则会提示No tagged versions found for github xxx。不过也可以指定版本 "master",来获取当前最新代码。

    • 最后要注意 class 的Access Levels:需要从其他模块访问的属性,方法至少需要public

    • carthage几个常用的命令:

      • update 根据文件Cartfile重新构建所有依赖,文件Cartfile.resolved 将重新生成,然后去下载对应的源代码并编译。
      • bootstrap 根据文件 Cartfile.resolved锁定的版本构建依赖,下载对应的源代码并编译。
      • build 不重新下载源代码,在现有版本源代码基础上(可以经过修改)编译 。
    • 几个常用的参数:

      • --platform 只编译指定平台的版本,比如,ios
      • --no-use-binaries 不使用预编译的二进制版本,从源码编译
    • 有时候update不能获取最新的版本,可以试试清除缓存

    rm -rf ~/Library/Caches/org.carthage.CarthageKit
    

    相关文章

      网友评论

        本文标题:让你的项目支持Carthage

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