Skip to content

Commit 26168cf

Browse files
committed
[Xamarin.Android.Build.Tasks] Support %(JavaSourceJar.DocRootUrl)
1 parent 6ba2b44 commit 26168cf

File tree

13 files changed

+36
-16
lines changed

13 files changed

+36
-16
lines changed

Documentation/guides/building-apps/build-items.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -370,6 +370,11 @@ Starting in Xamarin.Android 11.3, the following MSBuild metadata is supported:
370370
online documentation. Only one style is currently supported:
371371
`developer.android.com/reference@2020-Nov`.
372372

373+
Starting in Xamarin.Android 12.1, the following MSBuild metadata is supported:
374+
375+
* `%(DocRootUrl)`: A URL prefix to use in place of all {@docroot}
376+
instances in the imported documentation.
377+
373378

374379
## LibraryProjectZip
375380

build-tools/automation/azure-pipelines-apidocs.yaml

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -47,19 +47,11 @@ stages:
4747
workingDirectory: $(Build.SourcesDirectory)
4848
displayName: make prepare
4949

50-
- task: MSBuild@1
51-
displayName: build jnienv-gen.csproj
52-
inputs:
53-
solution: $(Build.SourcesDirectory)/external/Java.Interop/build-tools/jnienv-gen/jnienv-gen.csproj
54-
configuration: $(XA.Build.Configuration)
55-
msbuildArguments: /restore
56-
57-
- task: MSBuild@1
50+
- task: DotNetCoreCLI@2
5851
displayName: update android-api-docs
5952
inputs:
60-
solution: $(Build.SourcesDirectory)/src/Mono.Android/Mono.Android.csproj
61-
configuration: $(XA.Build.Configuration)
62-
msbuildArguments: /restore /t:UpdateExternalDocumentation
53+
projects: $(Build.SourcesDirectory)/src/Mono.Android/Mono.Android.csproj
54+
arguments: -t:UpdateExternalDocumentation -c $(XA.Build.Configuration) -v:n
6355

6456
- template: yaml-templates/upload-results.yaml
6557
parameters:

external/Java.Interop

src/Mono.Android/Mono.Android.targets

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,8 @@
7878
<_Doclink Include="https://developer.android.com/reference" />
7979
<_Doclink Include="--doc-url-style" />
8080
<_Doclink Include="developer.android.com/reference@2020-Nov" />
81+
<_Doclink Include="--doc-root-url" />
82+
<_Doclink Include="https://developer.android.com/" />
8183
</ItemGroup>
8284
<ItemGroup>
8385
<_AndroidSources Include="$(_AndroidStableSrcDir)\android\**\*.java" />
@@ -285,6 +287,7 @@
285287
<PropertyGroup>
286288
<_Binlog>$(MSBuildThisFileDirectory)../../bin/Build$(Configuration)/UpdateExternalDocumentation-$([System.DateTime]::Now.ToString ("yyyyMMddTHHmmss")).binlog</_Binlog>
287289
</PropertyGroup>
290+
<Exec Command="dotnet build -v:n -c $(Configuration) $(JavaInteropFullPath)\build-tools\jnienv-gen\jnienv-gen.csproj" />
288291
<Exec
289292
Command="dotnet build -v:n -c $(Configuration) -p:IncludeAndroidJavadoc=True -bl:$(_Binlog)"
290293
IgnoreStandardErrorWarningFormat="True"

src/Xamarin.Android.Build.Tasks/MSBuild/Xamarin/Android/Xamarin.Android.Bindings.ClassParse.targets

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ This file is only used by binding projects.
7979
JavadocCopyrightFile="%(_JavaSourceJavadocXml.CopyrightFile)"
8080
JavadocUrlPrefix="%(_JavaSourceJavadocXml.UrlPrefix)"
8181
JavadocUrlStyle="%(_JavaSourceJavadocXml.UrlStyle)"
82+
JavadocDocRootUrl="%(_JavaSourceJavadocXml.DocRootUrl)"
8283
JavaMaximumHeapSize="$(JavaMaximumHeapSize)"
8384
JavaOptions="$(JavaOptions)"
8485
JavaSdkDirectory="$(_JavaSdkDirectory)"

src/Xamarin.Android.Build.Tasks/Tasks/JavaSourceUtils.cs

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ public class JavaSourceUtils : AndroidToolTask
3131
public ITaskItem JavadocCopyrightFile { get; set; }
3232
public string JavadocUrlPrefix { get; set; }
3333
public string JavadocUrlStyle { get; set; }
34+
public string JavadocDocRootUrl { get; set; }
3435

3536
public string JavaOptions { get; set; }
3637

@@ -139,11 +140,15 @@ string CreateResponseFile ()
139140
}
140141
if (!string.IsNullOrEmpty (JavadocUrlPrefix)) {
141142
AppendArg (response, "--doc-url-prefix");
142-
AppendArg (response, Path.GetFullPath (JavadocUrlPrefix));
143+
AppendArg (response, JavadocUrlPrefix);
143144
}
144145
if (!string.IsNullOrEmpty (JavadocUrlStyle)) {
145-
AppendArg (response, "--doc-link-style");
146-
AppendArg (response, Path.GetFullPath (JavadocUrlStyle));
146+
AppendArg (response, "--doc-url-style");
147+
AppendArg (response, JavadocUrlStyle);
148+
}
149+
if (!string.IsNullOrEmpty (JavadocDocRootUrl)) {
150+
AppendArg (response, "--doc-root-url");
151+
AppendArg (response, JavadocDocRootUrl);
147152
}
148153

149154
foreach (var path in InputFiles) {

src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/BindingBuildTest.cs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -470,18 +470,29 @@ public void JavaSourceJar ()
470470
AndroidClassParser = "class-parse",
471471
};
472472
binding.SetProperty ("DocumentationFile", "UnnamedProject.xml");
473+
binding.SetProperty ("AndroidJavadocVerbosity", "full");
473474
using (var bindingBuilder = CreateDllBuilder ()) {
474475
binding.Jars.Add (new AndroidItem.EmbeddedJar ("javasourcejartest.jar") {
475476
BinaryContent = () => ResourceData.JavaSourceJarTestJar,
476477
});
478+
binding.OtherBuildItems.Add (new BuildItem ("None", "javadoc-copyright.xml") {
479+
BinaryContent = () => ResourceData.JavadocCopyright,
480+
});
477481
binding.OtherBuildItems.Add (new BuildItem ("JavaSourceJar", "javasourcejartest-sources.jar") {
478482
BinaryContent = () => ResourceData.JavaSourceJarTestSourcesJar,
483+
MetadataValues = "CopyrightFile=$(MSBuildThisFileDirectory)javadoc-copyright.xml;" +
484+
"UrlPrefix=https://developer.android.com/reference;" +
485+
"UrlStyle=developer.android.com/reference@2020-Nov;" +
486+
"DocRootUrl=https://developer.android.com",
479487
});
480488
Assert.IsTrue (bindingBuilder.Build (binding), "binding build should have succeeded");
481489

482490
var path = Path.Combine (Root, bindingBuilder.ProjectDirectory, binding.OutputPath, "UnnamedProject.xml");
483491
var xml = File.ReadAllText (path);
484492
Assert.IsTrue (xml.Contains ("<param name=\"name\">name to display.</param>"), "param `name` documentation not imported!");
493+
Assert.IsTrue (xml.Contains ("Includes a https://developer.android.com/test.html element."), "{@docRoot} value was not replaced!");
494+
Assert.IsTrue (xml.Contains ("<a href=\"https://developer.android.com/reference/com/xamarin/android/test/msbuildtest/JavaSourceJarTest#greet(java.lang.String,%20java.util.Date)\" title=\"Reference documentation\">"), "Java documentation URL was not imported!");
495+
Assert.IsTrue (xml.Contains ("<a href=\"https://developers.google.com/terms/site-policies\" title=\"Android Open Source Project\">Android Open Source Project</a>"), "Copyright file was not imported!");
485496
}
486497
}
487498

Binary file not shown.

0 commit comments

Comments
 (0)