Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@

## Unreleased

### Breaking Changes

- The deprecated Runtime- and BuildTime-Configuration have been removed in favor of the single `OptionsConfiguration` script. When migrating you can make use of preprocessor directives to set specific options for specific platforms. Check out the ([Migration Guide](https://docs.sentry.io/platforms/unity/migration/#changes-to-the-programmatic-configuration)). ([#2337](https://github.com/getsentry/sentry-unity/pull/2337))

### Features

- Added Xbox Native Support ([#2314](https://github.com/getsentry/sentry-unity/pull/2314), [#2329](https://github.com/getsentry/sentry-unity/pull/2329))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,9 +66,8 @@ MonoBehaviour:
<WindowsNativeSupportEnabled>k__BackingField: 1
<MacosNativeSupportEnabled>k__BackingField: 1
<LinuxNativeSupportEnabled>k__BackingField: 1
<XboxNativeSupportEnabled>k__BackingField: 1
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Missed checking this in to the samples when adding Xbox support.

<Il2CppLineNumberSupportEnabled>k__BackingField: 1
<RuntimeOptionsConfiguration>k__BackingField: {fileID: 0}
<BuildTimeOptionsConfiguration>k__BackingField: {fileID: 0}
<OptionsConfiguration>k__BackingField: {fileID: 11400000, guid: cea63afb7c75f429799422326f926abe, type: 2}
<Debug>k__BackingField: 1
<DebugOnlyInEditor>k__BackingField: 0
Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion src/Sentry.Unity.Editor.iOS/BuildPostProcess.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,8 @@ public static void OnPostProcessBuild(BuildTarget target, string pathToProject)
return;
}

var (options, cliOptions) = SentryScriptableObject.ConfiguredBuildTimeOptions();
var cliOptions = SentryScriptableObject.LoadCliOptions();
var options = SentryScriptableObject.LoadOptions(isBuilding: true);
var logger = options?.DiagnosticLogger ?? new UnityLogger(new SentryUnityOptions());

AddSentryToXcodeProject(options, cliOptions, logger, pathToProject);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,8 @@ public class AndroidManifestConfiguration

public AndroidManifestConfiguration()
: this(
SentryScriptableObject.ConfiguredBuildTimeOptions,
SentryScriptableObject.LoadOptions,
SentryScriptableObject.LoadCliOptions,
isDevelopmentBuild: EditorUserBuildSettings.development,
#pragma warning disable CS0618
scriptingImplementation: PlayerSettings.GetScriptingBackend(BuildTargetGroup.Android))
Expand All @@ -58,12 +59,14 @@ public AndroidManifestConfiguration()

// Testing
internal AndroidManifestConfiguration(
Func<(SentryUnityOptions?, SentryCliOptions?)> getOptions,
Func<bool, SentryUnityOptions?> getOptions,
Func<SentryCliOptions?> getCliOptions,
bool isDevelopmentBuild,
ScriptingImplementation scriptingImplementation,
ILogger? logger = null)
{
(_options, _sentryCliOptions) = getOptions();
_options = getOptions(true);
_sentryCliOptions = getCliOptions();
_logger = _options?.DiagnosticLogger ?? new UnityLogger(_options ?? new SentryUnityOptions(), logger);

_isDevelopmentBuild = isDevelopmentBuild;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ public class SentryPerformanceAutoInstrumentation : IPostBuildPlayerScriptDLLs
public int callbackOrder { get; }
public void OnPostBuildPlayerScriptDLLs(BuildReport report)
{
var (options, cliOptions) = SentryScriptableObject.ConfiguredBuildTimeOptions();
var options = SentryScriptableObject.LoadOptions(isBuilding: true);
if (options == null)
{
return;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,12 +25,7 @@ internal static class OptionsConfigurationItem
if (GUILayout.Button("New", GUILayout.ExpandWidth(false)))
{
var t = typeof(T);
if (t == typeof(SentryRuntimeOptionsConfiguration) || t == typeof(SentryBuildTimeOptionsConfiguration))
{
Debug.LogWarning("Runtime/BuildTime scriptable objects have been deprecated and will be removed in a future version." +
"Please use the 'Option Config Script' below.");
}
else if (t == typeof(SentryOptionsConfiguration))
if (t == typeof(SentryOptionsConfiguration))
{
CreateConfigurationScript(fieldName, SentryOptionsConfiguration.Template, scriptName);
}
Expand Down Expand Up @@ -109,16 +104,6 @@ internal static void SetScript(string scriptNameWithoutExtension)

switch (optionsConfigurationObject)
{
case SentryRuntimeOptionsConfiguration runtimeConfiguration:
AssetDatabase.CreateAsset(optionsConfigurationObject, SentryAssetPath(scriptNameWithoutExtension));
AssetDatabase.Refresh();
options.RuntimeOptionsConfiguration ??= runtimeConfiguration; // Don't overwrite if already set
break;
case SentryBuildTimeOptionsConfiguration buildTimeConfiguration:
AssetDatabase.CreateAsset(optionsConfigurationObject, SentryAssetPath(scriptNameWithoutExtension));
AssetDatabase.Refresh();
options.BuildTimeOptionsConfiguration ??= buildTimeConfiguration; // Don't overwrite if already set
break;
case SentryOptionsConfiguration configuration:
AssetDatabase.CreateAsset(optionsConfigurationObject, SentryOptionsConfiguration.GetAssetPath(scriptNameWithoutExtension));
AssetDatabase.Refresh();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,41 +15,6 @@ public static void Display(ScriptableSentryUnityOptions options)

EditorGUILayout.Space();

if (options.RuntimeOptionsConfiguration != null || options.BuildTimeOptionsConfiguration != null)
{
EditorGUILayout.BeginVertical("box");

EditorGUILayout.HelpBox(
"The Runtime/BuildTime scriptable objects have been deprecated and will be removed in a future version." +
"\nPlease use the 'Option Config Script' below." +
"\nInstead of implementing your configuration in two places you can control the options via precompile directives.",
MessageType.Warning);

if (options.RuntimeOptionsConfiguration != null)
{
options.RuntimeOptionsConfiguration = OptionsConfigurationItem.Display(
options.RuntimeOptionsConfiguration,
"Runtime Config Script",
"SentryRuntimeConfiguration",
"DEPRECATED: A scriptable object that inherits from 'ScriptableOptionsConfiguration' " +
"and allows you to programmatically modify Sentry options.");
}

if (options.BuildTimeOptionsConfiguration != null)
{
options.BuildTimeOptionsConfiguration = OptionsConfigurationItem.Display(
options.BuildTimeOptionsConfiguration,
"Build Time Config Script",
"SentryBuildTimeConfiguration",
"DEPRECATED: A scriptable object that inherits from 'ScriptableOptionsConfiguration' " +
"and allows you to programmatically modify Sentry options.");
}

EditorGUILayout.EndVertical();

EditorGUILayout.Space();
}

EditorGUILayout.BeginVertical("box");

EditorGUILayout.HelpBox("The 'Option Config Script' allows you to programmatically configure and " +
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,20 +32,7 @@ private static void ConfigureOptions(Dictionary<string, string> args, [CallerMem
}
Debug.LogFormat("{0}: Found SentryOptions", functionName);

var value = "";
if (args.TryGetValue("deprecatedRuntimeOptionsScript", out value))
{
Debug.LogFormat("{0}: Configuring Runtime Options Script to {1}", functionName, value);
OptionsConfigurationItem.SetScript(value);
}

if (args.TryGetValue("deprecatedBuildTimeOptionsScript", out value))
{
Debug.LogFormat("{0}: Configuring Build Time Options Script to {1}", functionName, value);
OptionsConfigurationItem.SetScript(value);
}

if (args.TryGetValue("optionsScript", out value))
if (args.TryGetValue("optionsScript", out var value))
{
Debug.LogFormat("{0}: Configuring Build Time Options Script to {1}", functionName, value);
OptionsConfigurationItem.SetScript(value);
Expand Down
2 changes: 1 addition & 1 deletion src/Sentry.Unity.Editor/Il2CppBuildPreProcess.cs
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ public void OnPreprocessBuild(BuildReport report)
}


var (options, cliOptions) = SentryScriptableObject.ConfiguredBuildTimeOptions();
var options = SentryScriptableObject.LoadOptions(isBuilding: true);

if (options is null)
{
Expand Down
3 changes: 2 additions & 1 deletion src/Sentry.Unity.Editor/Native/BuildPostProcess.cs
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,8 @@ public static void OnPostProcessBuild(BuildTarget target, string executablePath)
return;
}

var (options, cliOptions) = SentryScriptableObject.ConfiguredBuildTimeOptions();
var cliOptions = SentryScriptableObject.LoadCliOptions();
var options = SentryScriptableObject.LoadOptions(isBuilding: true);
var logger = options?.DiagnosticLogger ?? new UnityLogger(options ?? new SentryUnityOptions());

if (options is null)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -92,10 +92,8 @@ public override void OnInspectorGUI()
EditorGUILayout.Space();

EditorGUILayout.LabelField("Options Configuration", EditorStyles.boldLabel);
EditorGUILayout.ObjectField("Runtime Configuration", options.RuntimeOptionsConfiguration,
typeof(SentryRuntimeOptionsConfiguration), false);
EditorGUILayout.ObjectField("Build Time Configuration", options.BuildTimeOptionsConfiguration,
typeof(SentryBuildTimeOptionsConfiguration), false);
EditorGUILayout.ObjectField("Options Configuration", options.OptionsConfiguration,
typeof(SentryOptionsConfiguration), false);

EditorGUILayout.Space();
EditorGUI.DrawRect(EditorGUILayout.GetControlRect(false, 1), Color.gray);
Expand Down
38 changes: 9 additions & 29 deletions src/Sentry.Unity.Editor/SentryScriptableObject.cs
Original file line number Diff line number Diff line change
Expand Up @@ -24,37 +24,17 @@ internal static T CreateOrLoad<T>(string path) where T : ScriptableObject

internal static T? Load<T>(string path) where T : ScriptableObject => AssetDatabase.LoadAssetAtPath<T>(path);

private static SentryCliOptions? LoadCliOptions() => Load<SentryCliOptions>(SentryCliOptions.GetConfigPath());
internal static ScriptableSentryUnityOptions? LoadOptions() =>
Load<ScriptableSentryUnityOptions>(ScriptableSentryUnityOptions.GetConfigPath());

internal static (SentryUnityOptions?, SentryCliOptions?) ConfiguredBuildTimeOptions()
public static SentryCliOptions? LoadCliOptions()
{
var scriptableOptions = LoadOptions();
var cliOptions = LoadCliOptions();

SentryUnityOptions? options = null;
if (scriptableOptions is not null)
{
options = scriptableOptions.ToSentryUnityOptions(isBuilding: true);

// TODO: Move this into `Load` once we remove Runtime- and BuildTimeConfig
// We're calling `Configure` here and not in `Load` so the new Config does not overwrite the BuildTimeConfig
cliOptions?.CliOptionsConfiguration?.Configure(cliOptions);
// Must be non-nullable in the interface otherwise Unity script compilation fails...
cliOptions ??= ScriptableObject.CreateInstance<SentryCliOptions>();

var deprecatedConfiguration = scriptableOptions.BuildTimeOptionsConfiguration;
if (deprecatedConfiguration != null)
{
deprecatedConfiguration.Configure(options, cliOptions);
}
}

// TODO: Move this into `Load` once we remove Runtime- and BuildTimeConfig
// We're calling `Configure` here and not in `Load` so the new Config does not overwrite the BuildTimeConfig
var cliOptions = Load<SentryCliOptions>(SentryCliOptions.GetConfigPath());
cliOptions?.CliOptionsConfiguration?.Configure(cliOptions);

return (options, cliOptions);
return cliOptions;
}

public static SentryUnityOptions? LoadOptions(bool isBuilding = false)
{
var scriptableOptions = Load<ScriptableSentryUnityOptions>(ScriptableSentryUnityOptions.GetConfigPath());
return scriptableOptions?.ToSentryUnityOptions(isBuilding: isBuilding);
}
}
2 changes: 1 addition & 1 deletion src/Sentry.Unity.Editor/WebGL/BuildPreProcess.cs
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ public void OnPreprocessBuild(BuildReport report)
return;
}

var (options, _) = SentryScriptableObject.ConfiguredBuildTimeOptions();
var options = SentryScriptableObject.LoadOptions(isBuilding: true);
if (options?.Enabled is not true)
{
return;
Expand Down
13 changes: 1 addition & 12 deletions src/Sentry.Unity/ScriptableSentryUnityOptions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
using System.Collections.Generic;
using Sentry.Extensibility;
using Sentry.Unity.Integrations;
using Sentry.Unity.NativeUtils;
using UnityEngine;

namespace Sentry.Unity;
Expand Down Expand Up @@ -105,9 +104,6 @@ public static string GetConfigPath(string? notDefaultConfigName = null)
[field: SerializeField] public bool LinuxNativeSupportEnabled { get; set; } = true;
[field: SerializeField] public bool XboxNativeSupportEnabled { get; set; } = true;
[field: SerializeField] public bool Il2CppLineNumberSupportEnabled { get; set; } = true;

[field: SerializeField] public SentryRuntimeOptionsConfiguration? RuntimeOptionsConfiguration { get; set; }
[field: SerializeField] public SentryBuildTimeOptionsConfiguration? BuildTimeOptionsConfiguration { get; set; }
[field: SerializeField] public SentryOptionsConfiguration? OptionsConfiguration { get; set; }

[field: SerializeField] public bool Debug { get; set; } = true;
Expand Down Expand Up @@ -182,6 +178,7 @@ internal SentryUnityOptions ToSentryUnityOptions(
AndroidNativeSupportEnabled = AndroidNativeSupportEnabled,
NdkIntegrationEnabled = NdkIntegrationEnabled,
NdkScopeSyncEnabled = NdkScopeSyncEnabled,
PostGenerateGradleProjectCallbackOrder = PostGenerateGradleProjectCallbackOrder,
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This was previously wrongly only on the scriptable object and not on the actual options, making them inaccessible programmatically.

WindowsNativeSupportEnabled = WindowsNativeSupportEnabled,
MacosNativeSupportEnabled = MacosNativeSupportEnabled,
LinuxNativeSupportEnabled = LinuxNativeSupportEnabled,
Expand Down Expand Up @@ -225,14 +222,6 @@ internal SentryUnityOptions ToSentryUnityOptions(
OptionsConfiguration.Configure(options);
}

// TODO: Deprecated and to be removed in the next major
// This has to happen in between options object creation and updating the options based on programmatic changes
if (RuntimeOptionsConfiguration != null && !isBuilding)
{
options.DiagnosticLogger?.LogDebug("RuntimeOptionsConfiguration found. Calling configure.");
RuntimeOptionsConfiguration.Configure(options);
}

// We need to set up logging here because the configure callback might have changed the debug options.
// Without setting up here we might miss out on logs between option-loading (now) and Init - i.e. native configuration
options.SetupUnityLogging();
Expand Down
14 changes: 0 additions & 14 deletions src/Sentry.Unity/SentryBuildTimeOptionsConfiguration.cs

This file was deleted.

14 changes: 0 additions & 14 deletions src/Sentry.Unity/SentryRuntimeOptionsConfiguration.cs

This file was deleted.

2 changes: 2 additions & 0 deletions src/Sentry.Unity/SentryUnityOptions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -194,6 +194,8 @@ public sealed class SentryUnityOptions : SentryOptions
/// </summary>
public bool NdkScopeSyncEnabled { get; set; } = true;

public int PostGenerateGradleProjectCallbackOrder { get; set; } = 1;

/// <summary>
/// Whether the SDK should add native support for Windows
/// </summary>
Expand Down
21 changes: 0 additions & 21 deletions test/Scripts.Integration.Test/Editor/BuildTimeOptions.cs

This file was deleted.

18 changes: 0 additions & 18 deletions test/Scripts.Integration.Test/Scripts/RuntimeOptions.cs

This file was deleted.

1 change: 0 additions & 1 deletion test/Scripts.Integration.Test/add-sentry.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -17,4 +17,3 @@ RunUnityAndExpect $UnityPath "AddSentryPackage" "Sentry Package Installation: SU
Write-Host "Copying Integration Test Files"
New-Item -Path "$(GetNewProjectAssetsPath)" -Name "Scripts" -ItemType "directory"
Copy-Item -Recurse "$IntegrationScriptsPath/Scripts/*" -Destination "$(GetNewProjectAssetsPath)/Scripts/"
Copy-Item -Recurse "$IntegrationScriptsPath/Editor/BuildTimeOptions.cs" -Destination "$(GetNewProjectAssetsPath)/Editor/"
Loading