首页 > 解决方案 > iOS:此时无法安装此应用程序 - LegacyErrorString=DuplicateIdentifier

问题描述

我有一个具有多个目标(QA、Staging .. 等)的项目。所有目标都包含一个动态框架(假设带有包标识符:com.sdk.demosdk)。对于某些目标,我使用使用一些预处理器标志(干净)编译的这个 SDK,而对于其他目标,我使用不同的标志编译。

例如:对于 QA - 我正在使用 sdkFull 进行 QA - 我正在使用 sdkClean

但两者都具有相同的捆绑标识符。

但无论如何,对于测试目标,我总是运行包含 sdkClean 的目标。

在此处输入图像描述

我正在使用 fastlanescan从 Jenkins 管道运行测试。见下面的代码:

lane :testify do |options|
  app = options[:app]
  podinstall
  scan(
      scheme: "DemoTests_" << app,
      code_coverage: true,
      xcargs: "OTHER_SWIFT_FLAGS='$(inherited) \"-D\" \"COCOAPODS\" -DAUTHENTICATION_PRODUCTION -Dappstore'",
      output_directory: "./fastlane/test_output_" << app,
      device:"iPhone 8"
  )
end

有时我会收到以下错误:

2018-07-17 02:48:23.975 xcodebuild[82663:24489158] 错误域 = IXUserPresentableErrorDomain 代码 = 1“此时无法安装此应用程序。” UserInfo={NSLocalizedDescription=此时无法安装此应用程序。,NSUnderlyingError=0x7fa8106dab80 {Error Domain=MIInstallerErrorDomain Code=57 "在 /Users/jenkins/Library/Developer/CoreSimulator/Devices/B4971F74-AE22-4A18- 找到捆绑包B5F0-01E71AF71314/data/Library/Caches/com.apple.mobile.installd.staging/temp.a0hOWi/extracted/Payload/DemoApp.app/Frameworks/demosdkCleanAPI.framework 具有与捆绑相同的标识符 (com.sdk.demosdk)在/Users/jenkins/Library/Developer/CoreSimulator/Devices/B4971F74-AE22-4A18-B5F0-01E71AF71314/data/Library/Caches/com.apple.mobile.installd.staging/temp.a0hOWi/extracted/Payload/DemoApp。应用程序/框架/demosdk.framework"

测试失败:测试目标 ShindanTests_DemoApp 遇到错误(早期意外退出,操作从未完成引导 - 不会尝试重新启动。基本错误:错误域 = IXUserPresentableErrorDomain 代码 = 1“此时无法安装此应用程序。” UserInfo = { NSLocalizedDescription=此时无法安装此应用程序。,NSUnderlyingError=0x7fa8106dab80 {Error Domain=MIInstallerErrorDomain Code=57 "在 /Users/jenkins/Library/Developer/CoreSimulator/Devices/B4971F74-AE22-4A18-B5F0-01E71AF71314 找到捆绑包/data/Library/Caches/com.apple.mobile.installd.staging/temp.a0hOWi/extracted/Payload/DemoApp.app/Frameworks/demosdkCleanAPI.framework 具有相同的标识符(com.sdk.demosdk)作为捆绑包位于 /Users/jenkins/Library/Developer/CoreSimulator/Devices/B4971F74-AE22-4A18-B5F0-01E71AF71314/data/Library/Caches/com.apple.mobile.installd.staging/temp.a0hOWi/extracted/ Payload/DemoApp.app/Frameworks/demosdk.framework" UserInfo={LegacyErrorString=DuplicateIdentifier, FunctionName=-[MIInstallableBundle performPreflightWithError:], SourceFileLine=391, NSLocalizedDescription=在 /Users/jenkins/Library/Developer/CoreSimulator/Devices/ 找到捆绑包B4971F74-AE22-4A18-B5F0-01E71AF71314/data/Library/Caches/com.apple.mobile.installd.staging/temp.a0hOWi/extracted/Payload/DemoApp.app/Frameworks/demosdkCleanAPI.framework 具有相同的标识符(com. sdk.demosdk)作为捆绑包位于 /Users/jenkins/Library/Developer/CoreSimulator/Devices/B4971F74-AE22-4A18-B5F0-01E71AF71314/data/Library/Caches/com.apple.mobile.installd.staging/temp。a0hOWi/extracted/Payload/DemoApp.app/Frameworks/demosdk.framework}}})**测试失败**

我尝试了几个清理脚本,例如:

rm -rf -r ~/Library/Developer/Xcode/DerivedData
rm -rf $(getconf DARWIN_USER_CACHE_DIR)/org.llvm.clang/ModuleCache
rm -rf -r ~/Library/Caches/com.apple.dt.Xcode
xcrun simctl uninstall booted com.cellebrite.shindan

事件杀死模拟器进程并重新启动它,但有时它会成功,有时不会......

谁能帮我理解可以做什么?

标签: iostestingjenkinsfastlane

解决方案


推荐阅读