App linked against an older Version

Charles Gray's Avatar

Charles Gray

23 Jan, 2017 10:54 PM

The operation couldn’t be completed. The app is linked against an older version of the Reveal library. You may need to update the Reveal library in your app.

appears when executing again a Simulator instance.

I've deleted the version 5 framework and replaced with the current on ( downloaded ) with version 6, but still get the error ... have carefully followed the integration instructions, and still have the dialog error ???

thx for help and 'nudges' ...

  1. Support Staff 1 Posted by Vlas Voloshin on 23 Jan, 2017 10:58 PM

    Vlas Voloshin's Avatar

    Hi Charles,

    Can you give more details about which integration method you're using? Where did you download the framework from? If you're using CocoaPods, please make sure you've executed a pod update Reveal-SDK in your project. A pod repo update command will also make sure that your local CocoaPods repository is up to date.

    Best regards,
    Vlas.

  2. 2 Posted by Stan Gray on 24 Jan, 2017 02:39 PM

    Stan Gray's Avatar

    Thank-you for your timely response

    We were using version 5 ( had it successfully integrated in our app via linked RevealServer.framework )

    We downloaded the new version 6, when prompted by the app, and downloaded version 6 with the supporting files

    We then followed the instructions in the following document:

    Looking forward to using version 6 :)

  3. Support Staff 3 Posted by Vlas Voloshin on 24 Jan, 2017 11:27 PM

    Vlas Voloshin's Avatar

    Hi Charles,

    I can't see the document link that you've posted, but I assume that you have previously tried using "Linking Reveal into your app" integration guide, or maybe linked the framework directly. Just wanted to let you know that you can access the integration guides via HelpIntegration Guide menu.

    Have you used the same integration guide to integrate Reveal 5's server framework? If you followed different steps, and changed the way you integrate the server now, the old framework may still be somewhere in your project. I would recommend doing the following:

    • Search for all references to RevealServer in your project and remove them.
    • Clean the Xcode project using ProductClean Build Folder… menu (hold the ⌥ key to expose this option).
    • Delete the app from simulator/device to ensure there's no "cached" Reveal framework left in it.
    • Build and run your app again. Check Xcode's debug console log to see if there is no message similar to this:

      INFO: Reveal Server started (Protocol Version X).

      If you're still getting this message, it means Reveal Server is still getting loaded for some reason. We have a knowledge base article that covers the removal steps in more detail, you can try following them.

    • Once you make sure there's no Reveal Server integrated in your project, please follow the integration guide again (available via HelpIntegration Guide menu) to integrate its latest version. Please note that integration guides we provide are written in a way that ensures your project does not contain Reveal Server framework in its release builds. Integrating Reveal just by dropping it into your project and using Xcode's linking/embedding options does not provide such safeguards, and doing so puts your app at a risk of being rejected during the App Store submission review.

    • If you decide to use the "Linking Reveal into your app" integration option, updating Reveal Server in future would require simply replacing RevealServer.framework with the new one and performing a clean build. Current version of Reveal Server framework can be found using Reveal's HelpShow Reveal Library in Finder menu.

    Please let me know if you have any further questions!

    Best regards,
    Vlas.

  4. 4 Posted by shawn on 01 Feb, 2017 12:09 PM

    shawn's Avatar

    Similar Issue here.
    I am linking to the Framework directly into the Reveal App, yet I get the 'old library' alert.
    Any ideas what to try? Using App V6 (9220) & Library V2.0

  5. Support Staff 5 Posted by Vlas Voloshin on 01 Feb, 2017 12:20 PM

    Vlas Voloshin's Avatar

    Hello Shawn,

    Have you tried following the steps I've outlined in the previous message? Please note that in majority of cases (definitely in case of v.6) Reveal requires the server framework to have the same version as Reveal itself. In other words, if you get an "old library" error, you should use the version of the library shipped with the version of Reveal you're running – or you should run pod spec update if you integrate the library using CocoaPods.

    If you're integrating the framework directly instead of using the officially supported integration guides, please make sure that you have replaced Reveal Server framework which you're linking with the latest version, and have performed a clean build. Cleanly reinstalling your app on device/simulator is also recommended.

    Best regards,
    Vlas.

  6. 6 Posted by shawn on 01 Feb, 2017 12:36 PM

    shawn's Avatar

    Hi Vlas,
    The framework in Xcode is link DIRECTLY to the local URL of the framework WITHIN the Reveal App, as I stated in my initial comment.

    Cheers,

    Shawn Marston
    [email blocked]

  7. Support Staff 7 Posted by Vlas Voloshin on 01 Feb, 2017 12:50 PM

    Vlas Voloshin's Avatar

    Shawn,

    I must reiterate that this method of integration is not officially supported. I would highly recommend trying the "Loading the Reveal Server via an Xcode Breakpoint" integration method outlined in the integration guide instead, as it allows you to avoid modifying your project at all when running your app in Simulator, or modifying it minimally when running on device.

    If you absolutely need to use direct linking, my best advice would be to try performing a full clean build of your app using ProductClean Build Folder… menu in Xcode (hold the ⌥ key to expose this option) and reinstalling your app cleanly in the device/simulator. You could also try removing the linked framework from your project, cleaning your project build folder, running the app again to ensure that Reveal Server is no longer running, then adding the linked framework into the project again. Please let me know what you have already tried.

    It would also be interesting to know what protocol version number does your installation of Reveal show on the version screen (accessible using RevealAbout Reveal menu and clicking the version number under the logo) and what protocol version is shown in the debugger log console when running your app with the "old" Reveal Server framework integrated (something like INFO: Reveal Server started (Protocol Version X).). Under normal circumstances, these numbers should be the same, and for Reveal 6 it's Version 37.

    Best regards,
    Vlas.

  8. 8 Posted by shawn on 01 Feb, 2017 12:58 PM

    shawn's Avatar

    Hi Vlas,
    Understood.
    I had presumed that the BEST way to ensure that the correct library issued is DIRECT linking, no sure why this is NOT recommended/supported.
    So I shall EXTRACT/COPY the Framework and have to remember to update it each and every time that Reveal is updated.

    FYI, Protocol from my App is 32, and Reveal App is 37, so that shows the issue, now I can check that my revisions have had the desired effect.

    Shawn

  9. Support Staff 9 Posted by Vlas Voloshin on 01 Feb, 2017 01:15 PM

    Vlas Voloshin's Avatar

    Shawn,

    Direct linking is not a recommended integration method for a few reasons:

    • First of all, it's easy to forget to remove the framework from your app before submitting it for App Store review. And as it is mentioned in the integration guide:

      Never ship an app linked against the Reveal library. Reveal exposes your app to deep inspection and will likely cause your app to be rejected by the Apple review team. Reveal is intended for internal development and debugging purposes only.

      Recommending to link Reveal Server directly means that a large portion of users would risk their app getting rejected. We're all humans, and we don't have perfect memory.

    • If you're sharing your project with other developers (e.g. you work in a team), linking your project with a third-party framework outside of your project folder is a recipe for build failures – in cases where on other machines the framework is not there. Even if you're the only developer in the codebase, creating an Absolute Path reference from your project means that if you move the framework, or move to a different computer, the reference would become invalid. In case of Reveal, your teammates (or CI machines) may not have Reveal installed at all, and builds will fail. It's not the best idea to recommend an integration method that's not teamwork-friendly.

    • There are simply other methods of integration which may be more compatible with your development process or dependency management. For example, if you're using CocoaPods, you can integrate and update Reveal Server using that. Otherwise, "Loading the Reveal Server via an Xcode Breakpoint" method allows you to integrate Reveal that doesn't require neither modifying your project (for Simulator builds) nor having to update the framework each time Reveal is updated.

    The fact that your app shows "protocol version 32" in the log when running shows that it's still using an old version of the framework. This is likely due to some caching that Xcode performs in the build folder. Please try cleaning it, as I have suggested earlier.

    I hope you'll find this explanation helpful!

    Best regards,
    Vlas.

  10. 10 Posted by shawn on 01 Feb, 2017 01:26 PM

    shawn's Avatar

    Thanks Vlas,
    I understand better now.
    I used to use the breakpoint method previously, but gave up on it as it was too flakey, but can't recall now what the issue was. Perhaps I'll try that again.
    I (have to) do a clean, and deep clean, and even restarting my MBP, on a regular basis, simply because XCode is so fragile/pedantic about numbers of open files, and a whole heap of other reasons.

    Thanks
    Shawn

    Cheers,

    Shawn Marston
    Sent from my iPhone

  11. 11 Posted by shawn on 02 Mar, 2017 04:53 PM

    shawn's Avatar

    This comment was split into a new private discussion: App linked against an older Version

    So, I have now followed your recommendation to start the server from a break-point (BP). I Removed everything and started from scratch. But it's now working. I don't even get the installed framework message when the BP is set to "Automatically continue...". However, if I uncheck that option, it does load the framework, but still cannot attach to Reveal App.
    Any ideas?

  12. Support Staff 12 Posted by Vlas Voloshin on 02 Mar, 2017 11:34 PM

    Vlas Voloshin's Avatar

    Shawn, I have split your reply into a separate private thread as we have hijacked Charles' original problem thread.

    Charles, I assume that you have resolved your issues, please reopen this thread and I'd be happy to help you.

  13. Vlas Voloshin closed this discussion on 02 Mar, 2017 11:34 PM.

Comments are currently closed for this discussion. You can start a new one.

Keyboard shortcuts

Generic

? Show this help
ESC Blurs the current field

Comment Form

r Focus the comment reply box
^ + ↩ Submit the comment

You can use Command ⌘ instead of Control ^ on Mac