Search Unity

  1. Unity 2017.2 beta is now available for download.
    Dismiss Notice
  2. Unity 2017.1 is now released.
    Dismiss Notice
  3. Introducing the Unity Essentials Packs! Find out more.
    Dismiss Notice
  4. Check out all the fixes for 5.6 on the patch releases page.
    Dismiss Notice
  5. Help us improve the editor usability and artist workflows. Join our discussion to provide your feedback.
    Dismiss Notice

egoXproject - Tame and automate your Unity iOS builds

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

  1. egomotion

    egomotion

    Joined:
    Sep 6, 2014
    Posts:
    16
    EgoXproject is an Editor plugin for Unity to allow iOS Xcode projects to be modified to meet your project’s requirements. All modifications are applied automatically when the project is built. It allows builds to:
    • Add frameworks and libraries
    • Add additional files (e.g. bundles and source files)
    • Add post build scripts
    • Modify build settings
    • Modify the Info.plist

    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 modularized, and plugins to have their own set of changes.
    • The code is written entirely in C#, and Xcode project and Info.plist changes are set up using intuitive Unity Editor Windows.
    • Build configurations can be set manually using the GUI, or via scripts for integration into build pipelines.
    • Xcode project changes can be configured on OS X or Windows versions of Unity, but the actual Xcode build has to be done in OS X.
    • EgoXproject plays nicely with SCM systems. All configurations files are human readable PLists 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 well with build automation systems like the Multiplatform Toolkit. Use the scripting interface to set the configuration to build, and make your Debug, Ad Hoc and Release builds a single click.
    • 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.​



    [​IMG]


    [​IMG]
    [​IMG]

    [​IMG]
     
    Last edited: Jul 10, 2015
  2. bjornrun

    bjornrun

    Joined:
    Oct 29, 2013
    Posts:
    78
    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:
    16
    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:
    78
  5. egomotion

    egomotion

    Joined:
    Sep 6, 2014
    Posts:
    16
    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:
    16
    egoXproject 1.0.3 is now available with support for Unity 5.
     
  7. egomotion

    egomotion

    Joined:
    Sep 6, 2014
    Posts:
    16
    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:
    78
    How do I add build setting: Enable Objective-C exceptions?
     
  9. egomotion

    egomotion

    Joined:
    Sep 6, 2014
    Posts:
    16
    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:
    78
    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:
    16
    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,330
    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. artefactodev

    artefactodev

    Joined:
    Mar 13, 2014
    Posts:
    10
    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:
    16
    @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:
    16
    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:
    16
    EgoXproject 2.1.2 is now available. This is a bug fix release
     
  21. sfjohansson

    sfjohansson

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

    egomotion

    Joined:
    Sep 6, 2014
    Posts:
    16
    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:
    2
    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:
    16
    @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:
    16
    @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. JohnGate

    JohnGate

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

    Cyross

    Joined:
    Oct 6, 2016
    Posts:
    2
    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:
    16
    @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:
    16
    @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:
    16