Search Unity

egoXproject - iOS & tvOS Xcode project and Info.plist editor

Discussion in 'Assets and Asset Store' started by egomotion, Oct 23, 2014.

  1. egomotion

    egomotion

    Joined:
    Sep 6, 2014
    Posts:
    20

    EgoXproject is an Editor plugin for Unity to allow iOS and tvOS Xcode projects to be modified to meet your requirements. All modifications are applied automatically when the Unity project is built. It allows builds to:
    • Add and configure capabilities (e.g. iCloud, and push notifications)
    • Add and modify build settings
    • Add and modify Info.plist entries
    • Add system frameworks and libraries
    • Add custom frameworks and libraries
    • Add embedded frameworks
    • Add additional files (e.g. bundles and source files)
    • Add post build scripts
    • Configure signing

    Additionally:
    • It supports multiple configurations, so you can have different configurations for different builds. Such as one for the iPhone and another for the iPad. Or different Debug, Ad Hoc, and Release configurations.
    • Multiple change files can be used in a single configuration. This allows code to be modularised, and plugins to have their own set of changes.
    • The changes are set up using intuitive Unity Editor Windows.
    • The iOS and tvOS changes are kept separately to allow different changes to be applied to each platform.
    • A scripting interface also allows dynamic changes to be configured via post build scripts
    • EgoXproject plays nicely with source control systems like git. All configurations files are human readable text files and no machine dependent information is required (all paths are relative to the project folder).
    • EgoXproject plays nicely with other Xcode modification systems. EgoXproject hooks into Unity’s build pipeline, and applies its changes during the build process. It only changes the values that it has been set up to change.
    • EgoXproject works with continuous integrations systems like Jenkins and Unity Cloud Build.

    EgoXproject is available on the Asset Store now
    See the egoXproject website for more information, tutorials and videos.
    Source code is available on GitHub

















     
    Last edited: Mar 10, 2019
  2. bjornrun

    bjornrun

    Joined:
    Oct 29, 2013
    Posts:
    88
    Using Unity 5 B16 I get:

    project.pbxproj is there and I can open it with text editor. Xcode is closed.

    Is Unity 5 not supported yet?
     
  3. egomotion

    egomotion

    Joined:
    Sep 6, 2014
    Posts:
    20
    Hi bjornrun,

    We have not yet tested on Unity 5 beta. We will be testing on it shortly. If possible, could you send a sample project with this failure to support@egomotion.co.uk, so we can investigate further.

    Thanks.
     
  4. bjornrun

    bjornrun

    Joined:
    Oct 29, 2013
    Posts:
    88
  5. egomotion

    egomotion

    Joined:
    Sep 6, 2014
    Posts:
    20
    Great. I have now tested on Unity 5 beta 16, and no, egoXproject currently does not work with it. But it will do soon.
     
  6. egomotion

    egomotion

    Joined:
    Sep 6, 2014
    Posts:
    20
    egoXproject 1.0.3 is now available with support for Unity 5.
     
  7. egomotion

    egomotion

    Joined:
    Sep 6, 2014
    Posts:
    20
    egoXproject 2.0 is now available on the Asset Store

    New features:
    • Unified editor. Make all changes in a single window.
    • Unified change files. Add Info.plist and Xcode project changes to a single change file.
    • Expanded scripting interface. You can now make dynamic changes via post process build scripts.
    • You can now add folders as well as individual files.
    • You can now set the post build script shell.
    • Customisable ignored files list.
    • Ability to specify the location of Xcode.
    • EgoXproject.dll can now be easily moved to a different location.
    • Large rewrite to make things much better.


     
    bjornrun likes this.
  8. bjornrun

    bjornrun

    Joined:
    Oct 29, 2013
    Posts:
    88
    How do I add build setting: Enable Objective-C exceptions?
     
  9. egomotion

    egomotion

    Joined:
    Sep 6, 2014
    Posts:
    20
    Hi,

    To enable Objective C Exceptions:
    1. Find the declaration name in Xcode by going to Build settings, selecting the item and looking in the quick help.
    2. In this case the value is GCC_ENABLE_OBJC_EXCEPTIONS
    3. In Unity open the egoXproject Xcode Editor window.
    4. Click the + button in the Build settings section
    5. Enter GCC_ENABLE_OBJC_EXCEPTIONS in the text field and click the + button next to it
    6. The build setting will now be added to the list.
    7. Finally enter a value for it. In this case enter YES
    Now when you build your project Objective C exceptions will be enabled.
     
    bjornrun likes this.
  10. bjornrun

    bjornrun

    Joined:
    Oct 29, 2013
    Posts:
    88
    Hi,
    How do I change capabilities?
    I want to enable Associated Domains, and add a domain to the list.
    It seems that Xcode creates an entitlement file where it stores the domains. Can it be created by egoXproject instead or should I copy the version that Xcode created?
     
  11. Robert-Castle

    Robert-Castle

    Joined:
    Feb 7, 2012
    Posts:
    9
    Hi,

    Currently egoXproject does not directly have a way turning capabilities on. This will come in a future release.

    Depending on what the capability does, you may be able to recreate it using egoXproject (eg adding a file or framework, setting a build setting, adding an entry to the info.plist).

    From a quick test, for Associated Domains do the following:
    1. enable it in the Xcode project. This will add the entitlement to your app id in the dev center, create the entitlements file, and add a build setting (CODE_SIGN_ENTITLEMENTS).
    2. Fill in the entitlements file as required. Probably easiest to do this in Xcode
    3. Copy the entitlements file to your Unity project.
    4. In egoXproject add the entitlements file to the Files and Folders section, and set it to Copy.
    5. Then add a custom build setting of CODE_SIGN_ENTITLEMENTS and set its value to the name of the entitlements file
    6. Do a clean build to regenerate the xcode project file.
    (7. Until I release an update that fixes this bug, in Xcode you will need to go to Build Phases > Copy Bundle Resources and remove the entitlements file. It should not be here. I will get this fixed ASAP).
     
    bjornrun likes this.
  12. egomotion

    egomotion

    Joined:
    Sep 6, 2014
    Posts:
    20
    egoXproject 2.1.1 is now available and fixes the issue above where the entitlements file was being erroneously copied.
     
    bjornrun likes this.
  13. SimteractiveDev

    SimteractiveDev

    Joined:
    Jul 9, 2014
    Posts:
    97
    Hey, we are having a problem attempting to copy a file from Unity project into xcode project and have it link correctly.

    This is how I have set up egoXproject
    Screen Shot 2016-03-01 at 12.25.53.png

    And this is the structure of our project:

    Code (CSharp):
    1. UnityProjFolder
    2.     - Assets
    3.     - PreBuildXcodeResources
    4.         - LocalNotification.wav
    5.     - Builds
    6.         - iOS Build
    7.             - Xcode Proj
    8.             - LocalNotification.wav (this is where the file is located after the build is made)
    The file is correctly copied over to the build folder, but the link to the file is incorrect in the project. According to the xCode project, it's full path is set to {path_to_project}/UnityProjFolder/LocalNotification.wav which is incorrect.

    Any ideas as to how to solve this issue?

    Thanks in advance
     
    Last edited: Mar 2, 2016
  14. andymads

    andymads

    Joined:
    Jun 16, 2011
    Posts:
    1,614
    SimteractiveDev likes this.
  15. SimteractiveDev

    SimteractiveDev

    Joined:
    Jul 9, 2014
    Posts:
    97
    Cool, will do. Thanks!
     
  16. seon

    seon

    Joined:
    Jan 10, 2007
    Posts:
    1,441
    I'd love to know when you'll have support for setting Xcode project capabilities on build. Will purchase when that is in :)
     
  17. artefacto-sas

    artefacto-sas

    Joined:
    Mar 13, 2014
    Posts:
    11
    Hello,

    Nice plugin ! But I have a case I don't know how to manage. Using Metaio as RA plugin, the lib I have to link doesn't have any extension ( file : metaiosdk ) so I can't retrieve it on Xcode, How could I resolve this ?
     
  18. egomotion

    egomotion

    Joined:
    Sep 6, 2014
    Posts:
    20
    @Benzino07 - Thanks to your sample project we were able to find the gnarly bug. Update coming shortly to address it.

    @seon - Xcode capabilities will be coming soon. The ones that only require changes to the Info.plist, build settings, or adding frameworks you can do now by setting up those changes. However, there are some that you cannot currently do as they make other changes. But you will be able to soon.

    @artefactodev - I believe I have answered this via email, but for anyone else wondering how to fix it: Add the correct extension. For the metaiosdk rename it to metaiosdk.a. I have no idea why they dropped the extension. Add it and everything will work fine.

    Cheers.
     
    SimteractiveDev likes this.
  19. egomotion

    egomotion

    Joined:
    Sep 6, 2014
    Posts:
    20
    To give everyone a bit of an idea of what is going to be coming in egoXproject here is a brief summary of the planned upcoming features.

    2.1.2 will be available in the next week(ish). This is a bug fix release.

    Then the next set of features that will be rolled out are:
    1. Greatly expanded list of build settings with option to see descriptive names, and a large list of Info.plist settings with option to see descriptive names. This should help make adding changes a lot easier.
    2. tvOS support
    3. Capability support

    There is no release date for these features yet, but they are in development.

    The next none bug fix release will drop support for Unity 4.x.
    i.e. 2.1.2 will continue to support Unity 4.3.4 and above, but when the first of the above features is rolled out the minimum will be Unity 5.x, where x will be as low as possible.

    When tvOS support is added the minimum may start at 5.3.0 as this is when tvOS support was added. If this will be an issue let me know.

    Then, if Apple don't throw too many curve balls this year, work will begin on localization support.

    If there are features you would like to see, let me know

    Thanks.
     
    SimteractiveDev likes this.
  20. egomotion

    egomotion

    Joined:
    Sep 6, 2014
    Posts:
    20
    EgoXproject 2.1.2 is now available. This is a bug fix release
     
  21. sfjohansson

    sfjohansson

    Joined:
    Mar 12, 2013
    Posts:
    369
    Any update on tvOS support?
     
  22. egomotion

    egomotion

    Joined:
    Sep 6, 2014
    Posts:
    20
    bjornrun likes this.
  23. SimteractiveDev

    SimteractiveDev

    Joined:
    Jul 9, 2014
    Posts:
    97
    Hey, just wanted to double check here, is it possible to use EgoXProject to remove a value from the generate plist file? Thanks.
     
  24. Cyross

    Cyross

    Joined:
    Oct 6, 2016
    Posts:
    4
    Hi.
    I use egoXproject 2.1.3 with Unity5.6.1p1 and Xcode8.1.

    I added GoogleMobileAds.framework by your asset (copy/required),

    スクリーンショット 2017-06-05 午後15.35.35 午後.png

    build this project, next I call "pod install", but caused many errors.

    スクリーンショット 2017-06-05 午後16.20.10 午後.png

    and after building by XCode, cause link error (exit code 1)

    スクリーンショット 2017-06-05 午後16.32.58 午後.png

    I know some reason to cause there problems, please tell me.
     
  25. egomotion

    egomotion

    Joined:
    Sep 6, 2014
    Posts:
    20
    @SimteractiveDev No, it is not currently possible to remove existing plist entries. you can only add new entries or override existing entries with new values. And, apologies for the late reply.
     
    SimteractiveDev likes this.
  26. egomotion

    egomotion

    Joined:
    Sep 6, 2014
    Posts:
    20
    @Cyross I have just tested this, excluding the pod step, and it works as expected when copying or linking. I am not sure why you need the pod install step when you already have the library and are using egoXproject to manage its addition to the Xcode project. Are you doing something else with pod or just using it for the google ads?

    Here is what I did:
    1. Downloaded the framework file and added to Unity project
    2. Added the framework to the egoXproject change file as you have done.
    3. Built the iOS project
    4. Built the resulting Xcode project and the build succeeds.

    If you have further issues please email support@egomotion.co.uk for a prompter response :)
     
  27. jGate99

    jGate99

    Joined:
    Oct 22, 2013
    Posts:
    1,945
    @egomotion
    Does it autocompile the xcode project to ipa too?
     
  28. Cyross

    Cyross

    Joined:
    Oct 6, 2016
    Posts:
    4
    I want to use Firebase Unity SDK(https://firebase.google.com/support/release-notes/unity) with egoXproject. Firebase Unity SDK has not enough pod files into Xcode project(e.g. Firebase Messaging pod). So I need manually pod install from Command Console.
    And Firebase Unity SDK recommends to copy GoogleMobileAds.framework at Xcode(not at Unity).
    I want to simplify building process, I introduced egoXproject.
     
  29. egomotion

    egomotion

    Joined:
    Sep 6, 2014
    Posts:
    20
    @JohnGate No. egoXproject only modifies the project file and info plist file with the changes you specify, and copies specified files to the project folder if required.
     
  30. egomotion

    egomotion

    Joined:
    Sep 6, 2014
    Posts:
    20
    @Cyross I have not used Firebase, but a quick look at their site appears to show that you don't need to do use CocoaPods. They provide unity packages for all the modules.

    If you believe the issue is with egoXproject, then please email me at support@egomotion.co.uk (please include your invoice number), and we can work through it. However, I suspect something is not doing what you expect with the CocoaPods part. To work out where the issue is, can you do a clean build with only the CocoaPods stuff and then only with the egoXproject changes. Then we will know where the issue is (CocoaPods, egoXproject, or when they are mixed).
     
  31. egomotion

    egomotion

    Joined:
    Sep 6, 2014
    Posts:
    20
  32. egomotion

    egomotion

    Joined:
    Sep 6, 2014
    Posts:
    20
    EgoXproject 3 is out now.
    • All iOS capabilities are now supported
    • Improved build settings support. Now with descriptive names, and many more built in
    • Embedded framework support.
    • Manage automatic signing and Development Team ID.
    • Scripts can now have custom names.
    See the updated description at the top for screenshots and video.
     
    bjornrun likes this.
  33. egomotion

    egomotion

    Joined:
    Sep 6, 2014
    Posts:
    20
    EgoXproject 3.1 is out now with tvOS support.

    All the same features as iOS, but now also for tvOS:
    • Modify the Info.plist
    • Add system frameworks and libraries
    • Add custom frameworks and libraries
    • Add build settings
    • Configure capabilities, including tvOS specific ones
    • Add post build Xcode scripts
    • Configure and use multiple egoXproject configurations
    • Use the C# scripting interface to control egoXproject
     
  34. egomotion

    egomotion

    Joined:
    Sep 6, 2014
    Posts:
    20
    I am sad to announce that EgoXproject has been discontinued. However, it will remain on the asset store as a free product.

    Due to a change in employment I am unable to continue developing EgoXproject. There will be no further feature updates, but I expect it to continue to work for a long time to come. Over time some features may no longer work as Unity and Xcode evolve.

    If you have previously purchased EgoXproject then support will be provided until the end of 2018. Make sure you include your invoice number in support requests.


    The future of EgoXproject

    At some point later in the year I will release the source code, but I need time to get it into a releasable state and time is sparse.


    Many thanks to everyone who has purchased EgoXproject over the years, the kinds words, and the pestering for features. It has made me very happy to know that I have provided a tool that has been of use to many people.


    Robert.
     
  35. andymads

    andymads

    Joined:
    Jun 16, 2011
    Posts:
    1,614
    That's news I didn't want to hear.
     
  36. newlife

    newlife

    Joined:
    Jan 20, 2010
    Posts:
    1,081
    Hello, is it possible to use EgoXproject to enable capabilities in Unity 5.6 using Cloud Build?
    That is, is it possible to use it as PostprocessBuild?
     
  37. egomotion

    egomotion

    Joined:
    Sep 6, 2014
    Posts:
    20
    • The source code for EgoXproject is now available on GitHub: https://github.com/Egomotion/EgoXproject
    • This is the same code that is in the last release on the Asset Store.
    • I will no longer be developing of EgoXproject, so please fork the code and adapt it as you need.
     
    bjornrun and mike6502 like this.
  38. bjornrun

    bjornrun

    Joined:
    Oct 29, 2013
    Posts:
    88
    Thanks for your fantastic work, and making it open source!
     
  39. cakebcz

    cakebcz

    Joined:
    Jul 21, 2015
    Posts:
    1
    XcodeEditor.SetActiveConfigutation is misspelled. Should be XcodeEditor.SetActiveConfiguration.
     
  40. pistoleta

    pistoleta

    Joined:
    Sep 14, 2017
    Posts:
    539
    is this still working on 2019.2.20 ?
     
  41. novaVision

    novaVision

    Joined:
    Nov 9, 2014
    Posts:
    518
    Seems really cool tool, but I got some doubts about conflicts what could be cause with another post processors, usually provided in some important assets and SDK. Does this tool checks existing keys and references added by 3rd party assets? Otherwise it will create multiple references...
     
  42. andymads

    andymads

    Joined:
    Jun 16, 2011
    Posts:
    1,614
    We use it alongside other third-party plugins/sdks and it's fine. I believe it's free now so why not try it yourself and see?