Search Unity

Advanced Builder - Manage multiple versions of your game

Discussion in 'Assets and Asset Store' started by PygmyMonkey, Jan 13, 2014.

  1. PygmyMonkey

    PygmyMonkey

    Joined:
    Jan 13, 2014
    Posts:
    306
    Hello,

    I'm not sure I really understand the question.
    When you build with Android & iOS for example, the time it takes to complete the entire builds is the time it takes to build for Android AND iOS yes.
    Maybe you want me to add a feature to display the time a build took?
     
  2. PygmyMonkey

    PygmyMonkey

    Joined:
    Jan 13, 2014
    Posts:
    306
    This is in the list of features to add to Advanced Builder, nearly at the top.
    Sorry but you'll have to wait a little to have this :(
     
  3. PygmyMonkey

    PygmyMonkey

    Joined:
    Jan 13, 2014
    Posts:
    306
    Hello,

    You're 100% right, you should not have to worry about doing these things via code, but this is a "first" version of Advanced Builder, doing what you're talking about is in the feature list and will be available as soon as I finish other "more important" features. But yes, there will be something like that :)

    Also for moving AdvancedBuilder, again you're right, the path to the file should not be hard coded, it's also something I will get rid of (the AppParameter.cs file) so you'll not have this issue with future updates.
    In the meantime, if you want to fix this, you can :
    - open AppParametersHelper.cs and fix the path of AppParametersFilePath to your custom path
    - search for AdvancedBuilder.asset in your code, you should find 2 lines (3 in a future version) with paths that you'll have to change.

    Hope this helps ;)
     
    AnomalusUndrdog likes this.
  4. AnomalusUndrdog

    AnomalusUndrdog

    Joined:
    Jul 3, 2009
    Posts:
    1,553
    Thank you for that! It's just that it's been in "first" version for such a considerable amount of time already. Can you at least tell us what these "more important" features are?

    Nevertheless, I appreciate it that you are listening.

    Bttw, a minor bug: Advanced Builder tells me that I can't build to iOS in Windows, but that isn't true anymore. You can, at least, create the Xcode project in Windows. Sometimes I want to do this so I could just copy the Xcode project to our Mac, ready for building.
     
  5. PygmyMonkey

    PygmyMonkey

    Joined:
    Jan 13, 2014
    Posts:
    306
    AnomalusUndrdog likes this.
  6. EmeralLotus

    EmeralLotus

    Joined:
    Aug 10, 2012
    Posts:
    1,462
    I've been using Utomate, can someone explain how this tool is different ?
     
  7. sowatnow

    sowatnow

    Joined:
    Jun 12, 2014
    Posts:
    309
    Hi

    I am using Unity Free version, but i can't seem to get this to work.
    I am using single platform at a time, still no luck.
    Reading the description on asset store, i though this would work with free unity version (except multiple builds can't be performed at the same time).

    Perform build button is either light green or yellow and can't click on it.

    I am getting two warnings saying Sorry, advanced builder requires unity pro....
     
  8. OnePxl

    OnePxl

    Joined:
    Aug 6, 2012
    Posts:
    307
    Unity Free does not give scripting access to actually start the build process. The description of this asset states that you will have to start every build manually with Unity Free; so not from the Advanced Builder window, but from the Unity build menu.
     
  9. PygmyMonkey

    PygmyMonkey

    Joined:
    Jan 13, 2014
    Posts:
    306
    Hello there,

    I've never used uTomate so I can't really replied, but for what I see, with uTomate you can repeat some tasks (builds too), but is not as powerful as Advanced Builder when it comes to features to build your project.
    With Advanced Player, you can define multiple release types (alpha, beta, release), use custom pre/post build scripts, detect in-game what version you've been building etc...
     
  10. PygmyMonkey

    PygmyMonkey

    Joined:
    Jan 13, 2014
    Posts:
    306
    Hello,

    As said OnePxl (thanks for answering!), using Unity Free, you can have multiple configurations but you have to manually build each one of them. So using Advanced Player, you create any number of configurations you want (Android Alpha, iOS Beta, Windows x86 Release etc...), then before building, you press a button ton "switch" to this configuration, and then you can manually build your project. And you'll have to do this manually for each configuration.
     
  11. sowatnow

    sowatnow

    Joined:
    Jun 12, 2014
    Posts:
    309
    I am bit lost.
    All I want to know is, Can I create an android built using this program while my default platform is pc?
    I know i have to switch to android to create android built, but it takes time.
     
  12. PygmyMonkey

    PygmyMonkey

    Joined:
    Jan 13, 2014
    Posts:
    306
    Hello there!

    Yes you can create an Android build with your default platform being PC.
    BUT, the thing is that, it will still switch platform automatically for you. What will happen automatically is this:
    - Current platform : PC
    - Switch to Android platform (will take time depending on the size of your project)
    - Build the Android project
    - Switch back to the first platform (PC) (again, will take time depending on the size of your project).

    The goal of Advanced Builder, is that you just need to specify which platform you want to support, some configuration for each build (name of the app, package name etc...) and then with one press of a button, it will automatically build x projects for you.
    It's the same thing as you doing this manually, except you won't forget to change a variable or platform or anything and all of that will be automatically done.
     
  13. niraj

    niraj

    Joined:
    Feb 14, 2013
    Posts:
    56
    Hello pygMyMonkey,

    This tools really looks great and i want to buy this for sure. But just want to ask you a question for confirmation. Actually i have a Windows machine and don't have MAC. I want to develop for ANDROID AND IOS then what i require along with this asset? I have Android SDK specified in External Tools within Unity whic is meant for Android development. What should i further do to make several platform apps from Windows machine?

    Thanks and Regards
    Niraj Vishwakarma
     
  14. PygmyMonkey

    PygmyMonkey

    Joined:
    Jan 13, 2014
    Posts:
    306
    Hello Niraj,
    Thanks for the kind words :)

    Using a Windows machine, you can develop for iOS and try the game in the Unity editor, but you CANNOT build a iOS project on a Windows machine. For that you absolutely need a Mac.

    Using a Windows machine though, you can target (and build) all other platforms except for iOS.

    Hope this answer your questions!
     
  15. niraj

    niraj

    Joined:
    Feb 14, 2013
    Posts:
    56
    Thank you very much for your kind answer. Appreciating you :)
     
  16. PygmyMonkey

    PygmyMonkey

    Joined:
    Jan 13, 2014
    Posts:
    306
    Anytime ;)
     
  17. fidelsoto

    fidelsoto

    Joined:
    Aug 7, 2012
    Posts:
    87
    Hi, does this allow to build for different platforms without having to go through the long process of switching platforms in Unity free?
     
  18. PygmyMonkey

    PygmyMonkey

    Joined:
    Jan 13, 2014
    Posts:
    306
    Hello!

    Unfortunately not right now, this is something I might add in the future. Using Advanced Builder, you could set up a configuration to build in one click for 3-4 platforms for example, and just leave your computer alone for multiple minutes (or hours if you have a big project).
    There is an asset that seems to be perfect for you on the Asset Store, it's called "Fast Platform Switch", right here: https://www.assetstore.unity3d.com/en/#!/content/11134
     
    fidelsoto likes this.
  19. cesarpo

    cesarpo

    Joined:
    Jun 8, 2013
    Posts:
    97
    I did a quick hack to get platform definitions as compiler defines:

    Code (CSharp):
    1.         public static void GenerateAppParameters(ProductParameters productParameters, ReleaseTypes releaseTypes, Platforms platforms, ReleaseType currentReleaseType, PlatformProperties currentPlatformProperties, DistributionPlatform currentDistributionPlatform, PlatformArchitecture currentPlatformArchitecture, ITextureCompression currentTextureCompression)
    2.         {
    3.             List<string> appParametersLineList = GetAppParametersStringList(releaseTypes, platforms);
    4.        
    5.             appParametersLineList.Add("\t/*");
    6.             appParametersLineList.Add("\t * App parameters");
    7.             appParametersLineList.Add("\t */");
    8.             appParametersLineList.Add("\tpublic static ReleaseType CurrentReleaseType = ReleaseType." + currentReleaseType.name + ";");
    9.             appParametersLineList.Add("\tpublic static PlatformType CurrentPlatformType = PlatformType." + currentPlatformProperties.platformType.ToString() + ";");
    10.             appParametersLineList.Add("\tpublic static DistributionPlatform CurrentDistributionPlatform = DistributionPlatform." + currentDistributionPlatform.name.Replace(" ", string.Empty) + ";");
    11.             appParametersLineList.Add("\tpublic static PlatformArchitecture CurrentPlatformArchitecture = PlatformArchitecture." + currentPlatformArchitecture.buildTarget + ";");
    12.             appParametersLineList.Add("\tpublic static TextureCompression CurrentTextureCompression = TextureCompression." + currentTextureCompression.getName() + ";");
    13.             appParametersLineList.Add("\tpublic static string CurrentAppProductName = \"" + currentReleaseType.productName + "\";");
    14.             appParametersLineList.Add("\tpublic static string CurrentAppBundleIdentifier = \"" + currentReleaseType.bundleIdentifier + "\";");
    15.             appParametersLineList.Add("\tpublic static string CurrentAppBundleVersion = \"" + productParameters.bundleVersion + "\";");
    16.             appParametersLineList.Add("}");
    17.  
    18.             File.WriteAllLines(AppParametersFilePath, appParametersLineList.ToArray());
    19.            
    20.             GenerateSmcs(currentDistributionPlatform.name);
    21.            
    22.             Utils.RefreshAssets();
    23.         }
    24.                
    25.         public static void GenerateSmcs(string content)
    26.         {
    27.             File.WriteAllText(string.Format("{0}/smcs.rsp", Application.dataPath), string.Format("-define:{0}", content));
    28.         }
    29.  
    So if I define platforms like this:

    upload_2014-10-2_1-49-7.png

    Then I can use this in my code:

    Code (CSharp):
    1. #if GOOGLE_PLAY
    2.         Debug.Log('google')
    3. #endif
    I'm pretty sure you can do much better than this.

    BTW, this works perfectly in Unity Free
     
  20. PygmyMonkey

    PygmyMonkey

    Joined:
    Jan 13, 2014
    Posts:
    306
    Hello Cesar!

    Thanks for sharing this with others :)
    I will put custom defines at the top of the TODO list so it's available as soon as possible!

    An update (1.2.6) will soon arrive on the Asset Store, and break what you've just did, but I'll try to add this "natively" as soon as I can!
     
  21. PygmyMonkey

    PygmyMonkey

    Joined:
    Jan 13, 2014
    Posts:
    306
    Hello everyone,

    An update is now available on the Asset Store!
    Mainly adding support for BlackBerry, Windows Phone 8 and Windows Store 8.

    Here's the changelog:
    Version 1.2.6
    - NEW: Added a custom build example showing you how you can chose different scenes depending on the release type you're building.
    - NEW: Added a custom build example that will automatically set your Android keystore password.

    Version 1.2.5
    - FIX: Updated documentation
    - NEW: Improved the way 'Project Configuration' works, so you can easily try multiple configuration directly in the Unity Editor without switching platforms.
    This update will probably create some errors in your scripts if you were using the AppParameters class and/or custom build scripts.
    - To access data via AppParameters, you will now need to call "AppParameters.Get.DATA" where DATA is the data you want to retrieve (for example, to retrieve the release type, you would call: AppParameters.Get.releaseType).
    - For custom build scripts, the OnPreBuild/OnPostBuild methods now take strings instead of enums as parameters.
     
  22. TokyoDan

    TokyoDan

    Joined:
    Jun 16, 2012
    Posts:
    1,080
    Can this asset help me get around this problem:

    I am using Unibill for OSX Standalone builds, and Prime31 Storekit for iOS builds...in the same project.
    Of course I am using platform dependent compilation directives in my source code to include/exclude the corresponding function calls to the corresponding libraries. But I still get this error when I build to iOS.

    "Error building Player: SystemException: Duplicate native method found : _storeKitRequestProductData. Please check your source carefully."

    I think this is due to both the Unibill and Prime31 libraries being in the project at the same time. When I call StoreKitBinding.requestProductData(), Unity doesn't know which _storeKitRequestProductData to link in.

    Is there a solution to this without having to make two unique projects? (Maybe there is a way to have Unity, at build time, exclude the Unibill assets in my Project.)
     
  23. PygmyMonkey

    PygmyMonkey

    Joined:
    Jan 13, 2014
    Posts:
    306
    Hello!

    Hum...
    One way to do that easily, might just be to remove all the iOS code used in Unibill since you're not using it, so that you won't have any error with "_storeKitRequestProductData".
    But if you want to exclude resources at build time, yes, you can use Advanced Builder to do that :)

    This is quite simple, you just have to create a custom build script that implements the IAdvancedCustomBuild interface, and implement the two method OnPreBuild and OnPostBuild.
    Inside OnPreBuild, you can move a folder (wherever you want) before a build, and in the OnPostBuild method, you could bring it back :)
    If you want to see some examples of custom builds, check the documentation right here: http://pygmymonkey.com/tools/advanced-builder/custom-builds.html
     
  24. TokyoDan

    TokyoDan

    Joined:
    Jun 16, 2012
    Posts:
    1,080
  25. imurashka

    imurashka

    Joined:
    Aug 5, 2012
    Posts:
    20
    Hi to all!
    I made one improvement for "Scripting Define Symbols". And I want to share it with you.
    1) Add new member in DistributionPlatform class
    Code (CSharp):
    1. /*
    2. * The distributionplatform defines
    3. */
    4. public string defines;
    2) Change method drawInspector() in DistributionsPlatformRenderer class
    Code (CSharp):
    1. /*
    2.     * Draw in inspector
    3.     */
    4. public void drawInspector()
    5. {
    6.     Utils.DrawCategoryLabel("Distribution platforms");
    7.     foreach (DistributionPlatform distributionPlatform in m_distributionPlatformList)
    8.     {
    9.         EditorGUILayout.BeginHorizontal();
    10.         distributionPlatform.isActive = EditorGUILayout.Toggle(distributionPlatform.isActive, GUILayout.Width(15f));
    11.         //Debug.Log("ab_platform_" + distributionPlatform.name + ": " + distributionPlatform.isActive);
    12.         bool expanded = Utils.DrawHeader(distributionPlatform.name, "ab_platform_" + distributionPlatform.name);
    13.         GUI.backgroundColor = Color.red;
    14.         if (GUILayout.Button("x", GUILayout.Width(25f)))
    15.         {
    16.             m_distributionPlatformList.Remove(distributionPlatform);
    17.             return;
    18.         }
    19.         GUI.backgroundColor = Color.white;
    20.         EditorGUILayout.EndHorizontal();
    21.  
    22.         if (expanded)
    23.         {
    24.             Utils.BeginContents();
    25.             GUI.color = distributionPlatform.isNameValid() ? Colors.Default : Colors.Red;
    26.             distributionPlatform.name = EditorGUILayout.TextField("Name", distributionPlatform.name);
    27.             EditorPrefs.SetBool("ab_platform_" + distributionPlatform.name, true);
    28.             GUI.color = Colors.Default;
    29.             distributionPlatform.defines = EditorGUILayout.TextField("Defines", distributionPlatform.defines);
    30.             Utils.EndContents();
    31.         }
    32.     }
    33.  
    34.     EditorGUILayout.BeginVertical(Style.CenterMarginStyle);
    35.     {
    36.         if (GUILayout.Button("Add distribution platform"))
    37.         {
    38.             m_distributionPlatformList.Add(new DistributionPlatform("Distribution Platform XXX", true));
    39.         }
    40.     }
    41.     EditorGUILayout.EndVertical();
    42. }
    3) Add new method in Utils class for converting from BuildTarget to BuildTargetGroup
    Code (CSharp):
    1. public static BuildTargetGroup ConvertToGroup(this BuildTarget buildTarget)
    2. {
    3.     BuildTargetGroup targetGroup = BuildTargetGroup.Unknown;
    4.     switch (buildTarget)
    5.     {
    6.         case BuildTarget.WebPlayer:
    7.         case BuildTarget.WebPlayerStreamed:
    8.             targetGroup = BuildTargetGroup.WebPlayer;
    9.             break;
    10.         case BuildTarget.StandaloneOSXIntel:
    11.         case BuildTarget.StandaloneOSXIntel64:
    12.         case BuildTarget.StandaloneOSXUniversal:
    13.         case BuildTarget.StandaloneLinux:
    14.         case BuildTarget.StandaloneLinux64:
    15.         case BuildTarget.StandaloneLinuxUniversal:
    16.         case BuildTarget.StandaloneWindows:
    17.         case BuildTarget.StandaloneWindows64:
    18.             targetGroup = BuildTargetGroup.Standalone;
    19.             break;
    20.         case BuildTarget.iPhone:
    21.             targetGroup = BuildTargetGroup.iPhone;
    22.             break;
    23.         case BuildTarget.PS3:
    24.             targetGroup = BuildTargetGroup.PS3;
    25.             break;
    26.         case BuildTarget.XBOX360:
    27.             targetGroup = BuildTargetGroup.XBOX360;
    28.             break;
    29.         case BuildTarget.Android:
    30.             targetGroup = BuildTargetGroup.Android;
    31.             break;
    32.         case BuildTarget.StandaloneGLESEmu:
    33.             targetGroup = BuildTargetGroup.GLESEmu;
    34.             break;
    35.         case BuildTarget.NaCl:
    36.             targetGroup = BuildTargetGroup.NaCl;
    37.             break;
    38.         case BuildTarget.FlashPlayer:
    39.             targetGroup = BuildTargetGroup.FlashPlayer;
    40.             break;
    41.         case BuildTarget.MetroPlayer:
    42.             targetGroup = BuildTargetGroup.Metro;
    43.             break;
    44.         case BuildTarget.WP8Player:
    45.             targetGroup = BuildTargetGroup.WP8;
    46.             break;
    47.         case BuildTarget.BlackBerry:
    48.             targetGroup = BuildTargetGroup.BlackBerry;
    49.             break;
    50.         case BuildTarget.Tizen:
    51.             targetGroup = BuildTargetGroup.Tizen;
    52.             break;
    53.         case BuildTarget.PSP2:
    54.             targetGroup = BuildTargetGroup.PSP2;
    55.             break;
    56.         case BuildTarget.PS4:
    57.             targetGroup = BuildTargetGroup.PS4;
    58.             break;
    59.         case BuildTarget.PSM:
    60.             targetGroup = BuildTargetGroup.PSM;
    61.             break;
    62.         case BuildTarget.XboxOne:
    63.             targetGroup = BuildTargetGroup.XboxOne;
    64.             break;
    65.         case BuildTarget.SamsungTV:
    66.             targetGroup = BuildTargetGroup.SamsungTV;
    67.             break;
    68.         default:
    69.             throw new ArgumentOutOfRangeException("buildTarget");
    70.     }
    71.     return targetGroup;
    72. }
    4) In PlatformBuilder.performBuild(IPlatform platform) method after
    Code (CSharp):
    1. PlayerSettings.bundleIdentifier = m_releaseType.bundleIdentifier;
    2. PlayerSettings.bundleVersion = m_advancedBuilder.getProductParameters().bundleVersion;
    3. PlayerSettings.productName = m_releaseType.productName;
    Insert one more line
    Code (CSharp):
    1. PlayerSettings.SetScriptingDefineSymbolsForGroup(platformArchitecture.buildTarget.ConvertToGroup(), distributionPlatform.defines);
    Now you can add defines for each distribution platform.

    5) Now you can add one more improvement. In ProjectConfigurationRenderer.drawInspector() method after
    Code (CSharp):
    1. foreach (ITextureCompression textureCompression in platformProperties.getActiveTextureCompressionList())
    2. {
    3.     bool isCurrentConfig = isCurrentConfiguration(releaseType, platformProperties, distributionPlatform, platformArchitecture, textureCompression);
    4.     GUI.color = isCurrentConfig ? Color.green : Color.white;
    5.     GUI.enabled = !isCurrentConfig;
    6.  
    7.     GUILayout.BeginHorizontal();
    8.     {
    9.         if (GUILayout.Button("Set"))
    10.         {
    11.             AppParameters.Get.updateParameters(releaseType.getFormattedName(), platformProperties.getFormattedPlatformType(), distributionPlatform.getFormattedName(), platformArchitecture.getFormattedName(), textureCompression.getName(), releaseType.productName, releaseType.bundleIdentifier, m_advancedBuilder.getProductParameters().bundleVersion);
    Add one more line
    Code (CSharp):
    1. PlayerSettings.SetScriptingDefineSymbolsForGroup(platformArchitecture.buildTarget.ConvertToGroup(), distributionPlatform.defines);
    Now after pressing button "Set" in "Project Configurations" all defines will setup.

    Thanks!
     

    Attached Files:

    Last edited: Dec 17, 2014
  26. PygmyMonkey

    PygmyMonkey

    Joined:
    Jan 13, 2014
    Posts:
    306
    Hi Ivan!

    Thanks for sharing this with others!
    In the future I'll add support for defining defines for everything (release types, platforms, texture compressions and distribution platforms).
     
  27. Cheshire Cat

    Cheshire Cat

    Joined:
    Sep 18, 2012
    Posts:
    39
  28. PygmyMonkey

    PygmyMonkey

    Joined:
    Jan 13, 2014
    Posts:
    306
    Hello :)

    I've always wanted to take time to learn about Jenkins and Ant but never did... so you'll have to tell me a little bit more about what you want to do or ask specific questions about Advanced Builder :)
    If it's too long, you can email me at "tools at pygmymonkey.com"

    Have a nice day!
     
  29. Cheshire Cat

    Cheshire Cat

    Joined:
    Sep 18, 2012
    Posts:
    39
    Here you can find a great tutorial about how to integrate Jenkins and Unity 3D. Actually the whole issue ends up with calling Unity command line with specific arguments, so if your product works that way as well, it seems to be easy.
    In general, Jenkins is de-facto standard continuous integration tool which is heavily used in all that building mess, so i think it would be worth to AdvanceBuilder to make the integration with it.
     
    Last edited: Dec 31, 2014
  30. PygmyMonkey

    PygmyMonkey

    Joined:
    Jan 13, 2014
    Posts:
    306
    Thanks for the link! Will look into it.
    And yes, there is a public static method that you can call directly when launching Unity with command line to trigger all the builds configured with AdvancedBuilder. It's just AdvancedBuilder.PerformBuild();

    I hope I'll have time to look into it and make an awesome integration, I'll add it to the roadmap :)
     
  31. Cheshire Cat

    Cheshire Cat

    Joined:
    Sep 18, 2012
    Posts:
    39
    Another question - is it possible to configure Android PlayerSettings "Split binary" option with AdvanceBuilder?
     
  32. PygmyMonkey

    PygmyMonkey

    Joined:
    Jan 13, 2014
    Posts:
    306
    Hum, the thing with this, is that you need to download the "Google Play OBB Downloader" from Unity, add some code to your project (that requires this Unity addon) etc...
    It's not "natively" supported in the Unity Editor and users who want to do that have to go through some extra steps.
    It's a process that requires some time from the developer, and I can't fully automate it, so I prefer that it remains as it is, that developer add this to their project themselves.

    The goal of Advanced Builder is not to do things like that, but rather automate the build process and deal with multiple configurations. Once you've configured it using the Google Play OBB Downloader from Unity, it will be there and will work with Advanced Builder.

    Have a great day ;)
     
  33. Cheshire Cat

    Cheshire Cat

    Joined:
    Sep 18, 2012
    Posts:
    39
    Sure, I'm aware of all that stuff, what I'm talking about is to possibility to check/uncheck the "Split Binary" checkbox in Android Player Settings. The scenario is to create two builds, one as the single .APK file and another as the splited with OBB part, that's it. Pure configuration issue at a build time, which does not involve OBB downloader at all.
     
  34. PygmyMonkey

    PygmyMonkey

    Joined:
    Jan 13, 2014
    Posts:
    306
    Oh sorry!
    So in order to do that, you just define two release types (Full, Split) for example, so you will generate two builds with AdvancedBuilder.

    Then you have to create a custom build script, see an example of it in AdvancedBuilder/Example/Editor/ and the documentation here http://pygmymonkey.com/tools/advanced-builder/custom-builds.html
    What you want to do, is in the OnPreBuild method, you check the releaseType, if it's "Full", you do nothing, if it's "Split", you do PlayerSettings.Android.useAPKExpansionFiles = true; and in the OnPostBuild method you set it back to what it was PlayerSettings.Android.useAPKExpansionFiles = false;

    Here is the code that should do it:
    Code (csharp):
    1.  
    2. public void OnPreBuild(string releaseType, string platformType, string distributionPlatform, string platformArchitecture, string textureCompression)
    3. {
    4.     if (releaseType.Equals("Split"))
    5.     {
    6.         PlayerSettings.Android.useAPKExpansionFiles = true;
    7.     }
    8. }
    9.  
    10. public void OnPostBuild(string releaseType, string platformType, string distributionPlatform, string platformArchitecture, string textureCompression)
    11. {
    12.     PlayerSettings.Android.useAPKExpansionFiles = false;
    13. }
    14.  
    Then don't forget to drag and drop your custom build script in the AdvancedBuilder window in the AdvancedSettings part (inside Custom build).

    If you have trouble doing anything, tell me :)
     
  35. imurashka

    imurashka

    Joined:
    Aug 5, 2012
    Posts:
    20
    Hi, PygmyMonkey!

    Are you planning to add support for version 5.x?
     
  36. PygmyMonkey

    PygmyMonkey

    Joined:
    Jan 13, 2014
    Posts:
    306
    Hey Ivan!

    I'm currently working on a medium update, and once I'm done, I'll try Advanced Builder on Unity 5.x to see if there is any problem. But I don't see any reason why it should not work with Unity 5.x out of the box :)
    Did you gave it a try?

    Edit: I've just fixed everything related to Unity 5, it will be available in 1.3.2 soon!
     
    Last edited: Feb 13, 2015
  37. PygmyMonkey

    PygmyMonkey

    Joined:
    Jan 13, 2014
    Posts:
    306
    Hello everyone,

    An update is now available on the Asset Store!
    Mainly adding support for custom defines and scenes per configuration as a lot of people asked for this!

    Here's the changelog:
    Version 1.3.1
    - NEW You can now manage the scenes you want to build per configuration.

    Version 1.3.0
    - NEW Added configurations. You now have a list of configurations defined by all the release types, platforms, platform architectures, distribution platforms and texture compression you selected. With each configuration, you can see all the build info, directly build a configuration and apply a configuration to the UnityEditor to test your configuration directly in the Editor without the need to build or switch platform.
    - NEW Add support for custom compilation defines. Now you can define your custom defines for each configuration. There is also some default defines created by AdvancedBuilder based on the parameters of the configuration.
     
  38. mimminito

    mimminito

    Joined:
    Feb 10, 2010
    Posts:
    780
    Superb update! Thanks for the continued support on this. I feel more customisation with App Parameters could be done, any chance of a roadmap you have?
     
  39. mimminito

    mimminito

    Joined:
    Feb 10, 2010
    Posts:
    780
    Hi,

    I have updated to 1.3.1, but I have an issue with how you have implemented the scene selection. If I want to share two scenes, I cant seem to do that. For example, I may want to share a Splash scene and a MainMenu scene, but then add custom scenes per platform. If I add the Splash and MainMenu to one configuration, I cannot add it to another. Is this supposed to be the case?

    I would just use the custom build script but it shows an error when no scenes are defined...
     
  40. PygmyMonkey

    PygmyMonkey

    Joined:
    Jan 13, 2014
    Posts:
    306
    Thanks a lot!
    Can you tell me a bit more on what you want/need in AppParameters? :)

    That's a mistake on my part :/
    I briefly saw that a moment, and couldn't figure out a way to reproduce it, so thanks! I'm working on it right now.
    Though, one way to bypass that for now, is just to remove one of the scenes you've added, and the list of available scenes should update correctly.
     
  41. mimminito

    mimminito

    Joined:
    Feb 10, 2010
    Posts:
    780
    Hi,

    For now I have just commented out the code which does the available scene checks, allows me to add anything I want but does allow me to add the same scene twice (minor thing, I can read though :p).

    As for the AppParameters, ill have a proper think about it, but I was thinking about this the other day and came up with some other uses.
     
  42. PygmyMonkey

    PygmyMonkey

    Joined:
    Jan 13, 2014
    Posts:
    306
    The issue is now fixed and will be available in 1.3.2 when Unity will approve it :)
    I'll be glad if you could send me an email at tools@pygmymonkey.com with what you want added to AppParameters!

    Have a nice day.
     
  43. mimminito

    mimminito

    Joined:
    Feb 10, 2010
    Posts:
    780
    Thanks, ill send over my thoughts when I have some time to compile them :)
     
  44. imurashka

    imurashka

    Joined:
    Aug 5, 2012
    Posts:
    20
    Hi PygmyMonkey!

    Thanks for WebGL support :)

    I have one more a little suggestion:
    Change code in AdvancedSettingsRenderer.cs
    Code (CSharp):
    1. EditorGUILayout.BeginHorizontal();
    2. {
    3.     EditorGUILayout.LabelField("$BUILD_DATE", GUILayout.Width(145f));
    4.     EditorGUILayout.LabelField("The build date (format: yy-MM-dd HHhmm)");
    5. }
    6. EditorGUILayout.EndHorizontal();
    7.  
    8. EditorGUILayout.BeginHorizontal();
    9. {
    10.     EditorGUILayout.LabelField("$RELEASE_TYPE", GUILayout.Width(145f));
    11.     EditorGUILayout.LabelField("The release type");
    12. }
    13. EditorGUILayout.EndHorizontal();
    14.  
    15. EditorGUILayout.BeginHorizontal();
    16. {
    17.     EditorGUILayout.LabelField("$PLATFORM", GUILayout.Width(145f));
    18.     EditorGUILayout.LabelField("The platform (example: iOS, Android, Mac...)");
    19. }
    20. EditorGUILayout.EndHorizontal();
    21.  
    22. EditorGUILayout.BeginHorizontal();
    23. {
    24.     EditorGUILayout.LabelField("$DISTRIB_PLATFORM", GUILayout.Width(145f));
    25.     EditorGUILayout.LabelField("The distribution platform (example: Google Play, Apple Store...)");
    26. }
    27. EditorGUILayout.EndHorizontal();
    28.  
    29. EditorGUILayout.BeginHorizontal();
    30. {
    31.     EditorGUILayout.LabelField("$ARCHITECTURE", GUILayout.Width(145f));
    32.     EditorGUILayout.LabelField("The platform architecture (Universal, x86, x64...)");
    33. }
    34. EditorGUILayout.EndHorizontal();
    To:
    Code (CSharp):
    1. EditorGUILayout.BeginHorizontal();
    2. {
    3. EditorGUILayout.TextField("$BUILD_DATE", GUILayout.Width(145f));
    4. EditorGUILayout.LabelField("The build date (format: yy-MM-dd HHhmm)");
    5. }
    6. EditorGUILayout.EndHorizontal();
    7.  
    8. EditorGUILayout.BeginHorizontal();
    9. {
    10. EditorGUILayout.TextField("$RELEASE_TYPE", GUILayout.Width(145f));
    11. EditorGUILayout.LabelField("The release type");
    12. }
    13. EditorGUILayout.EndHorizontal();
    14.  
    15. EditorGUILayout.BeginHorizontal();
    16. {
    17. EditorGUILayout.TextField("$PLATFORM", GUILayout.Width(145f));
    18. EditorGUILayout.LabelField("The platform (example: iOS, Android, Mac...)");
    19. }
    20. EditorGUILayout.EndHorizontal();
    21.  
    22. EditorGUILayout.BeginHorizontal();
    23. {
    24. EditorGUILayout.TextField("$DISTRIB_PLATFORM", GUILayout.Width(145f));
    25. EditorGUILayout.LabelField("The distribution platform (example: Google Play, Apple Store...)");
    26. }
    27. EditorGUILayout.EndHorizontal();
    It will be more handy to make path for build (ctrl+c, ctrl+v)

    Thank you!
     
    mimminito likes this.
  45. PygmyMonkey

    PygmyMonkey

    Joined:
    Jan 13, 2014
    Posts:
    306
    Hey :)

    That's a great idea, I've changed that to SelectableLabel instead of TextField, I think it's more appropriate.

    Code (csharp):
    1. EditorGUILayout.SelectableLabel("$BUILD_DATE", GUILayout.Width(145f), GUILayout.Height(15f));
    It'll be there in the next version (I don't know when though...)
     
    mimminito likes this.
  46. mimminito

    mimminito

    Joined:
    Feb 10, 2010
    Posts:
    780
    This is such a fantastic tool. I use it in every project I work on in Unity, saves me so much time and effort!!! Thanks for the continued support
     
  47. PygmyMonkey

    PygmyMonkey

    Joined:
    Jan 13, 2014
    Posts:
    306
    Thanks a lot! I'm really happy to hear (read? :D) that!
    If you haven't already, you leave 5 stars + a nice comment on the Asset Store, this will help a lot!
     
  48. mimminito

    mimminito

    Joined:
    Feb 10, 2010
    Posts:
    780
    Just done it :)
     
  49. mimminito

    mimminito

    Joined:
    Feb 10, 2010
    Posts:
    780
    I just updated and I am getting errors that it cannot find the MobileTextureSubtarget. I assume this is a Unity 5 only component?

    I fixed it by adding in UNITY_4_6 defines where it was otherwise looking for Unity 5
     
  50. PygmyMonkey

    PygmyMonkey

    Joined:
    Jan 13, 2014
    Posts:
    306
    Damn! I tested with 4.1, 4.2, 4.3, 4.4, 4.5 and 5.0 but not 4.6...
    Thanks a lot! It's fixed and version 1.3.3 is waiting for approval from the Asset Store ;)

    Also thank you so much for the review!
     
    mimminito likes this.