Skip to content

Build target missing ObjectivePGP framework (dyld: Library not loaded) #247

@davidjb

Description

@davidjb

Attempting to build passforios for the first time, following the build instructions, the compilation works and the app starts up on the simulator, but crashes immediately with:

dyld: Library not loaded: @rpath/ObjectivePGP.framework/ObjectivePGP
  Referenced from: /Users/user/Library/Developer/CoreSimulator/Devices/[snip]/data/Containers/Bundle/Application/[snip]/pass.app/pass
  Reason: image not found

Looking into why, when pod install is run, the Cocoapods Embed Pods Frameworks object gets removed from the pass.xcodeproj/project.pbxproj file. Without this present, the ObjectivePGP pod is presumably unknown to Xcode and thus isn't linked in. I could manually add in the ObjectivePGP.framework into the target's General settings in Xcode and that would work but that would be working around the actual problem.

Here's what my .pbxproj file looks immediately after running pod install -- this is a fresh clone after running the carthage commands and pod install, before even opening the workspace in Xcode:

diff --git a/pass.xcodeproj/project.pbxproj b/pass.xcodeproj/project.pbxproj
index 63acbc4..2536e5a 100644
--- a/pass.xcodeproj/project.pbxproj
+++ b/pass.xcodeproj/project.pbxproj
@@ -814,7 +814,6 @@
                                A260757C1EEC6F34005DB03E /* Sources */,
                                A260757D1EEC6F34005DB03E /* Frameworks */,
                                A260757E1EEC6F34005DB03E /* Resources */,
-                               6AEAED0AF4328940B21EAC44 /* [CP] Embed Pods Frameworks */,
                        );
                        buildRules = (
                        );
@@ -874,7 +873,6 @@
                                DC917BEC1E2F3659000FDF54 /* Run Script */,
                                A26700191EEC450100176B8A /* Embed App Extensions */,
                                A26075921EEC6F34005DB03E /* Embed Frameworks */,
-                               7F5ED3FD24ED627DC957D425 /* [CP] Embed Pods Frameworks */,
                        );
                        buildRules = (
                        );
@@ -1067,26 +1065,6 @@
                        shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n    # print error to STDERR\n    echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n    exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
                        showEnvVarsInLog = 0;
                };
-               6AEAED0AF4328940B21EAC44 /* [CP] Embed Pods Frameworks */ = {
-                       isa = PBXShellScriptBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                       );
-                       inputPaths = (
-                               "${SRCROOT}/Pods/Target Support Files/Pods-passKitTests/Pods-passKitTests-frameworks.sh",
-                               "${PODS_ROOT}/ObjectivePGP/Frameworks/ios/ObjectivePGP.framework",
-                               "${PODS_ROOT}/ObjectivePGP/Frameworks/ios/ObjectivePGP.framework.dSYM",
-                       );
-                       name = "[CP] Embed Pods Frameworks";
-                       outputPaths = (
-                               "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/ObjectivePGP.framework",
-                               "${DWARF_DSYM_FOLDER_PATH}/ObjectivePGP.framework.dSYM",
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
-                       shellPath = /bin/sh;
-                       shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-passKitTests/Pods-passKitTests-frameworks.sh\"\n";
-                       showEnvVarsInLog = 0;
-               };
                736C6F64F90A20CB9A00B420 /* [CP] Check Pods Manifest.lock */ = {
                        isa = PBXShellScriptBuildPhase;
                        buildActionMask = 2147483647;
@@ -1105,26 +1085,6 @@
                        shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n    # print error to STDERR\n    echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n    exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
                        showEnvVarsInLog = 0;
                };
-               7F5ED3FD24ED627DC957D425 /* [CP] Embed Pods Frameworks */ = {
-                       isa = PBXShellScriptBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                       );
-                       inputPaths = (
-                               "${SRCROOT}/Pods/Target Support Files/Pods-pass/Pods-pass-frameworks.sh",
-                               "${PODS_ROOT}/ObjectivePGP/Frameworks/ios/ObjectivePGP.framework",
-                               "${PODS_ROOT}/ObjectivePGP/Frameworks/ios/ObjectivePGP.framework.dSYM",
-                       );
-                       name = "[CP] Embed Pods Frameworks";
-                       outputPaths = (
-                               "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/ObjectivePGP.framework",
-                               "${DWARF_DSYM_FOLDER_PATH}/ObjectivePGP.framework.dSYM",
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
-                       shellPath = /bin/sh;
-                       shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-pass/Pods-pass-frameworks.sh\"\n";
-                       showEnvVarsInLog = 0;
-               };
                94AA4FCF7FF3474A970BE194 /* [CP] Check Pods Manifest.lock */ = {
                        isa = PBXShellScriptBuildPhase;
                        buildActionMask = 2147483647;

I'm not familiar with the internals of Cocoapods but is this expected behaviour? I'm using v1.6.1 of Cocoapods. Attempting a pod deintegrate && pod install made no difference, just regenerating a bunch of other references in the .pbxproj file but still the Embed Pods Frameworks references get deleted.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions