对于EarlGrey 2.0应用程序,使用相同的Podspec在CocoaPod安装上获得不同的结果

时间:2019-10-17 20:44:49

标签: cocoapods podspec earlgrey

我试图弄清楚为什么在应该是相同的podspec文件上运行pod install之后会得到两个不同的结果。该组件称为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 告诉我只有两个Podspec:2.0.0和2.0.0-rc

有什么区别的想法吗?

1 个答案:

答案 0 :(得分:2)

之所以这样做,是因为Podspec没有通过bookings = (for both) id | booking_status | booking_datetime | customer_id | vendor_id 1 | job started | 2019-10-16 10:00:00 | 1 | 2 1 | completed | 2019-10-15 10:00:00 | 1 | 2 1 | accepted | 2019-10-16 09:00:00 | 3 | 2 1 | work in progress | 2019-10-16 09:00:00 | 3 | 2 分支发布,而是通过earlgrey2分支发布的。

这样做的原因是有些用户想要在没有CocoaPods的情况下使用EarlGrey,而有些用户希望将其与之一起使用。这两个分支之间存在细微的差异,以允许同时使用两个用例(编译问题)。

另外,当您进行手动Pod安装时,与CocoaPods相比还有其他复杂之处,就像直接引用github时一样。我建议不要尝试。由于earlgrey2pod被编译为框架,因此您不能不幸地这样做(您可以使用从源代码编译的EarlGreyApp)。在这方面,CocoaPods的行为不确定性很差。