Estoy tratando de averiguar por qué obtengo dos resultados diferentes después de ejecutar la instalación de pod en lo que deberían ser archivos de especificación de pod idénticos. El componente se llama EarlGreyApp, que tuvo una versión 2.0.0 este año. El podspec para la versión 2.0.0 está aquí en la rama earlgrey2 del repositorio EarlGrey: https://github.com/google/EarlGrey/blob/earlgrey2/EarlGreyApp.podspec

Cuando tengo esto definido en el podfile (estoy usando Demo / EarlGreyExample para reproducir):

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

Modifica correctamente esta sección de EarlGreyExample.xcodeproj / project.pbxproj para hacer referencia al componente AppFramework.framework de EarlGrepApp:

/* 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;
                };

Sin embargo, cuando cambio el podfile para que apunte a la rama:

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

La sección anterior no se genera en el archivo project.pbxproj.

No puedo explicar por qué la especificación de pods registrada para EarlGreyApp debería ser la misma. Cuando utilizo pod spec cat EarlGreyApp veo el mismo contenido que en la rama earlgrey2.

Especificación de vaina Cat EarlGreyApp --show-all Me muestra que solo hay dos Podspecs disponibles, 2.0.0 y 2.0.0-rc

¿Alguna idea sobre cuál podría ser la diferencia?

0
Richard Guion 17 oct. 2019 a las 23:44

1 respuesta

La mejor respuesta

La razón de esto es que la Podspec no se publica a través de la rama earlgrey2 sino que se publica a través de la rama earlgrey2pod.

La razón de esto es que algunos usuarios quieren usar EarlGrey sin CocoaPods y algunos quieren usarlo con. Las dos ramas tienen diferencias sutiles para permitir ambos casos de uso (problemas de compilación).

Además, existen más complejidades con CocoaPods cuando realiza una instalación manual de pod, como lo hizo cuando hizo referencia al github directamente. Recomendaría no intentarlo. Dado que EarlGreyApp está compilado como un Framework, desafortunadamente no puede hacer eso (puede hacerlo con EarlGreyTest que está compilado desde la fuente). CocoaPods tiene un comportamiento indefinido deficiente a este respecto.

2
brettfazio 19 oct. 2019 a las 15:49