protected override void ProcessAssembly(AssemblyDefinition assembly) { if (!Annotations.HasAction(assembly)) { Annotations.SetAction(assembly, AssemblyAction.Skip); } if (Profile.IsSdkAssembly(assembly) || Profile.IsProductAssembly(assembly)) { return; } bool changed = false; foreach (var type in assembly.MainModule.Types) { if (MightNeedFix(type)) { changed |= FixAbstractMethods(type); } } if (changed) { AssemblyAction action = Annotations.HasAction(assembly) ? Annotations.GetAction(assembly) : AssemblyAction.Skip; if (action == AssemblyAction.Skip || action == AssemblyAction.Copy || action == AssemblyAction.Delete) { Annotations.SetAction(assembly, AssemblyAction.Save); } var td = AbstractMethodErrorConstructor.DeclaringType.Resolve(); Annotations.Mark(td); Annotations.SetPreserve(td, TypePreserve.Nothing); Annotations.AddPreservedMethod(td, AbstractMethodErrorConstructor.Resolve()); } }
protected override void ProcessAssembly(AssemblyDefinition assembly) { if (!Annotations.HasAction(assembly)) { Annotations.SetAction(assembly, AssemblyAction.Skip); } if (IsProductOrSdkAssembly(assembly)) { return; } CheckAppDomainUsageUnconditional(assembly, (string msg) => Context.Logger.LogMessage(MessageImportance.High, msg)); if (FixAbstractMethodsUnconditional(assembly)) { Context.SafeReadSymbols(assembly); AssemblyAction action = Annotations.HasAction(assembly) ? Annotations.GetAction(assembly) : AssemblyAction.Skip; if (action == AssemblyAction.Skip || action == AssemblyAction.Copy || action == AssemblyAction.Delete) { Annotations.SetAction(assembly, AssemblyAction.Save); } var td = AbstractMethodErrorConstructor.DeclaringType.Resolve(); Annotations.Mark(td); Annotations.SetPreserve(td, TypePreserve.Nothing); Annotations.AddPreservedMethod(td, AbstractMethodErrorConstructor.Resolve()); } }
protected override void ProcessAssembly(AssemblyDefinition assembly) { if (IsSkipped(assembly)) { ProcessUserAssembly(assembly); return; } if (!link_sdk_only) { if (!Annotations.HasAction(assembly)) // stray assembly not picked up when resolving references { Annotations.SetAction(assembly, AssemblyAction.Link); } return; } if (Profile.IsSdkAssembly(assembly) || Profile.IsProductAssembly(assembly)) { Annotations.SetAction(assembly, AssemblyAction.Link); return; } ProcessUserAssembly(assembly); }
protected override void ProcessAssembly(AssemblyDefinition assembly) { if (!IsSkipped(assembly) && IsLinked(assembly)) { if (!Annotations.HasAction(assembly)) // stray assembly not picked up when resolving references { Annotations.SetAction(assembly, AssemblyAction.Link); } return; } ProcessUserAssembly(assembly); }
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); } } }
bool CheckShouldProcessAssembly(AssemblyDefinition assembly) { if (!Annotations.HasAction(assembly)) { Annotations.SetAction(assembly, AssemblyAction.Skip); } if (IsProductOrSdkAssembly(assembly)) { return(false); } #if !NET5_LINKER CheckAppDomainUsageUnconditional(assembly, (string msg) => Context.LogMessage(MessageImportance.High, msg)); #endif // !NET5_LINKER return(assembly.MainModule.HasTypeReference("Java.Lang.Object")); }
protected override void ProcessAssembly(AssemblyDefinition assembly) { if (!Annotations.HasAction(assembly)) { return; } var action = Annotations.GetAction(assembly); if (action == AssemblyAction.Skip || action == AssemblyAction.Delete) { return; } var fileName = assembly.Name.Name + ".dll"; if (MonoAndroidHelper.IsFrameworkAssembly(fileName) && !MonoAndroidHelper.FrameworkEmbeddedJarLookupTargets.Contains(fileName) && !MonoAndroidHelper.FrameworkEmbeddedNativeLibraryAssemblies.Contains(fileName)) { return; } bool assembly_modified = false; foreach (var mod in assembly.Modules) { foreach (var r in mod.Resources.ToArray()) { if (ShouldStripResource(r)) { Context.LogMessage(" Stripped {0} from {1}", r.Name, fileName); mod.Resources.Remove(r); assembly_modified = true; } } } if (assembly_modified && action == AssemblyAction.Copy) { Annotations.SetAction(assembly, AssemblyAction.Save); } }
protected override void ProcessAssembly(AssemblyDefinition assembly) { if (!Annotations.HasAction(assembly)) { Annotations.SetAction(assembly, AssemblyAction.Skip); } bool changed = FixAbstractMethods(assembly); if (changed) { Context.SafeReadSymbols(assembly); AssemblyAction action = Annotations.HasAction(assembly) ? Annotations.GetAction(assembly) : AssemblyAction.Skip; if (action == AssemblyAction.Skip || action == AssemblyAction.Copy || action == AssemblyAction.Delete) { Annotations.SetAction(assembly, AssemblyAction.Save); } var td = AbstractMethodErrorConstructor.DeclaringType.Resolve(); Annotations.Mark(td); Annotations.SetPreserve(td, TypePreserve.Nothing); Annotations.AddPreservedMethod(td, AbstractMethodErrorConstructor.Resolve()); } }