- Android Resolver now monitors the Android SDK path when auto-resolution is enabled and triggers resolution when the path is modified.
- Android auto-resolution is now delayed by 3 seconds when the following build
settings are changed:
- Target ABI.
- Gradle build vs. internal build.
- Project export.
- Added a progress bar display when AARs are being processed during Android resolution.
- Fixed incorrect Android package version selection when a mix of version-locked and non-version-locked packages are specified.
- Fixed non-deterministic Android package version selection to select the highest version of a specified package rather than the last package specification passed to the Gradle resolution script.
- Added workaround for broken AndroidManifest.xml variable replacement in Unity 2018.x. By default ${applicationId} variables will be replaced by the bundle ID in the Plugins/Android/AndroidManifest.xml file. The behavior can be disabled via the Android Resolver settings menu.
- Fixed spurious warning message about missing Android plugins directory on Windows.
- Fixed spurious warning message about missing Android plugins directory.
- Fixed resolution of Android dependencies when the
Assets/Plugins/Android
directory is named in a different case e.gAssets/plugins/Android
.
- Fixed bitcode flag being ignored for iOS pods.
- Fixed escaping of local repository paths in Android Resolver.
- Added support for granular builds of Google Play Services.
- Improved support for iOS source-only pods in Unity 5.5 and below.
- Fixed Version Handler renaming of Linux libraries with hypens in filenames. Previously, libraries named Foo-1.2.3.so were not being renamed to libFoo-1.2.3.so on Linux which could break native library loading on some versions of Unity.
- Fix CocoaPods casing in logs and comments.
- Fixed bug in download_artifacts.gradle (used by Android Resolver) which reported a failure if required artifacts already exist.
- Fixed iOS Resolver include search paths taking precedence over system headers when using project level resolution.
- Fixed iOS Resolver includes relative to library root, when using project level resolution.
- Improved error reporting when a file can't be moved to trash by the Version Handler.
- Fixed Android Resolver throwing NullReferenceException when the Android SDK path isn't set.
- Fixed Version Handler renaming files with underscores if the "Rename to Canonical Filenames" setting is enabled.
- Fixed Android Resolver reporting non-existent conflicting dependencies when Gradle build system is enabled.
- Added support for Maven / Ivy version specifications for Android packages.
- Added support for Android SNAPSHOT packages.
- Fixed Openjdk version check.
- Fixed non-deterministic Android package resolution when two packages contain an artifact with the same name.
- Fixed execution of Android Gradle resolution script when it's located in a path with whitespace.
- Removed legacy resolution method from Android Resolver. It is now only possible to use the Gradle or Gradle prebuild resolution methods.
- Updated Gradle wrapper to 4.2.1 to fix issues using Gradle with the latest openjdk.
- Android Gradle resolution now also uses gradle.properties to pass parameters to Gradle in an attempt to workaround problems with command line argument parsing on Windows 10.
- Fixed Gradle artifact download with non-version locked artifacts.
- Changed iOS resolver to only load dependencies at build time.
- Force Android Resolution when the "Install Android Packages" setting changes.
- Fixed execution of command line tools on Windows when the path to the tool contains a single quote (apostrophe). In this case we fallback to executing the tool via the system shell.
- Changed Android Resolver "resolution complete" dialog so that it now displays failures.
- Android Resolver now detects conflicting libraries that it does not manage warning the user if they're newer than the managed libraries and prompting the user to clean them up if they're older or at the same version.
- Improved Android Resolver auto-resolution speed.
- Fixed bug in the Gradle Android Resolver which would result in resolution succeding when some dependencies are not found.
- Changed Android Resolver's Gradle resolution to resolve conflicting dependencies across Google Play services and Android Support library packages.
- Changed iOS Resolver to execute the CocoaPods "pod" command via the shell by default. Some developers customize their shell environment to use custom ssh certs to access internal git repositories that host pods so executing "pod" via the shell will work for these scenarios. The drawback of executing "pod" via the shell could potentially cause users problems if they break their shell environment. Though users who customize their shell environments will be able to resolve these issues.
- Added option to disable the Gradle daemon in the Android Resolver. This daemon is now disabled by default as some users are getting into a state where multiple daemon instances are being spawned when changing dependencies which eventually results in Android resolution failing until all daemon processes are manually killed.
- Android resolution is now always executed if the user declines the update of their Android SDK. This ensure users can continue to use out of date Android SDK packages if they desire.
- Removed modulemap parsing in iOS Resolver. The framework *.modulemap did not need to be parsed by the iOS Resolver when injecting Cocaopods into a Xcode project. Simply adding a modular framework to a Xcode project results in Xcode's Clang parsing the associated modulemap and injecting any compile and link flags into the build process.
- Changed settings to be per-project by default.
- Added Google maven repository to fix GradlePrebuild resolution with Google components.
- Fixed Android Resolution failure with spaces in paths.
- Android and iOS dependencies can now be specified using *Dependencies.xml files. This is now the preferred method for registering dependencies, we may remove the API for dependency addition in future.
- Added "Reset to Defaults" button to each settings dialog to restore default settings.
- Android Resolver now validates the configured JDK is new enough to build recently released Android libraries.
- Fixed a bug that caused dependencies with the "LATEST" version specification to be ignored when using the Gradle mode of the Android Resolver.
- Fixed a race condition when running Android Resolution.
- Fixed Android Resolver logging if a PlayServicesSupport instance is created with no logging enabled before the Android Resolver is initialized.
- Fixed iOS resolver dialog in Unity 4.
- Fixed iOS Cocoapod Xcode project integration in Unity 4.
- GradlePrebuild Android resolver on Windows now correctly locates dependent data files.
- Improved Android package auto-resolution and fixed clean up of stale dependencies when using Gradle dependency resolution.
- Enabled autoresolution for Gradle Prebuild.
- Made the command line dialog windows have selectable text.
- Fixed incorrect "Android Settings" dialog disabled groups.
- Updated PlayServicesResolver android platform detection to use the package manager instead of the 'android' tool.
- UnityCompat reflection methods 'GetAndroidPlatform' and 'GetAndroidBuildToolsVersion' are now Obsolete due to dependence on the obsolete 'android' build tool.
- Fixed Gradle resolution in the Android Resolver when running PlayServicesResolver.Resolve() in parallel or spawning multiple resolutions before the previous resolve completed.
- Fixed Xcode project level settings not being applied by IOS Resolver when Xcode project pod integration is enabled.
- IOS Resolver's Xcode workspace pod integration is now disabled when Unity Cloud Build is detected. Unity Cloud Build does not follow the same build process as the Unity editor and fails to open the generated xcworkspace at this time.
- Moved Android Resolver Gradle Prebuild scripts into Google.JarResolver.dll. They are now extracted from the DLL when required.
- AARs / JARs are now cleaned up when switching the Android resolution strategy.
- Android Resolver now supports resolution with Gradle. This enables support for non-local artifacts.
- Android Resolver's Gradle Prebuild now uses Android build tools to determine the Android platform tools version rather than relying upon internal Unity APIs.
- Android Resolver's Gradle Prebuild now correctly strips binaries that are not required for the target ABI.
- Fixed an issue in VersionHandler where disabled targets are ignored if the "Any Platform" flag is set on a plugin DLL.
- Exposed GooglePlayServices.PlayServicesResolver.Resolve() so that it's possible for a script to be notified when AAR / Jar resolution is complete. This makes it easier to setup a project to build from the command line.
- VersionHandler.UpdateCompleteMethods allows a user to provide a list of methods to be called when VersionHandlerImpl has completed an update. This makes it easier to import a plugin and wait for VersionHandler to execute prior executing a build.
- VersionHandler will now rename Linux libraries so they can target Unity versions that require different file naming. Libraries need to be labelled gvh_linuxlibname-${basename} in order to be considered for renaming. e.g gvh_linuxlibname-MyLib will be named MyLib.so in Unity 5.5 and below and libMyLib.so in Unity 5.6 and above.
- Made VersionHandler bootstrap module more robust when calling static methods before the implementation DLL is loaded.
- Added a bootstrap module for VersionHandler so the implementation of the VersionHandler module can be versioned without resulting in a compile error when imported at different versions across multiple plugins.
- Added support for build target selection based upon .NET framework version in the VersionHandler. When appling either gvh_dotnet-3.5 or gvh_dotnet-4.5 labels to assets, the VersionHandler will only enable the asset for the specified set of build targets when the matching .NET framework version is selected in Unity 2017's project settings. This allows assets to be provided in a plugin that need to differ based upon .NET version.
- Force expansion of AARs with native components when using Unity 2017 with the internal build system. In contrast to Unity 5.x, Unity 2017's internal build system does not include native libraries included in AARs. Forcing expansion of AARs with native components generates an Ant / Eclipse project for each AAR which is correctly included by Unity 2017's internal build system.
- Fixed Cocoapods being installed when the build target isn't iOS.
- Added support for malformed AARs with missing classes.jar.
- Added support for the Android sdkmanager tool.
- Fixed non-shell command line execution (regression from Cocoapod installation patch).
- Added support for stdout / stderr redirection when executing commands in shell mode. This fixes CocoaPod tool installation when shell mode is enabled.
- Fixed incremental builds when additional sources are specified in the Podfile.
- Fixed a crash when importing Version Handler into Unity 4.7.x.
- Fixed an issue in the Jar Resolver which incorrectly notified event handlers of bundle ID changes when the currently selected (not active) build target changed in Unity 5.6 and above.
- Added option to control file renaming in Version Handler settings. Disabling file renaming (default option) significantly increases the speed of file version management operations with the downside that any files that are referenced directly by canonical filename rather than asset ID will no longer be valid.
- Improved logging in the Version Handler.
- Fixed an issue in the Version Handler which caused it to not re-enable plugins when re-importing a custom package with disabled version managed files.
- Fixed a bug with gradle prebuild resolver on windows.
- Fixed a bug in the iOS resolver with incremental builds.
- Fixed misdetection of Cocoapods support with Unity beta 5.6.
- Fix for googlesamples#48 Android dependency version number parsing when "-alpha" (etc.) are included in dependency (AAR / JAR) versions.
- Attempted to fix googlesamples#48 where a NullReferenceException could occur if a target file does not have a valid version string.
- Fixed Jar Resolver exploding and deleting AAR files it isn't managing.
- Added support for preserving Unity pods such as when GVR is enabled.
- Fixed auto-resolution when an Android application ID is modified.
- Fixed Unity version number parsing on machines with a locale that uses "," for decimal points.
- Fixed null reference exception if JDK path isn't set.
- Added warning when the Jar Resolver's background resolution is disabled.
- Fixed support of AARs with native libraries when using Gradle.
- Fixed extra repository paths when resolving dependencies.
- Added experimental Android resolution using Gradle. This alternative resolver supports proguard stripping with Unity's internal build system.
- Added Android support for single ABI builds when using AARs include native libraries.
- Disabled Android resolution on changes to all .cs and .js files. File patterns that are monitored for auto-resolution can be added using PlayServicesResolver.AddAutoResolutionFilePatterns().
- Added tracking of resolved AARs and JARs so they can be cleaned up if they're no longer referenced by a project.
- Added persistence of AAR / JAR version replacement for each Unity session.
- Added settings dialog to the iOS resolver.
- Integrated Cocoapod tool installation in the iOS resolver.
- Added option to run pod tool via the shell.
- Fixed build of some source Cocoapods (e.g Protobuf).
- VersionHandler no longer prompts to delete obsolete manifests.
- iOS resolver handles Cocoapod installation when using Ruby < 2.2.2.
- Added workaround for package version selection when including Google Play Services on Android.
- Fixed support for pods that reference static libraries.
- Fixed support for resource-only pods.
- Fixed re-explosion of AARs when the bundle ID is modified.
- Added support for Android Studio builds.
- Added support for native (C/C++) shared libraries in AARs.
- Fixed SDK manager path retrieval.
- Also, report stderr when it's not possible to run the "pod" tool.
- Handle exceptions thrown by Unity.Cecil on asset rename
- Fixed IOSResolver to handle PlayerSettings.iOS.targetOSVersionString
- Improved error reporting when "pod repo update" fails.
- Added detection of xml format xcode projects generated by old Cocoapods installations.
- Increased speed of JarResolver resolution.
- Fixed JarResolver caches getting out of sync with requested dependencies by removing the caches.
- Fixed JarResolver explode cache always being rewritten even when no dependencies change.
- Fixed VersionHandler build errors with Unity 5.5, due to the constantly changing BuildTarget enum.
- Added support for Unity configured JDK Path rather than requiring JAVA_HOME to be set in the Jar Resolver.
- Fixed IOSResolver errors when iOS support is not installed.
- Added fallback to "pod" executable search which queries the Ruby Gems package manager for the binary install location.
- Added crude support for source only Cocoapods to the IOSResolver.
- Automated resolution of out of date pod repositories.
- Fixed exception when reporting conflicting depedencies.
- Fixed issue working with Unity 5.5
- Fixed issue with PlayServicesResolver corrupting other iOS dependencies.
- Updated build script to use Unity distributed tools for building.
- Removed 1.2 Resolver and hardcoded whitelist of AARs to expand.
- Improved error reporting when the "jar" executable can't be found.
- Removed the need to set JAVA_HOME if "jar" is in the user's path.
- Fixed spurious copying of partially matching AARs.
- Changed resolver to only copy / expand when source AARs change.
- Auto-resolution of dependencies is now performed when the Android build target is selected.
- Expand AARs that contain manifests with variable expansion like ${applicationId}.
- Added optional logging in the JarResolverLib module.
- Integration with the Android SDK manager for dependencies that declare required Android SDK packages.
- Handles resolving dependencies when the artifacts are split across 2 repos.
- #4 Misdetecting version for versions like 1.2-alpha. These are now string compared if alphanumeric
- Removed resolver creation via reflection since it did not work all the time. Now a resolver needs to be loaded externally (which is existing behavior).
- Expose PlayServicesResolver properties to allow for script access.
- Explodes firebase-common and firebase-measurement aar files to support ${applicationId} substitution.
- #1 Spaces in project path not handled when exploding Aar file.
- #2 Script compilation error: TypeLoadException.
- Adds friendly alert when JAVA_HOME is not set on Windows platforms.
- Adds flag for disabling background resolution.
- Expands play-services-measurement and replaces ${applicationId} with the bundle Id.
- Fixes infinite loop of resolution triggered by resolution.