void AddInstrumentations(XElement manifest, IList <TypeDefinition> subclasses, int targetSdkVersion) { var assemblyAttrs = Assemblies.SelectMany(path => InstrumentationAttribute.FromCustomAttributeProvider(Resolver.GetAssembly(path))); // Add instrumentation to the manifest foreach (var ia in assemblyAttrs) { if (ia.TargetPackage == null) { ia.SetTargetPackage(PackageName); } if (!manifest.Descendants("instrumentation").Any(x => (string)x.Attribute(attName) == ia.Name)) { manifest.Add(ia.ToElement(PackageName)); } } foreach (var type in subclasses) { if (type.IsSubclassOf("Android.App.Instrumentation")) { var xe = InstrumentationFromTypeDefinition(type, JavaNativeTypeManager.ToJniName(type).Replace('/', '.'), targetSdkVersion); if (xe != null) { manifest.Add(xe); } } } }
XElement InstrumentationFromTypeDefinition(TypeDefinition type, string name, int targetSdkVersion) { return(ToElement(type, name, t => InstrumentationAttribute.FromCustomAttributeProvider(t).FirstOrDefault(), ia => { if (ia.TargetPackage == null) { ia.SetTargetPackage(PackageName); } return ia.ToElement(PackageName); })); }