【问题标题】:Fastlane crashlytics_path via CarthageFastlane crashlytics_path 通过迦太基
【发布时间】:2018-09-03 08:25:04
【问题描述】:

快速概览: 我有一个私人 cocoapod,它通过 Carthage 添加了 Fabric 和 Crashlytics。

我在构建阶段有一个运行脚本:

/usr/local/bin/carthage copy-frameworks
Input files: $(SRCROOT)/Carthage/Build/iOS/Crashlytics.framework
Output files: $(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/Crashlytics.framework

在我的 podspec 我有:

s.script_phases = [
    {
        :name => 'Fabric Setup',
        :script => '"${PODS_TARGET_SRCROOT}/Carthage/Build/iOS/Fabric.framework/run" {key} {secret}',
        :execution_position => :after_compile
    }
]

到目前为止一切顺利。

在我的应用程序项目中,我使用的是 fastlane。

crashlytics(
    crashlytics_path: "...",
    api_token: "...",
    build_secret: "...",
    groups: "..."
)

我正在尝试为 crashlytics_path 设置什么,以便它指向我的私人 cocoapod carthage 生成的 Crashlytics.framework。

项目文件夹结构:

我的私人吊舱: /Users/{MY_USER}/Repositories/Libs/{PRIVATE_POD_LIB}

私有 Pod 中的 Crashlytics 位置: /Users/{MY_USER}/Repositories/Libs/{PRIVATE_POD_LIB}/Carthage/Build/iOS/Crashlytics.framework

拉入我的私人 pod 的应用程序: /Users/{MY_USER}/Repositories/Apps/{MY_APP}

如果我将 Fastlane 中的 crashlytics_path 编辑为此它可以工作: crashlytics_path: "/Users/{MY_USER}/Repositories/Libs/{PRIVATE_POD_LIB}/Carthage/Build/iOS/Crashlytics.framework",

但显然我不想将完整路径与我的用户一起放入其中,因为它需要在 Jenkins 服务器和其他用户机器上工作。

任何帮助表示赞赏。

谢谢

【问题讨论】:

    标签: ios xcode crashlytics fastlane carthage


    【解决方案1】:

    如果您需要硬编码在多个环境中工作的路径,我建议使用环境变量。

    对于你的本地开发机器环境,你可以在你的fastlane目录(fastlane/.env)中创建一个.env,内容如下:

    CRASHLYTICS_FRAMEWORK_PATH=/Users/{MY_USER}/Repositories/Libs/{PRIVATE_POD_LIB}/Carthage/Build/iOS/Crashlytics.framework
    

    还要确保将此 .env 文件添加到您的 .gitignore 文件中,这样它就不会被提交到您的存储库并且不会在您的 Jenkins 构建中使用。

    然后,您可以在 Jenkins 机器上将 CRASHLYTICS_FRAMEWORK_PATH 环境变量设置为不同的值。

    您还可以在此处找到有关环境变量的更多文档 - https://docs.fastlane.tools/advanced/other/#environment-variables

    【讨论】:

    • 这似乎是一个半途而废的解决方案,谢谢!但这意味着任何检查 repo 的人都需要知道如何创建包含此路径的 .env。有没有办法让运行脚本手动创建这个文件,或者如果它存在,添加它的路径?
    • 因此 .env 可用于:CRASHLYTICS_FRAMEWORK_PATH=/Users/{MY_USER}/Repositories/Libs/{PRIVATE_POD_LIB}/Carthage/Build/iOS/Crashlytics.framework 我试图将另一个构建添加到我的 podspec像这样的阶段脚本:{ :name => 'Crashlytics Fastlane Env', :script => 'echo "CRASHLYTICS_FRAMEWORK_PATH=${PODS_TARGET_SRCROOT}/Carthage/Build/iOS/Crashlytics.framework" > ../fastlane/.env', :execution_position => :after_compile } 在我的 {MY_APP}/fastlane 文件夹中为我创建 .env 文件。
    • 但是它生成的路径是:CRASHLYTICS_FRAMEWORK_PATH=/Users/{MY_USER}/Repositories/Apps/{MY_APP}/Pods/../../../Libs/{PRIVATE_POD_LIB}/Carthage /Build/iOS/Crashlytics.framework 但是fastlane不喜欢,我怀疑是/../../../不喜欢。
    猜你喜欢
    • 2016-01-04
    • 1970-01-01
    • 2019-09-26
    • 2017-07-07
    • 2020-07-07
    • 2018-03-31
    • 2018-04-27
    • 1970-01-01
    • 2019-10-02
    相关资源
    最近更新 更多