Skip to content

Commit fc225b1

Browse files
committed
[Xamarin.Android.Build.Tasks] Fix classes.dex deployment. (#236)
Context https://bugzilla.xamarin.com/show_bug.cgi?id=44633 Enabling <AndroidUseSharedRuntime> in some projects causes `classes.dex` to not deploy to device. For some bizzare reason when running a build vs XS the AfterTargets are NOT being called for _CompileDex. As a result the targets that need to be called to support debugging are not being run. This commit adds a bunch of new property extension points which will allow the debugging targets to inject the additonal target requirements directly rather than relying on Before/After targets.
1 parent 567bc4f commit fc225b1

File tree

1 file changed

+22
-11
lines changed

1 file changed

+22
-11
lines changed

src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.targets

Lines changed: 22 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -366,6 +366,7 @@ Copyright (C) 2011-2012 Xamarin. All rights reserved.
366366
<Target Name="_BuildAdditionalResourcesCache"
367367
Inputs="@(ReferencePath);@(ReferenceDependencyPaths)"
368368
Outputs="$(_AndroidResourcePathsCache)"
369+
DependsOnTargets="$(_BeforeBuildAdditionalResourcesCache)"
369370
>
370371
<GetAdditionalResourcesFromAssemblies
371372
AndroidSdkDirectory="$(_AndroidSdkDirectory)"
@@ -508,7 +509,7 @@ Copyright (C) 2011-2012 Xamarin. All rights reserved.
508509
</ItemGroup>
509510
</Target>
510511

511-
<Target Name="_ValidateAndroidPackageProperties" DependsOnTargets="_ResolveMonoAndroidSdks">
512+
<Target Name="_ValidateAndroidPackageProperties" DependsOnTargets="$(_OnResolveMonoAndroidSdks)">
512513
<CreateProperty Value="$(ProjectDir)$(AndroidManifest)" Condition="'$(AndroidManifest)' != ''">
513514
<Output TaskParameter="Value" PropertyName="_AndroidManifestAbs"/>
514515
</CreateProperty>
@@ -542,7 +543,7 @@ Copyright (C) 2011-2012 Xamarin. All rights reserved.
542543
</Target>
543544

544545
<Target Name="_AddAndroidDefines"
545-
DependsOnTargets="_ResolveMonoAndroidSdks">
546+
DependsOnTargets="$(_OnResolveMonoAndroidSdks)">
546547
</Target>
547548

548549
<Target Name="_GetReferenceAssemblyPaths">
@@ -612,14 +613,22 @@ Copyright (C) 2011-2012 Xamarin. All rights reserved.
612613
</CreateItem>
613614
</Target>
614615

615-
<Target Name="_SetupApplicationJavaClass" AfterTargets="_ResolveMonoAndroidSdks">
616+
<Target Name="_SetupApplicationJavaClass" AfterTargets="_ResolveMonoAndroidSdks" DependsOnTargets="$(_BeforeSetupApplicationJavaClass)">
616617
<PropertyGroup>
617618
<AndroidApplicationJavaClass Condition="'$(AndroidApplicationJavaClass)' == '' And $(AndroidEnableMultiDex)">android.support.multidex.MultiDexApplication</AndroidApplicationJavaClass>
618619
<AndroidApplicationJavaClass Condition="'$(AndroidApplicationJavaClass)' == ''">android.app.Application</AndroidApplicationJavaClass>
619620
</PropertyGroup>
620621
<Message Text="Application Java class: $(AndroidApplicationJavaClass)" />
621622
</Target>
622623

624+
625+
<PropertyGroup>
626+
<_OnResolveMonoAndroidSdks>
627+
_ResolveMonoAndroidSdks
628+
;$(_AfterResolveMonoAndroidSdks)
629+
</_OnResolveMonoAndroidSdks>
630+
</PropertyGroup>
631+
623632
<!--
624633
Resolves tools paths and SDK paths, and verifies everything is installed.
625634
If the framework directories haven't been resolved, it takes care of those too,
@@ -1018,7 +1027,7 @@ because xbuild doesn't support framework reference assemblies.
10181027
<Target Name="_GenerateAndroidResourceDir"
10191028
Inputs="$(MSBuildAllProjects);@(AndroidResource);$(_AndroidBuildPropertiesCache)"
10201029
Outputs="@(_AndroidResourceDest)"
1021-
DependsOnTargets="_ResolveMonoAndroidSdks">
1030+
DependsOnTargets="$(_OnResolveMonoAndroidSdks)">
10221031
<CopyAndConvertResources SourceFiles="@(AndroidResource)"
10231032
DestinationFiles="@(_AndroidResourceDest)"
10241033
AcwMapFile="$(_AcwMapFile)"
@@ -1217,7 +1226,7 @@ because xbuild doesn't support framework reference assemblies.
12171226
<_UpdateAndroidResgenDependsOnTargets>
12181227
_CheckForDeletedResourceFile;
12191228
_ValidateAndroidPackageProperties;
1220-
_ResolveMonoAndroidSdks;
1229+
$(_OnResolveMonoAndroidSdks);
12211230
_GetLibraryImports;
12221231
_CheckDuplicateJavaLibraries;
12231232
_GetAdditionalResourcesFromAssemblies;
@@ -1423,7 +1432,7 @@ because xbuild doesn't support framework reference assemblies.
14231432
<Target Name="_AddStaticResources"
14241433
Inputs="$(MonoPlatformJarPath);$(_AndroidBuildPropertiesCache)"
14251434
Outputs="$(_AndroidStaticResourcesFlag)"
1426-
DependsOnTargets="_GetMonoPlatformJarPath">
1435+
DependsOnTargets="$(_BeforeAddStaticResources);_GetMonoPlatformJarPath">
14271436
<CopyResource ResourceName="machine.config" OutputPath="$(MonoAndroidIntermediateAssetsDir)machine.config" />
14281437
<CopyResource
14291438
ResourceName="MonoRuntimeProvider.Bundled.java"
@@ -1661,7 +1670,7 @@ because xbuild doesn't support framework reference assemblies.
16611670
</Target>
16621671

16631672
<Target Name="_GenerateJavaStubs"
1664-
DependsOnTargets="_SetLatestTargetFrameworkVersion;_PrepareAssemblies"
1673+
DependsOnTargets="_SetLatestTargetFrameworkVersion;_PrepareAssemblies;$(_AfterPrepareAssemblies)"
16651674
Inputs="$(MSBuildAllProjects);@(_ResolvedAssemblies);$(_AndroidManifestAbs);$(_AndroidBuildPropertiesCache)"
16661675
Outputs="$(IntermediateOutputPath)android\AndroidManifest.xml;$(_AcwMapFile);$(_AndroidTypeMappingJavaToManaged);$(_AndroidTypeMappingManagedToJava)">
16671676
<GenerateJavaStubs
@@ -1832,14 +1841,15 @@ because xbuild doesn't support framework reference assemblies.
18321841
_FindJavaStubFiles;
18331842
_AddStaticResources;
18341843
_GetMonoPlatformJarPath;
1835-
_ResolveMonoAndroidSdks;
1844+
$(_OnResolveMonoAndroidSdks);
18361845
_GetLibraryImports;
18371846
_CheckDuplicateJavaLibraries;
18381847
_CreateBaseApk;
18391848
_GetAdditionalResourcesFromAssemblies;
18401849
_CreateAdditionalResourceCache;
18411850
_DetermineJavaLibrariesToCompile;
18421851
$(_CompileJavaDependsOnTargetsForJack);
1852+
$(_CompileJavaDependsOnTargets)
18431853
</_CompileJavaDependsOnTargets>
18441854
</PropertyGroup>
18451855

@@ -2139,6 +2149,7 @@ because xbuild doesn't support framework reference assemblies.
21392149
_LinkAssemblies;
21402150
_GetAddOnPlatformLibraries;
21412151
_CompileDex;
2152+
$(_AfterCompileDex);
21422153
_CompileJava;
21432154
_CreateBaseApk;
21442155
_PrepareAssemblies;
@@ -2252,7 +2263,7 @@ because xbuild doesn't support framework reference assemblies.
22522263
</_CopyPackageInputs>
22532264
</PropertyGroup>
22542265

2255-
<Target Name="_DefineBuildTargetAbis">
2266+
<Target Name="_DefineBuildTargetAbis" DependsOnTargets="$(_BeforeDefineBuildTargetAbis)">
22562267
<CreateProperty Value="$(AndroidSupportedAbis)" Condition="'$(_BuildTargetAbis)' == ''">
22572268
<Output TaskParameter="Value" PropertyName="_BuildTargetAbis"/>
22582269
</CreateProperty>
@@ -2314,7 +2325,7 @@ because xbuild doesn't support framework reference assemblies.
23142325
</Target>
23152326

23162327

2317-
<Target Name="_ResolveAndroidSigningKey" DependsOnTargets="_ResolveMonoAndroidSdks">
2328+
<Target Name="_ResolveAndroidSigningKey" DependsOnTargets="$(_OnResolveMonoAndroidSdks)">
23182329
<!-- would use a PropertyGroup here but xbuild doesn't support it -->
23192330
<CreateProperty Value="$(_ApkDebugKeyStore)" Condition="'$(AndroidKeyStore)'!='True'">
23202331
<Output TaskParameter="Value" PropertyName="_ApkKeyStore"/>
@@ -2433,7 +2444,7 @@ because xbuild doesn't support framework reference assemblies.
24332444
<PropertyGroup>
24342445
<_BuildApkDependsOnTargets>
24352446
Build
2436-
;_ResolveMonoAndroidSdks
2447+
;$(_OnResolveMonoAndroidSdks)
24372448
;_ValidateAndroidPackageProperties
24382449
;_BuildApkEmbed
24392450
</_BuildApkDependsOnTargets>

0 commit comments

Comments
 (0)