Файл DSYM не загружается в firebase при выполнении сборки в среде azure CI - PullRequest
1 голос
/ 18 июня 2020

Я пытаюсь загрузить файл dsym в firebase. Я следил за учебником firebase . Все работало нормально, когда я создавал приложение из xcode. Проблема возникла, когда я пытался сделать это, используя azure конвейеры . Я добавил фазу сборки в свою сборку xcode. Похоже, что это

После запуска в среде CI я получил следующий результат:

Debug mode enabled Running in a CI Environment Not running in an instance of Xcode.app Crashlytics is not installed Google App ID: 1:xxxx Platform: ios DSYM Paths: ["/.../BuildProductsPath/Test-iphoneos/App.app.dSYM"] Validation succeeded. Exiting because upload-symbols was run in validation mode

Но после тестирования моего приложения я получаю cra sh отчет с отсутствующим dsym на панели управления Crashlytics.

Есть ли способ добавить дополнительные журналы или проверить уже загруженные файлы dsym в firebase? Возможно, я пропустил некоторые дополнительные настройки.

EDIT-1:

Мой конвейер сборки выглядит так:

pool:
  vmImage: 'macOS-latest'

trigger:
- master

steps:
- checkout: self
  submodules: true
  clean: true

- script: /usr/local/bin/pod install
  displayName: 'pod install using a script'

- task: InstallAppleCertificate@2
  inputs:
    certSecureFile: 'xxx.p12'
    certPwd: '$(P12Password)'
    keychain: 'temp'

- task: InstallAppleProvisioningProfile@1
  inputs:
    provisioningProfileLocation: 'secureFiles'
    provProfileSecureFile: 'xxx.mobileprovision'

- task: ios-bundle-version@1
  inputs:
    sourcePath: 'App/Info.plist'
    versionCodeOption: 'buildid'
    versionCode: '$(Build.BuildId)'
    versionName: '1.0.$(Build.BuildId)'
    printFile: true

- task: Xcode@5
  inputs:
    actions: 'clean build archive'
    xcWorkspacePath: '**/App.xcworkspace'
    scheme: 'App'
    packageApp: true
    signingOption: 'manual'
    provisioningProfileName: 'xxx'
    args: 'SWIFT_VERSION=5.0'
    useXcpretty: false


- task: CopyFiles@2
  inputs:
    contents: '**/*.ipa'
    targetFolder: '$(build.artifactStagingDirectory)'

- task: PublishBuildArtifacts@1
  inputs:
    pathtoPublish: '$(build.artifactStagingDirectory)' 
    artifactName: 'drop' 
    publishLocation: 'Container'

В файле pod у меня есть эти строки:

#Firebase
  pod 'Firebase/Performance'
  pod 'Firebase/Crashlytics'
  pod 'Firebase/Analytics'

1 Ответ

0 голосов
/ 15 июля 2020

Проблема возникла в файле plist опций экспорта, который был настроен на автоматическое создание в 'task: Xcode@5'. В этом файле есть флаг compileBitcode. По умолчанию было установлено «Да», и это была проблема. После экспорта файла .ipa с этой опцией файлы dsym, созданные во время сборки, недействительны.

В моем случае я только что добавил собственный файл ExportOptionsTestEnv.plist. Вы можете сгенерировать этот файл, заархивировав свое приложение из xcode и распределив его со специальной конфигурацией c.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>compileBitcode</key>
    <false/>
    <key>destination</key>
    <string>export</string>
    <key>method</key>
    <string>ad-hoc</string>
    <key>provisioningProfiles</key>
    <dict>
        <key>YOURBUNDLEID</key>
        <string>PROVISIONINGPROFILENAME</string>
    </dict>
    <key>signingCertificate</key>
    <string>Apple Distribution</string>
    <key>signingStyle</key>
    <string>manual</string>
    <key>stripSwiftSymbols</key>
    <true/>
    <key>teamID</key>
    <string>TEAMID</string>
    <key>thinning</key>
    <string>&lt;none&gt;</string>
</dict>
</plist>

И изменив конфигурацию сборки, чтобы она выглядела следующим образом:

    - task: Xcode@5
      inputs:
        actions: 'clean build archive'
        xcWorkspacePath: '**/App.xcworkspace'
        scheme: 'App'
        packageApp: true
        exportOptions: 'plist'
        exportOptionsPlist: 'ExportOptions/ExportOptionsTestEnv.plist'
        signingOption: 'manual'
        provisioningProfileName: 'xxx'
        args: 'SWIFT_VERSION=5.0'
        useXcpretty: false

Просто имейте в виду, что это решение не будет работать с TestFlight и AppleStore, потому что эти службы требуют включения флага compileCode.

Возможным решением этой проблемы может быть быстрое развертывание. В документации пишут, что это поддерживается: upload_symbols_to_crashlytics

...