diff --git a/XRTK.Lumin/Packages/com.xrtk.lumin/Editor/BuildPipeline.meta b/XRTK.Lumin/Packages/com.xrtk.lumin/Editor/BuildPipeline.meta new file mode 100644 index 0000000..d3c59fc --- /dev/null +++ b/XRTK.Lumin/Packages/com.xrtk.lumin/Editor/BuildPipeline.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 58dbb33b2e0612b459a10291b45d170d +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/XRTK.Lumin/Packages/com.xrtk.lumin/Editor/BuildPipeline/LuminBuildInfo.cs b/XRTK.Lumin/Packages/com.xrtk.lumin/Editor/BuildPipeline/LuminBuildInfo.cs new file mode 100644 index 0000000..a099031 --- /dev/null +++ b/XRTK.Lumin/Packages/com.xrtk.lumin/Editor/BuildPipeline/LuminBuildInfo.cs @@ -0,0 +1,136 @@ +// Copyright (c) XRTK. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +using System; +using System.Diagnostics; +using System.IO; +using System.Linq; +using UnityEditor; +using UnityEditor.Build.Reporting; +using UnityEngine; +using XRTK.Attributes; +using XRTK.Definitions.Platforms; +using XRTK.Extensions; +using XRTK.Services; +using Debug = UnityEngine.Debug; + +namespace XRTK.Editor.BuildPipeline +{ + [RuntimePlatform(typeof(LuminPlatform))] + public class LuminBuildInfo : BuildInfo + { + /// + public override BuildTarget BuildTarget => BuildTarget.Lumin; + + /// + public override bool Install => true; + + /// + public override string ExecutableFileExtension => ".mpk"; + + /// + public override void OnPreProcessBuild(BuildReport report) + { + if (!MixedRealityToolkit.ActivePlatforms.Contains(BuildPlatform) || + EditorUserBuildSettings.activeBuildTarget != BuildTarget) + { + return; + } + + if (MixedRealityToolkit.ActivePlatforms.Contains(BuildPlatform)) + { + Debug.Log($"{nameof(LuminBuildInfo)}.{nameof(OnPreProcessBuild)}"); + } + + if (VersionCode.HasValue) + { + PlayerSettings.Lumin.versionCode = VersionCode.Value; + } + else + { + // Usually version codes are unique and not tied to the usual semver versions + // see https://developer.android.com/studio/publish/versioning#appversioning + // versionCode - A positive integer used as an internal version number. + // This number is used only to determine whether one version is more recent than another, + // with higher numbers indicating more recent versions. The Android system uses the + // versionCode value to protect against downgrades by preventing users from installing + // an APK with a lower versionCode than the version currently installed on their device. + PlayerSettings.Lumin.versionCode++; + } + + var mabuPath = $"{Directory.GetParent(Application.dataPath)}\\Library\\Mabu"; + + if (IsCommandLine && + Directory.Exists(mabuPath)) + { + Directory.Delete(mabuPath, true); + } + } + + /// + public override void OnPostProcessBuild(BuildReport buildReport) + { + if (!MixedRealityToolkit.ActivePlatforms.Contains(BuildPlatform) || + EditorUserBuildSettings.activeBuildTarget != BuildTarget || + buildReport.summary.result == BuildResult.Failed) + { + return; + } + + if (MixedRealityToolkit.ActivePlatforms.Contains(BuildPlatform)) + { + Debug.Log($"{nameof(LuminBuildInfo)}.{nameof(OnPostProcessBuild)}"); + } + + if (Install && !Application.isBatchMode) + { + InstallOnDevice(); + } + } + + private async void InstallOnDevice() + { + var canInstall = false; + + try + { + var deviceResult = await new Process().RunAsync("mldb devices", false); + + if (deviceResult.ExitCode == 0) + { + foreach (var deviceId in deviceResult.Output) + { + if (!string.IsNullOrWhiteSpace(deviceId)) + { + Debug.Log(deviceId); + + if (!deviceId.Contains("List")) + { + canInstall = true; + } + } + } + } + } + catch (Exception e) + { + Debug.Log(e); + } + + if (!canInstall) + { + Debug.Log("No devices found, skipping installation"); + return; + } + + try + { + await new Process().RunAsync($"mldb install -u \"{OutputDirectory}\"", true); + } + catch (Exception e) + { + Debug.Log(e); + } + } + } +} diff --git a/XRTK.Lumin/Packages/com.xrtk.lumin/Editor/BuildPipeline/LuminBuildInfo.cs.meta b/XRTK.Lumin/Packages/com.xrtk.lumin/Editor/BuildPipeline/LuminBuildInfo.cs.meta new file mode 100644 index 0000000..611ceed --- /dev/null +++ b/XRTK.Lumin/Packages/com.xrtk.lumin/Editor/BuildPipeline/LuminBuildInfo.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 381696c5d2b029348b62e696d4daf2b9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: 8ac5213854cf4dbabd140decf8df1946, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/XRTK.Lumin/Packages/com.xrtk.lumin/Editor/BuildPipeline/XRTK.Lumin.Editor.BuildPipeline.asmdef b/XRTK.Lumin/Packages/com.xrtk.lumin/Editor/BuildPipeline/XRTK.Lumin.Editor.BuildPipeline.asmdef new file mode 100644 index 0000000..8b82d45 --- /dev/null +++ b/XRTK.Lumin/Packages/com.xrtk.lumin/Editor/BuildPipeline/XRTK.Lumin.Editor.BuildPipeline.asmdef @@ -0,0 +1,20 @@ +{ + "name": "XRTK.Lumin.Editor.BuildPipeline", + "references": [ + "GUID:f3241d040533491e8a1e2714b27c3111", + "GUID:e67d30660ec243e4836aac191d3f36fb", + "GUID:258402e6b12e10c43925784eabc239e5", + "GUID:49d8940ef8dc2f044abcf0447091dced" + ], + "includePlatforms": [ + "Editor" + ], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [], + "versionDefines": [], + "noEngineReferences": false +} \ No newline at end of file diff --git a/XRTK.Lumin/Packages/com.xrtk.lumin/Editor/BuildPipeline/XRTK.Lumin.Editor.BuildPipeline.asmdef.meta b/XRTK.Lumin/Packages/com.xrtk.lumin/Editor/BuildPipeline/XRTK.Lumin.Editor.BuildPipeline.asmdef.meta new file mode 100644 index 0000000..f8a3cb9 --- /dev/null +++ b/XRTK.Lumin/Packages/com.xrtk.lumin/Editor/BuildPipeline/XRTK.Lumin.Editor.BuildPipeline.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 34b401ee334e22544a30886dfafd3fdd +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/XRTK.Lumin/Packages/com.xrtk.lumin/Runtime/LuminPlatform.cs b/XRTK.Lumin/Packages/com.xrtk.lumin/Runtime/LuminPlatform.cs index f9f77a2..ab870b2 100644 --- a/XRTK.Lumin/Packages/com.xrtk.lumin/Runtime/LuminPlatform.cs +++ b/XRTK.Lumin/Packages/com.xrtk.lumin/Runtime/LuminPlatform.cs @@ -22,17 +22,14 @@ public override bool IsAvailable } } +#if UNITY_EDITOR + /// - public override bool IsBuildTargetAvailable + public override UnityEditor.BuildTarget[] ValidBuildTargets { get; } = { - get - { -#if UNITY_EDITOR - return UnityEditor.EditorUserBuildSettings.activeBuildTarget == UnityEditor.BuildTarget.Lumin; -#else - return false; -#endif - } - } + UnityEditor.BuildTarget.Lumin + }; + +#endif // UNITY_EDITOR } } \ No newline at end of file diff --git a/XRTK.Lumin/Packages/com.xrtk.lumin/package.json b/XRTK.Lumin/Packages/com.xrtk.lumin/package.json index b8618f1..8f7bed5 100644 --- a/XRTK.Lumin/Packages/com.xrtk.lumin/package.json +++ b/XRTK.Lumin/Packages/com.xrtk.lumin/package.json @@ -13,7 +13,7 @@ "reality", "lumin" ], - "version": "0.2.6", + "version": "0.2.7", "unity": "2019.4", "license": "MIT", "repository": { @@ -22,7 +22,7 @@ }, "author": "XRTK Team (https://github.com/XRTK)", "dependencies": { - "com.xrtk.core": "0.2.13" + "com.xrtk.core": "0.2.14-preview.2" }, "profiles": [ { diff --git a/XRTK.Lumin/Packages/packages-lock.json b/XRTK.Lumin/Packages/packages-lock.json index ae95cae..667d1ed 100644 --- a/XRTK.Lumin/Packages/packages-lock.json +++ b/XRTK.Lumin/Packages/packages-lock.json @@ -128,7 +128,7 @@ "url": "https://packages.unity.com" }, "com.xrtk.core": { - "version": "0.2.13", + "version": "0.2.14-preview.2", "depth": 1, "source": "registry", "dependencies": { @@ -145,7 +145,7 @@ "depth": 0, "source": "embedded", "dependencies": { - "com.xrtk.core": "0.2.13" + "com.xrtk.core": "0.2.14-preview.2" } }, "com.unity.modules.ai": { diff --git a/azure-pipelines.yml b/azure-pipelines.yml index fe8f1cf..5d32a34 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -21,7 +21,7 @@ variables: isReleaseBuild: $[ and( eq(variables['Build.SourceBranchName'], 'main'), or( eq(variables['build.reason'], 'BatchedCI'), eq(variables['build.reason'], 'Manual') ) ) ] isPreviewBuild: $[ and( eq(variables['System.PullRequest.TargetBranch'], 'main'), eq(variables['build.reason'], 'PullRequest') ) ] -name: $(package.name) ${{ coalesce( variables['date'], '$(System.PullRequest.PullRequestNumber)', '$(Date:yyyyMMdd)' ) }}$(Rev:.r) +name: ${{ coalesce( variables['package.name'], variables['project.name'] ) }} ${{ coalesce( variables['date'], '$(System.PullRequest.PullRequestNumber)', '$(Date:yyyyMMdd)' ) }}$(Rev:.r) pr: autoCancel: true