Add build configuration to generate runtime packs for Android (#34192)
authorMitchell Hwang <mitchhwang1418@gmail.com>
Mon, 6 Apr 2020 16:30:36 +0000 (12:30 -0400)
committerGitHub <noreply@github.com>
Mon, 6 Apr 2020 16:30:36 +0000 (12:30 -0400)
* [installer] Include Android into installer

* [eng] Provide Android with just Microsoft.NETCore.App.Runtime

* Attempt to make same changes from iOS PR

Co-authored-by: Mitchell Hwang <mihw@microsoft.com>
eng/Subsets.props
eng/liveBuilds.targets
eng/pipelines/installer/jobs/base-job.yml
eng/pipelines/runtime-official.yml
eng/pipelines/runtime.yml
src/installer/Directory.Build.props
src/installer/pkg/projects/Directory.Build.targets
src/installer/pkg/projects/netcoreapp/Directory.Build.props

index 55b261c..748d226 100644 (file)
@@ -49,8 +49,7 @@
 
   <PropertyGroup>
     <DefaultSubsetCategories>libraries-installer-coreclr-mono</DefaultSubsetCategories>
-    <DefaultSubsetCategories Condition="'$(TargetOS)' == 'iOS'">libraries-installer-mono</DefaultSubsetCategories>
-    <DefaultSubsetCategories Condition="'$(TargetOS)' == 'Android'">libraries-mono</DefaultSubsetCategories>
+    <DefaultSubsetCategories Condition="'$(TargetOS)' == 'iOS' or '$(TargetOS)' == 'Android'">libraries-installer-mono</DefaultSubsetCategories>
   </PropertyGroup>
 
   <PropertyGroup>
@@ -63,7 +62,7 @@
     <DefaultLibrariesSubsets Condition="'$(IncludeLibrariesTestSubset)' == 'true'">$(DefaultLibrariesSubsets)-libtests</DefaultLibrariesSubsets>
 
     <DefaultInstallerSubsets>corehost-managed-depproj-pkgproj-bundle-installers-test</DefaultInstallerSubsets>
-    <DefaultInstallerSubsets Condition="'$(TargetOS)' == 'iOS'">depproj-pkgproj</DefaultInstallerSubsets>
+    <DefaultInstallerSubsets Condition="'$(TargetOS)' == 'iOS' or '$(TargetOS)' == 'Android'">depproj-pkgproj</DefaultInstallerSubsets>
   </PropertyGroup>
 
   <PropertyGroup>
index adcf9b3..010b08d 100644 (file)
         <IsNative>true</IsNative>
       </RuntimeFiles>
 
-      <MonoCrossFiles Condition="'$(TargetOS)' == 'iOS'"
+      <MonoCrossFiles Condition="'$(TargetOS)' == 'iOS' or '$(TargetOS)' == 'Android'"
         Include="$(MonoArtifactsPath)\cross\*.*" />
-      <MonoIncludeFiles Condition="'$(TargetOS)' == 'iOS'"
+      <MonoIncludeFiles Condition="'$(TargetOS)' == 'iOS' or '$(TargetOS)' == 'Android'"
         Include="$(MonoArtifactsPath)\include\**\*.*" />
     </ItemGroup>
 
index ba2472d..15f5137 100644 (file)
@@ -127,7 +127,7 @@ jobs:
         $(CommonMSBuildArgs)
         $(OfficialBuildArg)
 
-  - ${{ if eq(parameters.osGroup, 'iOS') }}:
+  - ${{ if in(parameters.osGroup, 'iOS', 'Android') }}:
 
     - name: CommonMSBuildArgs
       value: >-
index 8ba902c..7dcde6a 100644 (file)
@@ -206,6 +206,10 @@ stages:
       # - iOS_arm # https://github.com/dotnet/runtime/issues/34465
       - iOS_arm64
       - iOS_x64
+      - Android_arm
+      - Android_arm64
+      - Android_x64
+      - Android_x86
 
 - ${{ if eq(variables.isOfficialBuild, true) }}:
   - template: /eng/pipelines/official/stages/publish.yml
index 4fbfbcb..2bf8140 100644 (file)
@@ -526,6 +526,10 @@ jobs:
       - iOS_x64
       # - iOS_arm # https://github.com/dotnet/runtime/issues/34465
       - iOS_arm64
+      - Android_x64
+      - Android_x86
+      - Android_arm
+      - Android_arm64
     jobParameters:
       liveRuntimeBuildConfig: release
       liveLibrariesBuildConfig: ${{ variables.debugOnPrReleaseOnRolling }}
index 256dadb..22afa2a 100644 (file)
@@ -95,6 +95,7 @@
     <OutputRid Condition="'$(TargetOS)' == 'Linux'">linux-$(TargetArchitecture)</OutputRid>
     <OutputRid Condition="'$(TargetOS)' == 'FreeBSD'">freebsd-$(TargetArchitecture)</OutputRid>
     <OutputRid Condition="'$(TargetOS)' == 'iOS'">ios-$(TargetArchitecture)</OutputRid>
+    <OutputRid Condition="'$(TargetOS)' == 'Android'">android-$(TargetArchitecture)</OutputRid>
   </PropertyGroup>
 
   <PropertyGroup>
     <TargetsWindows>false</TargetsWindows>
     <TargetsOSX>false</TargetsOSX>
     <TargetsiOS>false</TargetsiOS>
+    <TargetsAndroid>false</TargetsAndroid>
     <TargetsLinux>false</TargetsLinux>
     <TargetsUnix>false</TargetsUnix>
     <TargetsUbuntu>false</TargetsUbuntu>
         <TargetsUnix>true</TargetsUnix>
       </PropertyGroup>
     </When>
+    <When Condition="$(OutputRid.StartsWith('android'))">
+      <PropertyGroup>
+        <TargetsAndroid>true</TargetsAndroid>
+        <TargetsLinux>true</TargetsLinux>
+        <TargetsUnix>true</TargetsUnix>
+      </PropertyGroup>
+    </When>
     <When Condition="$(OutputRid.StartsWith('debian'))">
       <PropertyGroup>
         <TargetsDebian>true</TargetsDebian>
     <CrossGenSymbolExtension>.map</CrossGenSymbolExtension>
     <CrossGenSymbolExtension Condition="'$(TargetOS)' == 'Windows_NT'">.ni.pdb</CrossGenSymbolExtension>
     <!-- OSX doesn't have crossgen symbols, yet -->
-    <CrossGenSymbolExtension Condition="'$(TargetOS)' == 'OSX' or '$(TargetOS)' == 'iOS'"></CrossGenSymbolExtension>
+    <CrossGenSymbolExtension Condition="'$(TargetOS)' == 'OSX' or '$(TargetOS)' == 'iOS' or '$(TargetOS)' == 'Android'"></CrossGenSymbolExtension>
   </PropertyGroup>
 
 </Project>
index 665fcbf..1dba667 100644 (file)
@@ -19,7 +19,7 @@
     out and skip building. 
   -->
   <Target Name="MobileSkipBuildProps" 
-          Condition="'$(SkipBuildOnRuntimePackOnlyOS)' == 'true' and '$(TargetOS)' == 'iOS'"
+          Condition="'$(SkipBuildOnRuntimePackOnlyOS)' == 'true' and ('$(TargetOS)' == 'iOS' or '$(TargetOS)' == 'Android')"
           BeforeTargets="GetSkipBuildProps">
     <PropertyGroup>
       <SkipBuild>true</SkipBuild>
index d09f6f3..2aa9f80 100644 (file)
@@ -10,6 +10,7 @@
     <CoreCLRTargetOS Condition="'$(TargetsLinux)' == 'true'">Linux</CoreCLRTargetOS>
     <CoreCLRTargetOS Condition="'$(TargetsOSX)' == 'true'">OSX</CoreCLRTargetOS>
     <CoreCLRTargetOS Condition="'$(TargetsiOS)' == 'true'">iOS</CoreCLRTargetOS>
+    <CoreCLRTargetOS Condition="'$(TargetsAndroid)' == 'true'">Android</CoreCLRTargetOS>
     <CoreCLRTargetOS Condition="'$(TargetsFreeBSD)' == 'true'">FreeBSD</CoreCLRTargetOS>
     <LibrariesTargetOS>$(CoreCLRTargetOS)</LibrariesTargetOS>
   </PropertyGroup>