使用 EarlGrey 2.0 应用程序的相同 Podspec 安装 CocoaPod 时的不同结果

Different result on CocoaPod install with identical Podspecs for EarlGrey 2.0 app

我想弄清楚为什么在 运行 pod install 应该是相同的 podspec 文件后我会得到两个不同的结果。该组件称为 EarlGreyApp,今年发布了 2.0.0。 2.0.0 版本的 podspec 位于 EarlGrey 存储库的 earlgrey2 分支中:https://github.com/google/EarlGrey/blob/earlgrey2/EarlGreyApp.podspec

当我在 podfile 中定义它时(我正在使用 Demo/EarlGreyExample 来重现):

 target 'EarlGreyExampleSwift' do
  pod 'EarlGreyApp', '2.0.0'
 end

它正确地修改了 EarlGreyExample.xcodeproj/project.pbxproj 的这一部分以引用 EarlGrepApp 的 AppFramework.framework 组件:

/* Begin PBXShellScriptBuildPhase section */
                4D216774E658C2E4470F936E /* [CP] Embed Pods Frameworks */ = {
                        isa = PBXShellScriptBuildPhase;
                        buildActionMask = 2147483647;
                        files = (
                        );
                        inputPaths = (
                                "${PODS_ROOT}/Target Support Files/Pods-EarlGreyExampleSwift/Pods-EarlGreyExampleSwift-frameworks.sh",
                                "${PODS_ROOT}/EarlGreyApp/AppFramework.framework",
                        );
                        name = "[CP] Embed Pods Frameworks";
                        outputPaths = (
                                "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/AppFramework.framework",
                        );
                        runOnlyForDeploymentPostprocessing = 0;
                        shellPath = /bin/sh;
                        shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-EarlGreyExampleSwift/Pods-EarlGreyExampleSwift-frameworks.sh\"\n";
                        showEnvVarsInLog = 0;
                };

然而,当我将 podfile 更改为指向分支时:

target 'EarlGreyExampleSwift' do
  pod 'EarlGreyApp', :git => 'https://github.com/google/EarlGrey.git', :branch => 'earlgrey2'
end

以上部分不会生成到 project.pbxproj 文件中。

我无法解释为什么为 EarlGreyApp 注册的 podspec 应该是相同的。当我执行 pod spec cat EarlGreyApp 时,我看到的内容与 earlgrey2 分支中的内容相同。

pod spec cat EarlGreyApp --show-all 告诉我只有两个 Podspecs 可用,2.0.0 和 2.0.0-rc

有什么不同之处吗?

这是因为 Podspec 不是通过 earlgrey2 分支发布的,而是通过 earlgrey2pod 分支发布的。

这是因为一些用户想在没有 CocoaPods 的情况下使用 EarlGrey,而一些用户想在 CocoaPods 的情况下使用它。这两个分支有细微差别以允许两种用例(编译问题)。

此外,当您手动安装 pod 时,CocoaPods 会更加复杂,就像您直接引用 github 时所做的那样。我建议不要那样做。由于 EarlGreyApp 被编译为一个框架,你不能不幸地这样做(你可以使用从源代码编译的 EarlGreyTest )。 CocoaPods 在这方面的未定义行为很差。