Skip to content

Commit

Permalink
[Xamarin.Android.Build.Tasks] Remove Fast Dev of AndroidResources (#4829
Browse files Browse the repository at this point in the history
)

Changes: xamarin/monodroid@6e43a20...5784a74

  * xamarin/monodroid@5784a7461: [msbuild] Remove Remove Fast Dev of AndroidResources (#1099)
  * xamarin/monodroid@82bea9c6b: [tests] update and consolidate NUnit packages (#1103)

Our current enhanced fast deployment system makes use of grey-listed
API's which are going to be removed in a future version of Android.

Removes support for fast deploying the `packaged_ressources` file to
the `.__override__` directory.  Also remove the resource patching
support from the debug runtime.
  • Loading branch information
dellis1972 committed Jun 30, 2020
1 parent a944a89 commit f0d565f
Show file tree
Hide file tree
Showing 9 changed files with 51 additions and 801 deletions.
2 changes: 1 addition & 1 deletion .external
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
xamarin/monodroid:master@82bea9c6b963cb855a6e01775084182ab45cf9ac
xamarin/monodroid:master@5784a746112babd9ef801e0a6bc3fe2694bdf64c
mono/mono:2020-02@83105ba22461455f4343d6bb14976eba8b0b3f39
1 change: 0 additions & 1 deletion build-tools/installers/create-installers.targets
Original file line number Diff line number Diff line change
Expand Up @@ -397,7 +397,6 @@
<_MSBuildFiles Include="$(MSBuildSrcDir)\lib\x86_64\installer" />
<_MSBuildFiles Include="$(MSBuildSrcDir)\protobuf-net.dll" />
<_MSBuildFiles Include="$(MSBuildSrcDir)\System.Collections.Immutable.dll" />
<_MSBuildFiles Include="$(MSBuildSrcDir)\Xamarin.Android.Tools.ResourceProcessors.dll" />
<_MSBuildFiles Include="$(MSBuildSrcDir)\Xamarin.AndroidTools.dll" />
<_MSBuildFiles Include="$(MSBuildSrcDir)\Xamarin.AndroidTools.pdb" />
<_MSBuildFiles Include="$(MSBuildSrcDir)\Xamarin.Installer.AndroidSDK.dll" />
Expand Down
56 changes: 26 additions & 30 deletions src/Xamarin.Android.Build.Tasks/Utilities/ManifestDocument.cs
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ internal class ManifestDocument
static XNamespace androidToolsNs = AndroidXmlToolsNamespace;

XDocument doc;

XName attName;

XElement app;
Expand Down Expand Up @@ -76,7 +76,7 @@ internal class ManifestDocument
{ "action", "android.intent.action.MAIN" },
{ "category", "android.intent.category.LAUNCHER" },
};

public string PackageName { get; set; }
public string ApplicationName { get; set; }
public string [] Placeholders { get; set; }
Expand Down Expand Up @@ -223,7 +223,7 @@ void ReorderActivityAliases (TaskLoggingHelper log, XElement app)
}
}
}

public IList<string> Merge (TaskLoggingHelper log, TypeDefinitionCache cache, List<TypeDefinition> subclasses, string applicationClass, bool embed, string bundledWearApplicationName, IEnumerable<string> mergedManifestDocuments)
{
string applicationName = ApplicationName;
Expand All @@ -232,26 +232,26 @@ public IList<string> Merge (TaskLoggingHelper log, TypeDefinitionCache cache, Li

if (manifest == null || manifest.Name != "manifest")
throw new Exception ("Root element must be 'manifest'");

var manifest_package = (string) manifest.Attribute ("package");

if (!string.IsNullOrWhiteSpace (manifest_package))
PackageName = manifest_package;

manifest.SetAttributeValue (XNamespace.Xmlns + "android", "http://schemas.android.com/apk/res/android");
if (manifest.Attribute (androidNs + "versionCode") == null)
manifest.SetAttributeValue (androidNs + "versionCode", "1");
if (manifest.Attribute (androidNs + "versionName") == null)
manifest.SetAttributeValue (androidNs + "versionName", "1.0");

app = CreateApplicationElement (manifest, applicationClass, subclasses, cache);

if (app.Attribute (androidNs + "label") == null && applicationName != null)
app.SetAttributeValue (androidNs + "label", applicationName);

var existingTypes = new HashSet<string> (
app.Descendants ().Select (a => (string) a.Attribute (attName)).Where (v => v != null));

if (!string.IsNullOrEmpty (bundledWearApplicationName)) {
if (!app.Elements ("meta-data").Any (e => e.Attributes (androidNs + "name").Any (a => a.Value == bundledWearApplicationName)))
app.Add (new XElement ("meta-data", new XAttribute (androidNs + "name", "com.google.android.wearable.beta.app"), new XAttribute (androidNs + "resource", "@xml/wearable_app_desc")));
Expand Down Expand Up @@ -359,18 +359,14 @@ public IList<string> Merge (TaskLoggingHelper log, TypeDefinitionCache cache, Li

if (!PackageName.Contains ('.'))
throw new InvalidOperationException ("/manifest/@package attribute MUST contain a period ('.').");

manifest.SetAttributeValue ("package", PackageName);

if (MultiDex)
app.Add (CreateMonoRuntimeProvider ("mono.android.MultiDexLoader", null, initOrder: --AppInitOrder));

var providerNames = AddMonoRuntimeProviders (app);

if (Debug && !embed && InstantRunEnabled) {
if (int.TryParse (SdkVersion, out int apiLevel) && apiLevel >= 19)
app.Add (CreateMonoRuntimeProvider ("mono.android.ResourcePatcher", null, initOrder: --AppInitOrder));
}
if (Debug) {
app.Add (new XComment ("suppress ExportedReceiver"));
app.Add (new XElement ("receiver",
Expand Down Expand Up @@ -482,7 +478,7 @@ void RemoveDuplicateElements ()
var duplicates = ResolveDuplicates (doc.Elements ());
foreach (var duplicate in duplicates)
duplicate.Remove ();

}

void RemoveNodes ()
Expand Down Expand Up @@ -526,15 +522,15 @@ XElement CreateApplicationElement (XElement manifest, string applicationClass, L
{
var application = manifest.Descendants ("application").FirstOrDefault ();

List<ApplicationAttribute> assemblyAttr =
List<ApplicationAttribute> assemblyAttr =
Assemblies.Select (path => ApplicationAttribute.FromCustomAttributeProvider (Resolver.GetAssembly (path)))
.Where (attr => attr != null)
.ToList ();
List<MetaDataAttribute> metadata =
List<MetaDataAttribute> metadata =
Assemblies.SelectMany (path => MetaDataAttribute.FromCustomAttributeProvider (Resolver.GetAssembly (path)))
.Where (attr => attr != null)
.ToList ();
var usesLibraryAttr =
var usesLibraryAttr =
Assemblies.SelectMany (path => UsesLibraryAttribute.FromCustomAttributeProvider (Resolver.GetAssembly (path)))
.Where (attr => attr != null);
var usesConfigurationAttr =
Expand All @@ -556,7 +552,7 @@ XElement CreateApplicationElement (XElement manifest, string applicationClass, L

typeAttr.Add (aa);
metadata.AddRange (MetaDataAttribute.FromCustomAttributeProvider (t));

typeUsesLibraryAttr.AddRange (UsesLibraryAttribute.FromCustomAttributeProvider (t));
}

Expand Down Expand Up @@ -596,13 +592,13 @@ XElement CreateApplicationElement (XElement manifest, string applicationClass, L

if (needManifestAdd)
manifest.Add (application);

AddUsesLibraries (application, usesLibraryAttrs);
AddUsesConfigurations (application, usesConfigurationattrs);

if (applicationClass != null && application.Attribute (androidNs + "name") == null)
application.Add (new XAttribute (androidNs + "name", applicationClass));

if (application.Attribute (androidNs + "allowBackup") == null)
application.Add (new XAttribute (androidNs + "allowBackup", "true"));

Expand Down Expand Up @@ -661,7 +657,7 @@ XElement CreateMonoRuntimeProvider (string name, string processName, int initOrd

bool IsMainLauncher (XElement intentFilter)
{
return LauncherIntentElements.All (entry =>
return LauncherIntentElements.All (entry =>
intentFilter.Elements (entry.Key).Any (e => ((string) e.Attribute (attName) == entry.Value)));
}

Expand Down Expand Up @@ -690,9 +686,9 @@ XElement ActivityFromTypeDefinition (TypeDefinition type, string name, int targe
if (name.StartsWith ("_"))
throw new InvalidActivityNameException (string.Format ("Activity name '{0}' is invalid, because activity namespaces may not begin with an underscore.", type.FullName));

return ToElement (type, name,
ActivityAttribute.FromTypeDefinition,
aa => aa.ToElement (Resolver, PackageName, targetSdkVersion),
return ToElement (type, name,
ActivityAttribute.FromTypeDefinition,
aa => aa.ToElement (Resolver, PackageName, targetSdkVersion),
(aa, element) => {
if (aa.MainLauncher)
AddLauncherIntentElements (element);
Expand All @@ -704,7 +700,7 @@ XElement ActivityFromTypeDefinition (TypeDefinition type, string name, int targe

XElement InstrumentationFromTypeDefinition (TypeDefinition type, string name, int targetSdkVersion)
{
return ToElement (type, name,
return ToElement (type, name,
t => InstrumentationAttribute.FromCustomAttributeProvider (t).FirstOrDefault (),
ia => {
if (ia.TargetPackage == null)
Expand Down Expand Up @@ -788,7 +784,7 @@ public void AddFastDeployPermissions ()

void AddPermissions (XElement application)
{
var assemblyAttrs =
var assemblyAttrs =
Assemblies.SelectMany (path => PermissionAttribute.FromCustomAttributeProvider (Resolver.GetAssembly (path)));
// Add unique permissions to the manifest
foreach (var pa in assemblyAttrs.Distinct (new PermissionAttribute.PermissionAttributeComparer ()))
Expand All @@ -798,7 +794,7 @@ void AddPermissions (XElement application)

void AddPermissionGroups (XElement application)
{
var assemblyAttrs =
var assemblyAttrs =
Assemblies.SelectMany (path => PermissionGroupAttribute.FromCustomAttributeProvider (Resolver.GetAssembly (path)));

// Add unique permissionGroups to the manifest
Expand Down Expand Up @@ -871,7 +867,7 @@ void AddUsesFeatures (XElement application)
application.AddBeforeSelf (feature.ToElement (PackageName));
}
}

}
}

Expand All @@ -890,7 +886,7 @@ void AddSupportsGLTextures (XElement application)

void AddInstrumentations (XElement manifest, IList<TypeDefinition> subclasses, int targetSdkVersion, TypeDefinitionCache cache)
{
var assemblyAttrs =
var assemblyAttrs =
Assemblies.SelectMany (path => InstrumentationAttribute.FromCustomAttributeProvider (Resolver.GetAssembly (path)));

// Add instrumentation to the manifest
Expand All @@ -900,7 +896,7 @@ void AddInstrumentations (XElement manifest, IList<TypeDefinition> subclasses, i
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", cache)) {
var xe = InstrumentationFromTypeDefinition (type, JavaNativeTypeManager.ToJniName (type).Replace ('/', '.'), targetSdkVersion);
Expand Down
2 changes: 1 addition & 1 deletion src/java-runtime/java-runtime.targets
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
<OutputDex>$(OutputPath)java_runtime.dex</OutputDex>
<IntermediateRuntimeOutputPath>$(IntermediateOutputPath)release</IntermediateRuntimeOutputPath>
<IntermediateRuntimeClassesTxt>$(IntermediateOutputPath)release.txt</IntermediateRuntimeClassesTxt>
<RemoveItems>java\mono\android\debug\MultiDexLoader.java;java\mono\android\MonkeyPatcher.java;java\mono\android\ResourcePatcher.java;java\mono\android\Seppuku.java;java\mono\android\debug\BuildConfig.java</RemoveItems>
<RemoveItems>java\mono\android\debug\MultiDexLoader.java;java\mono\android\Seppuku.java;java\mono\android\debug\BuildConfig.java</RemoveItems>
</_RuntimeOutput>
<_RuntimeOutput Include="$(OutputPath)java_runtime_fastdev.jar">
<OutputJar>$(OutputPath)java_runtime_fastdev.jar</OutputJar>
Expand Down
Loading

0 comments on commit f0d565f

Please sign in to comment.