【问题标题】:Crashlytics Fabric multiple targetsCrashlytics Fabric 多个目标
【发布时间】:2017-04-19 14:34:50
【问题描述】:

我有一个包含多个目标的应用程序,其中一些目标具有不同的捆绑 ID。我过去曾设法将 Fabric,特别是 Crashlytics 添加到具有相同捆绑 ID 的应用程序中,但我不确定如何处理具有不同捆绑 ID 的多个目标。

我可能遗漏的任何指示或文档?

【问题讨论】:

    标签: crashlytics google-fabric


    【解决方案1】:

    您可以通过在BUILD PHASES中添加多个RUN SCRIPT,为单个应用中的多个目标创建Crashlytics。 Fabric 将根据 UNIQUE RUN SCRIPT

    进行识别

    我正在单个项目中处理 6 个目标,根据目标明智地处理 Fabric 中的所有崩溃。

    目标-->构建阶段-->添加运行脚本

    【讨论】:

    • 是否需要在所有目标的构建阶段添加相同的运行脚本?
    • @iRiziya,您是否使用相同的运行脚本和相同的 api 密钥?
    • @Malder 是的,所有人
    【解决方案2】:

    来自 Fabric 的documentation

    要使用多个目标运行 Crashlytics,请将 Crashlytics 运行脚本添加到每个目标的构建阶段。

    在我的项目中,这对我来说效果很好,我为主应用程序目标以及它们自己的目标中的几个扩展配置了 Fabric。它们最终也会在 Fabric 网络仪表板中显示为独特的“事物”,这很好。

    【讨论】:

    • 感谢您抽出宝贵时间。我所有的目标都有一个运行脚本的构建阶段。 b>com.myapp 而不是额外的目标 com.myapp.dev 当归档 com.myapp 并尝试分发它时,一切都按预期工作。当归档 com.myapp.dev 并尝试分发它时,我收到一个错误无法保存发行说明,项目 com.myapp.dev 处于非活动状态。这些都敲响了警钟吗?
    • 我刚刚检查过,所有目标的运行脚本也是相同的(包括 api 密钥)。当您查看 Fabric Web 控制台时,您是否发现该应用程序有任何奇怪/不活跃的地方?
    • Fabric Web 控制台上只有 com.myapp,没有 com.myapp.dev。我想我过去有一个项目,当我添加一个新的目标结构时,建议使用 com.xx.dev 风格,但那一定是我添加新目标的时候。在这里我没有添加 Fabric,直到我设置了两个目标。我似乎需要在 Fabric 上创建 com.myapp.dev,但我不清楚如何去做。
    【解决方案3】:

    使用 Firebase 安装 Crashlytic 时,对于多个方案,您可能会遇到错误 Could not get GOOGLE_APP_ID in Google Services file from build environment。您可以通过以下方式修复它:

    • Build Settings 中,为User Defined 中的文件名添加用户定义:

    • Build Phases 中,点击 Crashlytic 构建阶段上方的加号按钮 New Run Script Phase,然后在文本字段中输入此代码。请记住将 %YOUR_CUSTOM_PATH_TO_FOLDER% 重命名为 Plist 文件的路径:
    GOOGLE_SERVICE_INFO_PLIST_FROM="${PROJECT_DIR}/%YOUR_CUSTOM_PATH_TO_FOLDER%/${GOOGLE_SERVICE_INFO_PLIST_NAME}"
    BUILD_APP_DIR="${BUILT_PRODUCTS_DIR}/${FULL_PRODUCT_NAME}"
    GOOGLE_SERVICE_INFO_PLIST_TO="${BUILD_APP_DIR}/GoogleService-Info.plist"
    cp "${GOOGLE_SERVICE_INFO_PLIST_FROM}" "${GOOGLE_SERVICE_INFO_PLIST_TO}" 
    

    【讨论】:

      【解决方案4】:

      如果您希望在 iOS 中为多个目标实现 Crashlytics,这是 Tyler Milner 撰写的一篇好文章。

      https://medium.com/rocket-fuel/using-multiple-firebase-environments-in-ios-12b204cfa6c0

      它提供了一个脚本来根据目标自动选择 GoogleService-Info.plist 文件。您可能需要稍微修改脚本以反映您应用的目标名称,例如:“Release”。

      # Name of the resource we're selectively copying
      GOOGLESERVICE_INFO_PLIST=GoogleService-Info.plist
      
      # Get references to dev and prod versions of the GoogleService-Info.plist
      # NOTE: These should only live on the file system and should NOT be part of the target (since we'll be adding them to the target manually)
      GOOGLESERVICE_INFO_DEV=${PROJECT_DIR}/${TARGET_NAME}/Firebase/Dev/${GOOGLESERVICE_INFO_PLIST}
      GOOGLESERVICE_INFO_PROD=${PROJECT_DIR}/${TARGET_NAME}/Firebase/Prod/${GOOGLESERVICE_INFO_PLIST}
      
      # Make sure the dev version of GoogleService-Info.plist exists
      echo "Looking for ${GOOGLESERVICE_INFO_PLIST} in ${GOOGLESERVICE_INFO_DEV}"
      if [ ! -f $GOOGLESERVICE_INFO_DEV ]
      then
          echo "No Development GoogleService-Info.plist found. Please ensure it's in the proper directory."
          exit 1
      fi
      
      # Make sure the prod version of GoogleService-Info.plist exists
      echo "Looking for ${GOOGLESERVICE_INFO_PLIST} in ${GOOGLESERVICE_INFO_PROD}"
      if [ ! -f $GOOGLESERVICE_INFO_PROD ]
      then
          echo "No Production GoogleService-Info.plist found. Please ensure it's in the proper directory."
          exit 1
      fi
      
      # Get a reference to the destination location for the GoogleService-Info.plist
      PLIST_DESTINATION=${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app
      echo "Will copy ${GOOGLESERVICE_INFO_PLIST} to final destination: ${PLIST_DESTINATION}"
      
      # Copy over the prod GoogleService-Info.plist for Release builds
      if [ "${CONFIGURATION}" == "Release" ]
      then
          echo "Using ${GOOGLESERVICE_INFO_PROD}"
          cp "${GOOGLESERVICE_INFO_PROD}" "${PLIST_DESTINATION}"
      else
          echo "Using ${GOOGLESERVICE_INFO_DEV}"
          cp "${GOOGLESERVICE_INFO_DEV}" "${PLIST_DESTINATION}"
      fi
      

      【讨论】:

        猜你喜欢
        • 2018-10-06
        • 1970-01-01
        • 1970-01-01
        • 2017-08-04
        • 2019-04-03
        • 1970-01-01
        • 2019-03-27
        • 2018-07-30
        • 2019-01-30
        相关资源
        最近更新 更多