Skip to content
Draft
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
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk">
<Project Sdk="Microsoft.NET.Sdk">
<Import Project="..\..\Configuration.props" />
<PropertyGroup>
<TargetFramework>$(DotNetTargetFramework)</TargetFramework>
Expand All @@ -14,7 +14,6 @@

<!--Include shared linker sources-->
<Compile Include="..\Xamarin.Android.Build.Tasks\Linker\External\Linker\BaseMarkHandler.cs" Link="External\BaseMarkHandler.cs" />
<Compile Include="..\Xamarin.Android.Build.Tasks\Linker\MonoDroid.Tuner\AddKeepAlivesStep.cs" Link="MonoDroid.Tuner\AddKeepAlivesStep.cs" />
<Compile Include="..\Xamarin.Android.Build.Tasks\Linker\MonoDroid.Tuner\AndroidLinkConfiguration.cs" Link="MonoDroid.Tuner\AndroidLinkConfiguration.cs" />
<Compile Include="..\Xamarin.Android.Build.Tasks\Linker\MonoDroid.Tuner\Extensions.cs" Link="MonoDroid.Tuner\Extensions.cs" />
<Compile Include="..\Xamarin.Android.Build.Tasks\Linker\MonoDroid.Tuner\FixAbstractMethodsStep.cs" Link="MonoDroid.Tuner\FixAbstractMethodsStep.cs" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,31 +3,14 @@
using Java.Interop.Tools.Cecil;
using Mono.Cecil;
using Mono.Cecil.Cil;
using Mono.Linker;
using Mono.Linker.Steps;
using Xamarin.Android.Tasks;

namespace MonoDroid.Tuner
{
public class AddKeepAlivesStep : BaseStep
#if !ILLINK
, IAssemblyModifierPipelineStep
#endif // !ILLINK
public class AddKeepAlivesStep : BaseStep, IAssemblyModifierPipelineStep
{

protected override void ProcessAssembly (AssemblyDefinition assembly)
{
var action = Annotations.HasAction (assembly) ? Annotations.GetAction (assembly) : AssemblyAction.Skip;
if (action == AssemblyAction.Delete)
return;

if (AddKeepAlives (assembly)) {
if (action == AssemblyAction.Skip || action == AssemblyAction.Copy)
Annotations.SetAction (assembly, AssemblyAction.Save);
}
}

#if !ILLINK
public void ProcessAssembly (AssemblyDefinition assembly, StepContext context)
{
// Only run this step on user Android assemblies
Expand All @@ -36,7 +19,6 @@ public void ProcessAssembly (AssemblyDefinition assembly, StepContext context)

context.IsAssemblyModified |= AddKeepAlives (assembly);
}
#endif // !ILLINK

internal bool AddKeepAlives (AssemblyDefinition assembly)
{
Expand Down Expand Up @@ -145,11 +127,7 @@ protected virtual AssemblyDefinition GetCorlibAssembly ()
return Extensions.GetMethod (gcType, "KeepAlive", new string [] { "System.Object" });
}

public
#if !ILLINK
override
#endif
void LogMessage (string message)
public override void LogMessage (string message)
{
Context.LogMessage (message);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -195,13 +195,6 @@
<_TrimmerCustomSteps Include="$(_AndroidLinkerCustomStepAssembly)" Type="Microsoft.Android.Sdk.ILLink.PreserveRegistrations" />
<_TrimmerCustomSteps Include="$(_AndroidLinkerCustomStepAssembly)" Type="Microsoft.Android.Sdk.ILLink.PreserveJavaInterfaces" />
<_TrimmerCustomSteps Include="$(_AndroidLinkerCustomStepAssembly)" Type="MonoDroid.Tuner.FixAbstractMethodsStep" />
<!-- Custom steps that run after MarkStep -->
<_TrimmerCustomSteps
Condition=" '$(AndroidAddKeepAlives)' == 'true' "
Include="$(_AndroidLinkerCustomStepAssembly)"
AfterStep="CleanStep"
Type="MonoDroid.Tuner.AddKeepAlivesStep"
/>
<!-- Custom steps that run after CleanStep -->
<_TrimmerCustomSteps Include="$(_AndroidLinkerCustomStepAssembly)" AfterStep="CleanStep" Type="MonoDroid.Tuner.StripEmbeddedLibraries" />
<_TrimmerCustomSteps
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@ public class AssemblyModifierPipeline : AndroidTask
{
public override string TaskPrefix => "AMP";

public bool AddKeepAlives { get; set; }

public string ApplicationJavaClass { get; set; } = "";

public string CodeGenerationTarget { get; set; } = "";
Expand Down Expand Up @@ -140,6 +142,13 @@ protected virtual void BuildPipeline (AssemblyPipeline pipeline, MSBuildLinkCont
findJavaObjectsStep.Initialize (context);
pipeline.Steps.Add (findJavaObjectsStep);

// AddKeepAlivesStep
if (AddKeepAlives) {
var addKeepAlivesStep = new AddKeepAlivesStep ();
addKeepAlivesStep.Initialize (context);
pipeline.Steps.Add (addKeepAlivesStep);
}

// SaveChangedAssemblyStep
var writerParameters = new WriterParameters {
DeterministicMvid = Deterministic,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,6 @@ public class LinkAssembliesNoShrink : AssemblyModifierPipeline
{
public override string TaskPrefix => "LNS";

public bool AddKeepAlives { get; set; }

public bool UseDesignerAssembly { get; set; }

protected override void BuildPipeline (AssemblyPipeline pipeline, MSBuildLinkContext context)
Expand All @@ -32,13 +30,6 @@ protected override void BuildPipeline (AssemblyPipeline pipeline, MSBuildLinkCon
pipeline.Steps.Add (fixLegacyResourceDesignerStep);
}

// AddKeepAlivesStep
if (AddKeepAlives) {
var addKeepAliveStep = new AddKeepAlivesStep ();
addKeepAliveStep.Initialize (context);
pipeline.Steps.Add (addKeepAliveStep);
}

// Ensure the <AssemblyModifierPipeline> task's steps are added
base.BuildPipeline (pipeline, context);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1459,6 +1459,7 @@ because xbuild doesn't support framework reference assemblies.
Inputs="$(_AndroidLinkFlag)"
Outputs="$(_AdditionalPostLinkerStepsFlag)">
<AssemblyModifierPipeline
AddKeepAlives="$(AndroidAddKeepAlives)"
ApplicationJavaClass="$(AndroidApplicationJavaClass)"
CodeGenerationTarget="$(_AndroidJcwCodegenTarget)"
Debug="$(AndroidIncludeDebugSymbols)"
Expand Down