Skip to content

Commit

Permalink
Come up with an alternate way for java-interop.jar path detection
Browse files Browse the repository at this point in the history
Context: https://xamarinhq.slack.com/archives/C03CEGRUW/p1568076852178100

Using `$(MSBuildExtensionsPath)` didn't work, as it just took the
"first" path, which isn't valid, resulting in attempts to use:

	/Library/Frameworks/Mono.framework/Versions/6.0.0/lib/mono/xbuild/Xamarin/Android/java-interop.jar

which does not exist.
  • Loading branch information
jonpryor committed Sep 11, 2019
1 parent c8def1b commit 9cb69cc
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 6 deletions.
20 changes: 14 additions & 6 deletions build-tools/scripts/Jar.targets
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,20 @@
<JavaCPath Condition=" '$(JavaCPath)' == '' ">$(JavaSdkDirectory)\bin\javac</JavaCPath>
</PropertyGroup>
</Target>
<Target Name="_GetJavaInteropJarPath">
<PropertyGroup>
<_JIJar_InTree>$([System.IO.Path]::GetFullPath ('$(XAInstallPrefix)'))\xbuild\Xamarin\Android\java-interop.jar</_JIJar_InTree>
<_JIJar_System Condition=" '$(_XamarinAndroidMSBuildDirectory)' != '' ">$(_XamarinAndroidMSBuildDirectory)\java-interop.jar</_JIJar_System>
<_JavaInteropJarPath Condition=" Exists($(_JIJar_InTree)) ">$(_JIJar_InTree)</_JavaInteropJarPath>
<_JavaInteropJarPath Condition=" '$(_JavaInteropJarPath)' == '' ">$(_JIJar_System)</_JavaInteropJarPath>
</PropertyGroup>
<Error
Condition=" '$(_JavaInteropJarPath)' == '' "
Text="Could not determine path to `java-interop.jar`."
/>
</Target>
<Target Name="BuildTestJarFile"
DependsOnTargets="_GetJavacVersions"
DependsOnTargets="_GetJavacVersions;_GetJavaInteropJarPath"
Inputs="@(TestJarEntry)"
Outputs="%(TestJarEntry.OutputFile)">
<ItemGroup>
Expand All @@ -26,11 +38,7 @@
<_Targets>-source $(_JavacSourceVersion) -target $(_JavacTargetVersion)</_Targets>
<_DestDir>$(IntermediateOutputPath)__CreateTestJarFile-bin</_DestDir>
<_AndroidJar>-bootclasspath "$(AndroidSdkDirectory)\platforms\android-$(_AndroidApiLevelName)\android.jar"</_AndroidJar>
<_JIJar_InTree>$([System.IO.Path]::GetFullPath ('$(XAInstallPrefix)'))\xbuild\Xamarin\Android\java-interop.jar</_JIJar_InTree>
<_JIJar_System>$(MSBuildExtensionsPath)\Xamarin\Android\java-interop.jar</_JIJar_System>
<_JIJar Condition=" Exists ($(_JIJar_InTree)) ">$(_JIJar_InTree)</_JIJar>
<_JIJar Condition=" '$(_JIJar)' == '' ">$(_JIJar_System)</_JIJar>
<_CP>-cp "$(_JIJar)"</_CP>
<_CP>-cp "$(_JavaInteropJarPath)"</_CP>
</PropertyGroup>
<MakeDir Directories="$(_DestDir)" />
<Exec Command="$(_Javac) $(_Targets) -d &quot;$(_DestDir)&quot; $(_AndroidJar) $(_CP) @(_JavacSource->'&quot;%(Identity)&quot;', ' ')" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
<AndroidSdkToolsVersion Condition="'$(AndroidSdkToolsVersion)' == ''">26.1.1</AndroidSdkToolsVersion>
<AndroidNdkVersion Condition="'$(AndroidNdkVersion)' == ''">16.1</AndroidNdkVersion>
<BundleToolVersion Condition="'$(BundleToolVersion)' == ''">@BUNDLETOOL_VERSION@</BundleToolVersion>
<_XamarinAndroidMSBuildDirectory>$(MSBuildThisFileDirectory)</_XamarinAndroidMSBuildDirectory>

<!-- Enable nuget package conflict resolution -->
<ResolveAssemblyConflicts>true</ResolveAssemblyConflicts>
Expand Down

0 comments on commit 9cb69cc

Please sign in to comment.