我试图弄清楚为什么在应该是相同的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
有什么区别的想法吗?
答案 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的行为不确定性很差。