Skip to content
This repository was archived by the owner on May 20, 2025. It is now read-only.
This repository was archived by the owner on May 20, 2025. It is now read-only.

[iOS] Third-party libraries not found for "staging" config: Solution! #426

Closed
@danieldunderfelt

Description

@danieldunderfelt

Hi!

I installed CodePush in my app today and followed the instructions for multi-environments, where the docs say to create a "staging" project configuration. After doing that, the project would not build at all when the scheme was set to "staging", complaining that no libraries could be found. Re-linking with rnpm didn't help, but I figured out that the issue was that no third-party libraries (including code-push!) include the staging configuration, making the build fail.

The solution was this stackoverflow answer: http://stackoverflow.com/questions/30884778/how-to-compile-a-project-with-app-and-library-in-the-same-workspace-with-differe/30884779#30884779

I had to change it a bit, using the same string for "header search paths" as "framework search paths" (functionally omitting the /include part of that string), but now everything works.

I think this should be mentioned in the documentation right where the user is instructed to create the "staging" configuration.

Activity

geof90

geof90 commented on Jul 12, 2016

@geof90
Contributor

@danieldunderfelt Thanks for the feedback. I will see how we can improve the documentation.

When you created the staging project configuration, did you also manually create a Staging scheme?

danieldunderfelt

danieldunderfelt commented on Jul 12, 2016

@danieldunderfelt
Author

Hi!

No, that was created when I copied the release config and made the staging config.

geof90

geof90 commented on Jul 13, 2016

@geof90
Contributor

@danieldunderfelt Unfortunately I was unable to repro the error you were seeing.
After duplicating the release config and calling it staging + setting up the CODEPUSH_KEY config, all I did was go to Product > Scheme > Edit Scheme then set the Build Configuration to Staging. After that I ran the app and it was sync-ing against CodePush with the Staging key just fine.

What version of XCode are you on? I don't know if that matters but I'm using v7.1.1.
Also are you using CocoaPods for dependency management?

danieldunderfelt

danieldunderfelt commented on Jul 14, 2016

@danieldunderfelt
Author

@geof90 No, not using CocoaPods. Does it manage these things for me?

When I figured out why my builds weren't working, that the third-party packages didn't have a staging config, I thought having cocoapods wouldn't matter.

geof90

geof90 commented on Jul 14, 2016

@geof90
Contributor

@danieldunderfelt no I only asked because I wasn't using CocoaPods and I was wondering if you were.

danieldunderfelt

danieldunderfelt commented on Jul 14, 2016

@danieldunderfelt
Author

@geof90 oh, good good!

Maybe your xcode made staging config for your third-party packages, and my xcode glitched out and didn't?

thorbenandresen

thorbenandresen commented on Jul 15, 2016

@thorbenandresen

Nice, this did also fix it for me. I omitted the Step 3 (changing the project.pbxproj) and my Fabric.framework does still work fine.

However when I use different PRODUCT_NAMES for the different build environment, I am getting now a build error. I am have setup the names according to this article

screen shot 2016-07-15 at 1 20 49 pm

When i build my release config everything works, but not when I build the debug or staging config. In these cases I get the following errors:

screen shot 2016-07-15 at 11 22 42 am

I have tried to fix it by

  • set Target => Info => Executable file to $(PRODUCT_NAME)
  • set Target => Bundler Loader to => $(BUILT_PRODUCTS_DIR)/$(PRODUCT_NAME).app/$(PRODUCT_NAME)

I have cleaned my build folder before each build.

This did not happen before, so it could be related to this issue.

(For now my workaround is to use different app icons in order to distinguish my different build environment - as outlines in the article above)

FernandoMorais

FernandoMorais commented on Jul 19, 2016

@FernandoMorais

Here I solved the staging problem by correcting the TEST_HOST which is pointing to a fixed value despite the new PRODUCT_NAME.

I've changed the scheme to use the staging variation for tests builds.

I hope it helps!

huitsing

huitsing commented on Jul 29, 2016

@huitsing
FernandoMorais

FernandoMorais commented on Aug 16, 2016

@FernandoMorais

really nice @huitsing! Much more complete solution!

jm555jm

jm555jm commented on Aug 18, 2016

@jm555jm

I have the same issue, too. I use xcode 8 beta 6.
library not found for -lCodePush with build configuration "Staging".

I have fix just re-add libCodePush.a at Linked Framework and Libraries.
Now everything works fine =).

davidruisinger

davidruisinger commented on Nov 14, 2016

@davidruisinger

@jm555jm THX for the hint. I had quite a few external libraries and I was desperately trying to unlink and re-link them without any luck. But manually removing and re-adding them in the Link Binary with Libraries section finally solved the issue and my builds are succeeding again.

bernatfortet

bernatfortet commented on Feb 1, 2017

@bernatfortet

@jm555jm @flavordaaave thanks for the tip!
It took me a couple minutes to figure out exactly how to do that, so for others:

  1. Select your app target
  2. Make sure you are in the General Tab
  3. Scroll down until Link Binary with Libraries
  4. Select libCodePush
  5. Press - minus button at the bottom left
  6. Press + plus button and search for libCodePush
    👍
bernatfortet

bernatfortet commented on Feb 1, 2017

@bernatfortet

Actually after trying that I found that I was still with the Release scheme.
After changing it to staging, and after removing and re-adding the library it still doesn't work 😞
Same exact error.

Amurmurmur

Amurmurmur commented on Feb 2, 2017

@Amurmurmur

+1 Same error, with the header, when on Staging Scheme :(

27 remaining items

Loading
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

      Development

      No branches or pull requests

        Participants

        @wprater@ndbroadbent@jerson@bernatfortet@fannt

        Issue actions

          [iOS] Third-party libraries not found for "staging" config: Solution! · Issue #426 · microsoft/react-native-code-push