我正在试图弄清楚为什么在对应该相同的podspec文件运行pod安装之后,我会得到两个不同的结果。该组件名为EarlGreyApp,今年发布了2.0.0版本。2.0.0发行版的podspec位于EarlGrey repo:https://github.com/google/EarlGrey/blob/earlgrey2/EarlGreyApp.podspec的EarlGrey分支中。
当我在podfile中定义了这一点时(我使用Demo/EarlGrey示例来复制):
target 'EarlGreyExampleSwift' do
pod 'EarlGreyApp', '2.0.0'
end它正确地修改了EarlGreyExprese.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规范猫EarlGreyApp时,我看到的内容与earlgrey2分支中的内容相同。
Podspecs -- Shows 向我展示了只有两种Podspecs,2.0.0和2.0.0-rc
有什么不同吗?
发布于 2019-10-19 15:33:35
这是因为Podspec不是通过earlgrey2分支发布的,而是通过earlgrey2pod分支发布的。
这样做的原因是,一些用户希望使用EarlGrey而不使用CocoaPods,而有些用户希望使用它。这两个分支有细微的差异,以允许这两个用例(编译问题)。
此外,当您执行手动吊舱安装时,CocoaPods还有更复杂的地方,就像直接引用github时所做的那样。我建议你不要这么做。由于EarlGreyApp是作为一个框架编译的,所以您不能不幸地这样做(您可以使用从源代码编译的EarlGreyTest )。CocoaPods在这方面有很差的未定义行为。
https://stackoverflow.com/questions/58440493
复制相似问题