Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Xamarin.Android.Build.Tasks] move $(AdbTarget) out of build.props #2428

Merged
merged 1 commit into from
Nov 12, 2018

Conversation

jonathanpeppers
Copy link
Member

$(IntermediateOutputPath)build.props, or
$(_AndroidBuildPropertiesCache) is a file used as an Input to many
MSBuild targets. We write many important properties in this file as
a mechanism to trigger most of the build to rerun. So for example, if
you enabled proguard, the $(AndroidEnableProguard) MSBuild property
would re-run a lot of the build, such as _CompileJava,
_CompileDex, etc.

Right now there are two problematic properties in this file:

  • $(AdbTarget)
  • $(AdbOptions)

This means if you switched from a different Android deploy target:
emulator to device, or just a different device--it would run a full
build! $(AdbTarget) and $(AdbOptions) need to trigger MSBuild
targets related to "Fast Deployment" to re-run, but not everything.
What makes matters even worse, is sometimes design-time builds will
pass a blank $(AdbTarget). This causes expensive targets to run
again.

I've moved these properties to a new file:

  • $(IntermediateOutputPath)adb.props or
  • $(_AdbPropertiesCache)

Then downstream in monodroid, there is a single line that needs to be
changed from $(_AdbPropertiesCache) to $(_AdbPropertiesCache).
This will re-trigger the APK to be installed when devices change.

`$(IntermediateOutputPath)build.props`, or
`$(_AndroidBuildPropertiesCache)` is a file used as an `Input` to many
MSBuild targets. We write many *important* properties in this file as
a mechanism to trigger most of the build to rerun. So for example, if
you enabled proguard, the `$(AndroidEnableProguard)` MSBuild property
would re-run a lot of the build, such as `_CompileJava`,
`_CompileDex`, etc.

Right now there are two problematic properties in this file:
- `$(AdbTarget)`
- `$(AdbOptions)`

This means if you switched from a different Android deploy target:
emulator to device, or just a different device--it would run a full
build! `$(AdbTarget)` and `$(AdbOptions)` need to trigger MSBuild
targets related to "Fast Deployment" to re-run, but not everything.
What makes matters even worse, is sometimes design-time builds will
pass a blank `$(AdbTarget)`. This causes expensive targets to run
again.

I've moved these properties to a new file:
- `$(IntermediateOutputPath)adb.props` or
- `$(_AdbPropertiesCache)`

Then downstream in monodroid, there is a single line that needs to be
changed from `$(_AdbPropertiesCache)` to `$(_AdbPropertiesCache)`.
This will re-trigger the APK to be installed when devices change.
@dellis1972 dellis1972 merged commit 3403bd7 into master Nov 12, 2018
@Therzok Therzok deleted the adb.props branch November 13, 2018 13:21
jonpryor added a commit to jonpryor/xamarin-android that referenced this pull request Jul 14, 2021
Changes: JamesNK/Newtonsoft.Json@12.0.3...13.0.1

  * JamesNK/Newtonsoft.Json@ae9fe44e: Remove compiler package and update sourcelink (dotnet#2498)
  * JamesNK/Newtonsoft.Json@8ef66218: Remove prerelease for 13.0.1
  * JamesNK/Newtonsoft.Json@11331f50: Update SDK to 5.0.200 (dotnet#2495)
  * JamesNK/Newtonsoft.Json@c7e8abc0: Update to 13.0.1-beta2
  * JamesNK/Newtonsoft.Json@1745d7c1: Fix JTokenWriter when writing comment to an object (dotnet#2493)
  * JamesNK/Newtonsoft.Json@583eb120: Fix missing error when deserializing JToken with a contract type mismatch (dotnet#2494)
  * JamesNK/Newtonsoft.Json@b6dc05be: Change MaxDepth default to 64 (dotnet#2473)
  * JamesNK/Newtonsoft.Json@15525f1c: Fix JsonWriter.WriteToken to allow null with string token (dotnet#2472)
  * JamesNK/Newtonsoft.Json@926d2f0f: Enable embed untracked sources (dotnet#2471)
  * JamesNK/Newtonsoft.Json@0a56633b: Fixes dotnet#2372 - variable typos (dotnet#2465)
  * JamesNK/Newtonsoft.Json@5a35c77d: Update version to 13.0.1 (dotnet#2463)
  * JamesNK/Newtonsoft.Json@7e77bbe1: Change JsonReader and JsonSerializer default max depth to 128 (dotnet#2462)
  * JamesNK/Newtonsoft.Json@42139ea6: Add JsonSelectSettings and regex timeout
  * JamesNK/Newtonsoft.Json@95a6eb3a: jpath regex timeout support added for a single regex expression, global umbrella for all regex calls, and support for allowing regex calls to get compiled if necessary
  * JamesNK/Newtonsoft.Json@1403f5d3: Fix serializing nullable struct dictionaries (dotnet#2452)
  * JamesNK/Newtonsoft.Json@60be32f4: Use naming strategy when deserializing dictionary enum keys (dotnet#2448)
  * JamesNK/Newtonsoft.Json@ff5ffb28: Copy annotations when cloning elements (dotnet#2442)
  * JamesNK/Newtonsoft.Json@0cf47a46: Missing nullability annotation (dotnet#2438)
  * JamesNK/Newtonsoft.Json@6795ca55: Fixed tests to work in Moscow, Russia UTC+3 timezone. (dotnet#2416)
  * JamesNK/Newtonsoft.Json@c918ca86: Code Typo Fix: Universial => Universal (dotnet#2383)
  * JamesNK/Newtonsoft.Json@c298f3d6: Fix typo in SerializeTypeNameHandling sample (dotnet#2428)
  * JamesNK/Newtonsoft.Json@a222c8b6: Update to net50 and fix warnings (dotnet#2424)
  * JamesNK/Newtonsoft.Json@666d9760: Fix wrong define is used in StringUtils.ToLower() (dotnet#2304)
  * JamesNK/Newtonsoft.Json@a31156e9: Update NullValueHandlingIgnore.aml (dotnet#2226)
  * JamesNK/Newtonsoft.Json@936acbf6: Update version to 13.0.1-beta and remove portable builds (dotnet#2228)
  * JamesNK/Newtonsoft.Json@9be95e0f: Do not treat ignored field as missing member when deserializing from overriden json constructor (dotnet#2224)
jonpryor added a commit to jonpryor/xamarin-android that referenced this pull request Jul 15, 2021
Changes: JamesNK/Newtonsoft.Json@12.0.3...13.0.1

  * JamesNK/Newtonsoft.Json@ae9fe44e: Remove compiler package and update sourcelink (dotnet#2498)
  * JamesNK/Newtonsoft.Json@8ef66218: Remove prerelease for 13.0.1
  * JamesNK/Newtonsoft.Json@11331f50: Update SDK to 5.0.200 (dotnet#2495)
  * JamesNK/Newtonsoft.Json@c7e8abc0: Update to 13.0.1-beta2
  * JamesNK/Newtonsoft.Json@1745d7c1: Fix JTokenWriter when writing comment to an object (dotnet#2493)
  * JamesNK/Newtonsoft.Json@583eb120: Fix missing error when deserializing JToken with a contract type mismatch (dotnet#2494)
  * JamesNK/Newtonsoft.Json@b6dc05be: Change MaxDepth default to 64 (dotnet#2473)
  * JamesNK/Newtonsoft.Json@15525f1c: Fix JsonWriter.WriteToken to allow null with string token (dotnet#2472)
  * JamesNK/Newtonsoft.Json@926d2f0f: Enable embed untracked sources (dotnet#2471)
  * JamesNK/Newtonsoft.Json@0a56633b: Fixes dotnet#2372 - variable typos (dotnet#2465)
  * JamesNK/Newtonsoft.Json@5a35c77d: Update version to 13.0.1 (dotnet#2463)
  * JamesNK/Newtonsoft.Json@7e77bbe1: Change JsonReader and JsonSerializer default max depth to 128 (dotnet#2462)
  * JamesNK/Newtonsoft.Json@42139ea6: Add JsonSelectSettings and regex timeout
  * JamesNK/Newtonsoft.Json@95a6eb3a: jpath regex timeout support added for a single regex expression, global umbrella for all regex calls, and support for allowing regex calls to get compiled if necessary
  * JamesNK/Newtonsoft.Json@1403f5d3: Fix serializing nullable struct dictionaries (dotnet#2452)
  * JamesNK/Newtonsoft.Json@60be32f4: Use naming strategy when deserializing dictionary enum keys (dotnet#2448)
  * JamesNK/Newtonsoft.Json@ff5ffb28: Copy annotations when cloning elements (dotnet#2442)
  * JamesNK/Newtonsoft.Json@0cf47a46: Missing nullability annotation (dotnet#2438)
  * JamesNK/Newtonsoft.Json@6795ca55: Fixed tests to work in Moscow, Russia UTC+3 timezone. (dotnet#2416)
  * JamesNK/Newtonsoft.Json@c918ca86: Code Typo Fix: Universial => Universal (dotnet#2383)
  * JamesNK/Newtonsoft.Json@c298f3d6: Fix typo in SerializeTypeNameHandling sample (dotnet#2428)
  * JamesNK/Newtonsoft.Json@a222c8b6: Update to net50 and fix warnings (dotnet#2424)
  * JamesNK/Newtonsoft.Json@666d9760: Fix wrong define is used in StringUtils.ToLower() (dotnet#2304)
  * JamesNK/Newtonsoft.Json@a31156e9: Update NullValueHandlingIgnore.aml (dotnet#2226)
  * JamesNK/Newtonsoft.Json@936acbf6: Update version to 13.0.1-beta and remove portable builds (dotnet#2228)
  * JamesNK/Newtonsoft.Json@9be95e0f: Do not treat ignored field as missing member when deserializing from overriden json constructor (dotnet#2224)

The `PackagingTest.NetStandardReferenceTest()` test is updated to no
longer list `Microsoft.CSharp.dll` as an expected file, as with
`Newtonsoft.Json.dll` v13.0.1, our build now consumes the
netstandard2.0-profile version, not the netstandard1.3 version, and
the netstandard 2.0 version doesn't require `Microsoft.CSharp.dll`.
jonpryor added a commit to jonpryor/xamarin-android that referenced this pull request Jul 15, 2021
Changes: JamesNK/Newtonsoft.Json@12.0.3...13.0.1

  * JamesNK/Newtonsoft.Json@ae9fe44e: Remove compiler package and update sourcelink (dotnet#2498)
  * JamesNK/Newtonsoft.Json@8ef66218: Remove prerelease for 13.0.1
  * JamesNK/Newtonsoft.Json@11331f50: Update SDK to 5.0.200 (dotnet#2495)
  * JamesNK/Newtonsoft.Json@c7e8abc0: Update to 13.0.1-beta2
  * JamesNK/Newtonsoft.Json@1745d7c1: Fix JTokenWriter when writing comment to an object (dotnet#2493)
  * JamesNK/Newtonsoft.Json@583eb120: Fix missing error when deserializing JToken with a contract type mismatch (dotnet#2494)
  * JamesNK/Newtonsoft.Json@b6dc05be: Change MaxDepth default to 64 (dotnet#2473)
  * JamesNK/Newtonsoft.Json@15525f1c: Fix JsonWriter.WriteToken to allow null with string token (dotnet#2472)
  * JamesNK/Newtonsoft.Json@926d2f0f: Enable embed untracked sources (dotnet#2471)
  * JamesNK/Newtonsoft.Json@0a56633b: Fixes dotnet#2372 - variable typos (dotnet#2465)
  * JamesNK/Newtonsoft.Json@5a35c77d: Update version to 13.0.1 (dotnet#2463)
  * JamesNK/Newtonsoft.Json@7e77bbe1: Change JsonReader and JsonSerializer default max depth to 128 (dotnet#2462)
  * JamesNK/Newtonsoft.Json@42139ea6: Add JsonSelectSettings and regex timeout
  * JamesNK/Newtonsoft.Json@95a6eb3a: jpath regex timeout support added for a single regex expression, global umbrella for all regex calls, and support for allowing regex calls to get compiled if necessary
  * JamesNK/Newtonsoft.Json@1403f5d3: Fix serializing nullable struct dictionaries (dotnet#2452)
  * JamesNK/Newtonsoft.Json@60be32f4: Use naming strategy when deserializing dictionary enum keys (dotnet#2448)
  * JamesNK/Newtonsoft.Json@ff5ffb28: Copy annotations when cloning elements (dotnet#2442)
  * JamesNK/Newtonsoft.Json@0cf47a46: Missing nullability annotation (dotnet#2438)
  * JamesNK/Newtonsoft.Json@6795ca55: Fixed tests to work in Moscow, Russia UTC+3 timezone. (dotnet#2416)
  * JamesNK/Newtonsoft.Json@c918ca86: Code Typo Fix: Universial => Universal (dotnet#2383)
  * JamesNK/Newtonsoft.Json@c298f3d6: Fix typo in SerializeTypeNameHandling sample (dotnet#2428)
  * JamesNK/Newtonsoft.Json@a222c8b6: Update to net50 and fix warnings (dotnet#2424)
  * JamesNK/Newtonsoft.Json@666d9760: Fix wrong define is used in StringUtils.ToLower() (dotnet#2304)
  * JamesNK/Newtonsoft.Json@a31156e9: Update NullValueHandlingIgnore.aml (dotnet#2226)
  * JamesNK/Newtonsoft.Json@936acbf6: Update version to 13.0.1-beta and remove portable builds (dotnet#2228)
  * JamesNK/Newtonsoft.Json@9be95e0f: Do not treat ignored field as missing member when deserializing from overriden json constructor (dotnet#2224)

The `PackagingTest.NetStandardReferenceTest()` test is updated, as
the list of implicitly referenced assemblies changed:

  * `Microsoft.CSharp.dll` is no longer referenced
  * `System.Data.dll` is now referenced.

It appears that the primary cause of this change is that with
`Newtonsoft.Json` 12.0.3, the .NET Standard 1.3-profile assemblies
were included into the app, while with 13.0.1, the .NET Standard-2.0
profile assemblies are instead used.
jonpryor added a commit to jonpryor/xamarin-android that referenced this pull request Jul 16, 2021
Changes: JamesNK/Newtonsoft.Json@12.0.3...13.0.1

  * JamesNK/Newtonsoft.Json@ae9fe44e: Remove compiler package and update sourcelink (dotnet#2498)
  * JamesNK/Newtonsoft.Json@8ef66218: Remove prerelease for 13.0.1
  * JamesNK/Newtonsoft.Json@11331f50: Update SDK to 5.0.200 (dotnet#2495)
  * JamesNK/Newtonsoft.Json@c7e8abc0: Update to 13.0.1-beta2
  * JamesNK/Newtonsoft.Json@1745d7c1: Fix JTokenWriter when writing comment to an object (dotnet#2493)
  * JamesNK/Newtonsoft.Json@583eb120: Fix missing error when deserializing JToken with a contract type mismatch (dotnet#2494)
  * JamesNK/Newtonsoft.Json@b6dc05be: Change MaxDepth default to 64 (dotnet#2473)
  * JamesNK/Newtonsoft.Json@15525f1c: Fix JsonWriter.WriteToken to allow null with string token (dotnet#2472)
  * JamesNK/Newtonsoft.Json@926d2f0f: Enable embed untracked sources (dotnet#2471)
  * JamesNK/Newtonsoft.Json@0a56633b: Fixes dotnet#2372 - variable typos (dotnet#2465)
  * JamesNK/Newtonsoft.Json@5a35c77d: Update version to 13.0.1 (dotnet#2463)
  * JamesNK/Newtonsoft.Json@7e77bbe1: Change JsonReader and JsonSerializer default max depth to 128 (dotnet#2462)
  * JamesNK/Newtonsoft.Json@42139ea6: Add JsonSelectSettings and regex timeout
  * JamesNK/Newtonsoft.Json@95a6eb3a: jpath regex timeout support added for a single regex expression, global umbrella for all regex calls, and support for allowing regex calls to get compiled if necessary
  * JamesNK/Newtonsoft.Json@1403f5d3: Fix serializing nullable struct dictionaries (dotnet#2452)
  * JamesNK/Newtonsoft.Json@60be32f4: Use naming strategy when deserializing dictionary enum keys (dotnet#2448)
  * JamesNK/Newtonsoft.Json@ff5ffb28: Copy annotations when cloning elements (dotnet#2442)
  * JamesNK/Newtonsoft.Json@0cf47a46: Missing nullability annotation (dotnet#2438)
  * JamesNK/Newtonsoft.Json@6795ca55: Fixed tests to work in Moscow, Russia UTC+3 timezone. (dotnet#2416)
  * JamesNK/Newtonsoft.Json@c918ca86: Code Typo Fix: Universial => Universal (dotnet#2383)
  * JamesNK/Newtonsoft.Json@c298f3d6: Fix typo in SerializeTypeNameHandling sample (dotnet#2428)
  * JamesNK/Newtonsoft.Json@a222c8b6: Update to net50 and fix warnings (dotnet#2424)
  * JamesNK/Newtonsoft.Json@666d9760: Fix wrong define is used in StringUtils.ToLower() (dotnet#2304)
  * JamesNK/Newtonsoft.Json@a31156e9: Update NullValueHandlingIgnore.aml (dotnet#2226)
  * JamesNK/Newtonsoft.Json@936acbf6: Update version to 13.0.1-beta and remove portable builds (dotnet#2228)
  * JamesNK/Newtonsoft.Json@9be95e0f: Do not treat ignored field as missing member when deserializing from overriden json constructor (dotnet#2224)

The `PackagingTest.NetStandardReferenceTest()` test is updated, as
the list of implicitly referenced assemblies changed:

  * `Microsoft.CSharp.dll` is no longer referenced
  * `System.Data.dll` is now referenced.

It appears that the primary cause of this change is that with
`Newtonsoft.Json` 12.0.3, the .NET Standard 1.3-profile assemblies
were included into the app, while with 13.0.1, the .NET Standard-2.0
profile assemblies are instead used.
jonpryor added a commit that referenced this pull request Jul 16, 2021
Changes: JamesNK/Newtonsoft.Json@12.0.3...13.0.1

  * JamesNK/Newtonsoft.Json@ae9fe44e: Remove compiler package and update sourcelink (#2498)
  * JamesNK/Newtonsoft.Json@8ef66218: Remove prerelease for 13.0.1
  * JamesNK/Newtonsoft.Json@11331f50: Update SDK to 5.0.200 (#2495)
  * JamesNK/Newtonsoft.Json@c7e8abc0: Update to 13.0.1-beta2
  * JamesNK/Newtonsoft.Json@1745d7c1: Fix JTokenWriter when writing comment to an object (#2493)
  * JamesNK/Newtonsoft.Json@583eb120: Fix missing error when deserializing JToken with a contract type mismatch (#2494)
  * JamesNK/Newtonsoft.Json@b6dc05be: Change MaxDepth default to 64 (#2473)
  * JamesNK/Newtonsoft.Json@15525f1c: Fix JsonWriter.WriteToken to allow null with string token (#2472)
  * JamesNK/Newtonsoft.Json@926d2f0f: Enable embed untracked sources (#2471)
  * JamesNK/Newtonsoft.Json@0a56633b: Fixes #2372 - variable typos (#2465)
  * JamesNK/Newtonsoft.Json@5a35c77d: Update version to 13.0.1 (#2463)
  * JamesNK/Newtonsoft.Json@7e77bbe1: Change JsonReader and JsonSerializer default max depth to 128 (#2462)
  * JamesNK/Newtonsoft.Json@42139ea6: Add JsonSelectSettings and regex timeout
  * JamesNK/Newtonsoft.Json@95a6eb3a: jpath regex timeout support added for a single regex expression, global umbrella for all regex calls, and support for allowing regex calls to get compiled if necessary
  * JamesNK/Newtonsoft.Json@1403f5d3: Fix serializing nullable struct dictionaries (#2452)
  * JamesNK/Newtonsoft.Json@60be32f4: Use naming strategy when deserializing dictionary enum keys (#2448)
  * JamesNK/Newtonsoft.Json@ff5ffb28: Copy annotations when cloning elements (#2442)
  * JamesNK/Newtonsoft.Json@0cf47a46: Missing nullability annotation (#2438)
  * JamesNK/Newtonsoft.Json@6795ca55: Fixed tests to work in Moscow, Russia UTC+3 timezone. (#2416)
  * JamesNK/Newtonsoft.Json@c918ca86: Code Typo Fix: Universial => Universal (#2383)
  * JamesNK/Newtonsoft.Json@c298f3d6: Fix typo in SerializeTypeNameHandling sample (#2428)
  * JamesNK/Newtonsoft.Json@a222c8b6: Update to net50 and fix warnings (#2424)
  * JamesNK/Newtonsoft.Json@666d9760: Fix wrong define is used in StringUtils.ToLower() (#2304)
  * JamesNK/Newtonsoft.Json@a31156e9: Update NullValueHandlingIgnore.aml (#2226)
  * JamesNK/Newtonsoft.Json@936acbf6: Update version to 13.0.1-beta and remove portable builds (#2228)
  * JamesNK/Newtonsoft.Json@9be95e0f: Do not treat ignored field as missing member when deserializing from overriden json constructor (#2224)

The `PackagingTest.NetStandardReferenceTest()` test is updated, as
the list of implicitly referenced assemblies changed:

  * `Microsoft.CSharp.dll` is no longer referenced
  * `System.Data.dll` is now referenced.

It appears that the primary cause of this change is that with
`Newtonsoft.Json` 12.0.3, the .NET Standard 1.3-profile assemblies
were included into the app, while with 13.0.1, the .NET Standard-2.0
profile assemblies are instead used.
@github-actions github-actions bot locked and limited conversation to collaborators Feb 1, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants