您的当前位置:首页正文

[整理总结] 让你的项目支持carthage

来源:化拓教育网

前言

这里我们不在赘述网上一搜一大堆的单独项目上传 carthage ,在这篇文章中主要详细讲解下当你的项目依赖了其他三方库时候,如何上传到 carthage 供别人使用,并且同时支持上传到 cocoapods

步骤一

  • 创建项目时,我们最好创建 Cocoa Touch Framework 如图所示
    Cocoa Touch Framework
  • 项目名字最好与你这个框架的名字一致(例如我的测试程序叫做ZLTestPods
  • 然后打开项目 File->New->Target 创建一个 single view app (可以叫做 ZLTestPodsDemo 之类的,这一部其实可以省略)

以下均以我的Demo名字 ZLTestPods 举例

步骤二

因为我们要同时支持 cocoapodscarthage,所以我们的项目所依赖的第三方库需要用 carthage 集成进来。

例如我的测试项目依赖 SDWebImage,我们需要在项目目录下面创建 Cartfile,然后 vi Cartfile 并添加 github "rs/SDWebImage" 并执行 carthage update 或者 carthage update --platform ios

步骤三

打开你的项目,创建一个 WorkspaceFile->New->Workspace,创建的这个文件放到你的项目根目录。

  • 然后关掉你原来的项目,在 ZLTestPods.xcworkspace 中把项目 ZLTestPods.xcodeproj 导入进来 (如果不知道怎么导入请自行搜索)

    import
  • 导入三方框架,步骤同上,只不过文件位置在如图所示位置


步骤四

如图:


Manage Schemes

选中对应 scheme ,勾选 shared

shared

步骤五

加入Travis CI

配置这个文件有几个要注意的坑:

  • Travis默认使用xctool进行编译,但是xcode的版本指定的是8.0以上,xctool已经不支持了。需要指定用xcodebuild编译。
  • /Users/travis/.travis/job_stages: line 156: shell_session_update: command not found这个错误可以忽略,如果编译失败,先排查一下其他问题。
  • 如果用Carthage集成第三方库了,要进行Carthage的相关指定。

我的 .travis.yml 文件如下

language: objective-c
osx_image: xcode9.3
xcode_workspace: ZLTestPods
xcode_scheme: ZLTestPods
xcode_sdk: iphonesimulator11.3
before_install:
  - xcodebuild -showsdks
  - brew update
  - brew outdated carthage || brew upgrade carthage
before_script:
  - carthage bootstrap
before_deploy:
  - carthage build --no-skip-current
  - carthage archive $FRAMEWORK_NAME
script:
    - xcodebuild clean build -sdk iphonesimulator11.3 -workspace ZLTestPods.xcworkspace -scheme ZLTestPods CODE_SIGNING_REQUIRED=NO

步骤六

执行 `carthage build --no-skip-current,如果得到如下结果,便说明carthage编译成功

build

步骤七

打tag,上传 github
执行 git tag 1.0.0,然后 git push --tags

上传后,可以新建个项目测试下,如下所示便是成功了


update

关于支持cocoapods

Pod::Spec.new do |s|
  s.name         = 'ZLTestPods'
  s.version      = '0.1.9'
  s.summary      = 'test dependency'
  s.homepage     = 
  s.license      = 'MIT'
  s.platform     = :ios
  s.author       = {'longitachi' => 
  s.ios.deployment_target = '9.0'
  s.source       = {:git =>  :tag => s.version}
  s.source_files = 'ZLTestPods/TestFolder/**/*.{h,m}'
  s.dependency 'SDWebImage'
  s.requires_arc = true
end

后言

carthage 还是裁了不少坑的,现在又遇到一个新坑,就是 carthage 安装 GPUImage 时候会报错,暂时还没有解决,后续搜到解决办法后会继续分享。