Skip to content

Commit b1c92cd

Browse files
dellis1972jonpryor
authored andcommitted
[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 7877856 commit b1c92cd

1 file changed

Lines changed: 22 additions & 11 deletions

File tree

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

Lines changed: 22 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -361,6 +361,7 @@ Copyright (C) 2011-2012 Xamarin. All rights reserved.
361361
<Target Name="_BuildAdditionalResourcesCache"
362362
Inputs="@(ReferencePath);@(ReferenceDependencyPaths)"
363363
Outputs="$(_AndroidResourcePathsCache)"
364+
DependsOnTargets="$(_BeforeBuildAdditionalResourcesCache)"
364365
>
365366
<GetAdditionalResourcesFromAssemblies
366367
AndroidSdkDirectory="$(_AndroidSdkDirectory)"
@@ -503,7 +504,7 @@ Copyright (C) 2011-2012 Xamarin. All rights reserved.
503504
</ItemGroup>
504505
</Target>
505506

506-
<Target Name="_ValidateAndroidPackageProperties" DependsOnTargets="_ResolveMonoAndroidSdks">
507+
<Target Name="_ValidateAndroidPackageProperties" DependsOnTargets="$(_OnResolveMonoAndroidSdks)">
507508
<CreateProperty Value="$(ProjectDir)$(AndroidManifest)" Condition="'$(AndroidManifest)' != ''">
508509
<Output TaskParameter="Value" PropertyName="_AndroidManifestAbs"/>
509510
</CreateProperty>
@@ -537,7 +538,7 @@ Copyright (C) 2011-2012 Xamarin. All rights reserved.
537538
</Target>
538539

539540
<Target Name="_AddAndroidDefines"
540-
DependsOnTargets="_ResolveMonoAndroidSdks">
541+
DependsOnTargets="$(_OnResolveMonoAndroidSdks)">
541542
</Target>
542543

543544
<Target Name="_GetReferenceAssemblyPaths">
@@ -607,14 +608,22 @@ Copyright (C) 2011-2012 Xamarin. All rights reserved.
607608
</CreateItem>
608609
</Target>
609610

610-
<Target Name="_SetupApplicationJavaClass" AfterTargets="_ResolveMonoAndroidSdks">
611+
<Target Name="_SetupApplicationJavaClass" AfterTargets="_ResolveMonoAndroidSdks" DependsOnTargets="$(_BeforeSetupApplicationJavaClass)">
611612
<PropertyGroup>
612613
<AndroidApplicationJavaClass Condition="'$(AndroidApplicationJavaClass)' == '' And $(AndroidEnableMultiDex)">android.support.multidex.MultiDexApplication</AndroidApplicationJavaClass>
613614
<AndroidApplicationJavaClass Condition="'$(AndroidApplicationJavaClass)' == ''">android.app.Application</AndroidApplicationJavaClass>
614615
</PropertyGroup>
615616
<Message Text="Application Java class: $(AndroidApplicationJavaClass)" />
616617
</Target>
617618

619+
620+
<PropertyGroup>
621+
<_OnResolveMonoAndroidSdks>
622+
_ResolveMonoAndroidSdks
623+
;$(_AfterResolveMonoAndroidSdks)
624+
</_OnResolveMonoAndroidSdks>
625+
</PropertyGroup>
626+
618627
<!--
619628
Resolves tools paths and SDK paths, and verifies everything is installed.
620629
If the framework directories haven't been resolved, it takes care of those too,
@@ -1013,7 +1022,7 @@ because xbuild doesn't support framework reference assemblies.
10131022
<Target Name="_GenerateAndroidResourceDir"
10141023
Inputs="$(MSBuildAllProjects);@(AndroidResource);$(_AndroidBuildPropertiesCache)"
10151024
Outputs="@(_AndroidResourceDest)"
1016-
DependsOnTargets="_ResolveMonoAndroidSdks">
1025+
DependsOnTargets="$(_OnResolveMonoAndroidSdks)">
10171026
<CopyAndConvertResources SourceFiles="@(AndroidResource)"
10181027
DestinationFiles="@(_AndroidResourceDest)"
10191028
AcwMapFile="$(_AcwMapFile)"
@@ -1212,7 +1221,7 @@ because xbuild doesn't support framework reference assemblies.
12121221
<_UpdateAndroidResgenDependsOnTargets>
12131222
_CheckForDeletedResourceFile;
12141223
_ValidateAndroidPackageProperties;
1215-
_ResolveMonoAndroidSdks;
1224+
$(_OnResolveMonoAndroidSdks);
12161225
_GetLibraryImports;
12171226
_CheckDuplicateJavaLibraries;
12181227
_GetAdditionalResourcesFromAssemblies;
@@ -1418,7 +1427,7 @@ because xbuild doesn't support framework reference assemblies.
14181427
<Target Name="_AddStaticResources"
14191428
Inputs="$(MonoPlatformJarPath);$(_AndroidBuildPropertiesCache)"
14201429
Outputs="$(_AndroidStaticResourcesFlag)"
1421-
DependsOnTargets="_GetMonoPlatformJarPath">
1430+
DependsOnTargets="$(_BeforeAddStaticResources);_GetMonoPlatformJarPath">
14221431
<CopyResource ResourceName="machine.config" OutputPath="$(MonoAndroidIntermediateAssetsDir)machine.config" />
14231432
<CopyResource
14241433
ResourceName="MonoRuntimeProvider.Bundled.java"
@@ -1656,7 +1665,7 @@ because xbuild doesn't support framework reference assemblies.
16561665
</Target>
16571666

16581667
<Target Name="_GenerateJavaStubs"
1659-
DependsOnTargets="_SetLatestTargetFrameworkVersion;_PrepareAssemblies"
1668+
DependsOnTargets="_SetLatestTargetFrameworkVersion;_PrepareAssemblies;$(_AfterPrepareAssemblies)"
16601669
Inputs="$(MSBuildAllProjects);@(_ResolvedAssemblies);$(_AndroidManifestAbs);$(_AndroidBuildPropertiesCache)"
16611670
Outputs="$(IntermediateOutputPath)android\AndroidManifest.xml;$(_AcwMapFile);$(_AndroidTypeMappingJavaToManaged);$(_AndroidTypeMappingManagedToJava)">
16621671
<GenerateJavaStubs
@@ -1827,14 +1836,15 @@ because xbuild doesn't support framework reference assemblies.
18271836
_FindJavaStubFiles;
18281837
_AddStaticResources;
18291838
_GetMonoPlatformJarPath;
1830-
_ResolveMonoAndroidSdks;
1839+
$(_OnResolveMonoAndroidSdks);
18311840
_GetLibraryImports;
18321841
_CheckDuplicateJavaLibraries;
18331842
_CreateBaseApk;
18341843
_GetAdditionalResourcesFromAssemblies;
18351844
_CreateAdditionalResourceCache;
18361845
_DetermineJavaLibrariesToCompile;
18371846
$(_CompileJavaDependsOnTargetsForJack);
1847+
$(_CompileJavaDependsOnTargets)
18381848
</_CompileJavaDependsOnTargets>
18391849
</PropertyGroup>
18401850

@@ -2134,6 +2144,7 @@ because xbuild doesn't support framework reference assemblies.
21342144
_LinkAssemblies;
21352145
_GetAddOnPlatformLibraries;
21362146
_CompileDex;
2147+
$(_AfterCompileDex);
21372148
_CompileJava;
21382149
_CreateBaseApk;
21392150
_PrepareAssemblies;
@@ -2248,7 +2259,7 @@ because xbuild doesn't support framework reference assemblies.
22482259
</_CopyPackageInputs>
22492260
</PropertyGroup>
22502261

2251-
<Target Name="_DefineBuildTargetAbis">
2262+
<Target Name="_DefineBuildTargetAbis" DependsOnTargets="$(_BeforeDefineBuildTargetAbis)">
22522263
<CreateProperty Value="$(AndroidSupportedAbis)" Condition="'$(_BuildTargetAbis)' == ''">
22532264
<Output TaskParameter="Value" PropertyName="_BuildTargetAbis"/>
22542265
</CreateProperty>
@@ -2311,7 +2322,7 @@ because xbuild doesn't support framework reference assemblies.
23112322
</Target>
23122323

23132324

2314-
<Target Name="_ResolveAndroidSigningKey" DependsOnTargets="_ResolveMonoAndroidSdks">
2325+
<Target Name="_ResolveAndroidSigningKey" DependsOnTargets="$(_OnResolveMonoAndroidSdks)">
23152326
<!-- would use a PropertyGroup here but xbuild doesn't support it -->
23162327
<CreateProperty Value="$(_ApkDebugKeyStore)" Condition="'$(AndroidKeyStore)'!='True'">
23172328
<Output TaskParameter="Value" PropertyName="_ApkKeyStore"/>
@@ -2430,7 +2441,7 @@ because xbuild doesn't support framework reference assemblies.
24302441
<PropertyGroup>
24312442
<_BuildApkDependsOnTargets>
24322443
Build
2433-
;_ResolveMonoAndroidSdks
2444+
;$(_OnResolveMonoAndroidSdks)
24342445
;_ValidateAndroidPackageProperties
24352446
;_BuildApkEmbed
24362447
</_BuildApkDependsOnTargets>

0 commit comments

Comments
 (0)