Skip to content

Final P API update. - #1790

Merged
jonpryor merged 5 commits into
dotnet:masterfrom
atsushieno:api-p-final
Jun 11, 2018
Merged

jonpryor merged 5 commits into
dotnet:masterfrom
atsushieno:api-p-final

Conversation

@atsushieno

Copy link
Copy Markdown
Contributor

API 27 package is updated and it introduced some new API bits too.

@atsushieno
atsushieno requested a review from jonpryor as a code owner June 7, 2018 20:38
@atsushieno

Copy link
Copy Markdown
Contributor Author

The problem is that xamarin-android does not really use "platforms" listed in build-tools/android-toolchains. It uses them from mono/sdks !

I spent not a little time to figure out that.

@jonpryor

jonpryor commented Jun 7, 2018

Copy link
Copy Markdown
Contributor

Build fails because platform-28_r04 isn't downloaded, because that download logic has been moved into mono.

This PR needs to include a bump to: mono/mono@6f9bef3

API 27 package is updated and it introduced some new API bits too.
@jonpryor

jonpryor commented Jun 8, 2018

Copy link
Copy Markdown
Contributor

Build is failing because of:

The "ResolveSdks" task failed unexpectedly. [/Users/builder/jenkins/workspace/xamarin-android-pr-builder/xamarin-android/src/OpenTK-1.0/OpenTK.csproj]
System.ArgumentNullException: Value cannot be null. [/Users/builder/jenkins/workspace/xamarin-android-pr-builder/xamarin-android/src/OpenTK-1.0/OpenTK.csproj]
Parameter name: element [/Users/builder/jenkins/workspace/xamarin-android-pr-builder/xamarin-android/src/OpenTK-1.0/OpenTK.csproj]
  at System.Xml.Linq.XElement.op_Explicit (System.Xml.Linq.XElement element) [0x0000e] in /Users/builder/jenkins/workspace/build-package-osx-mono/2018-02/external/bockbuild/builds/mono-x64/mcs/class/referencesource/System.Xml.Linq/System/Xml/Linq/XLinq.cs:4525  [/Users/builder/jenkins/workspace/xamarin-android-pr-builder/xamarin-android/src/OpenTK-1.0/OpenTK.csproj]
  at Xamarin.Android.Tools.AndroidVersion.Load (System.Xml.Linq.XDocument doc) [0x00031] in <55cb12b88030401dac208033d851be89>:0  [/Users/builder/jenkins/workspace/xamarin-android-pr-builder/xamarin-android/src/OpenTK-1.0/OpenTK.csproj]
  at Xamarin.Android.Tools.AndroidVersion.Load (System.String uri) [0x00008] in <55cb12b88030401dac208033d851be89>:0  [/Users/builder/jenkins/workspace/xamarin-android-pr-builder/xamarin-android/src/OpenTK-1.0/OpenTK.csproj]
  at Xamarin.Android.Tools.AndroidVersions+<>c.<.ctor>b__16_1 (System.String file) [0x00000] in <55cb12b88030401dac208033d851be89>:0  [/Users/builder/jenkins/workspace/xamarin-android-pr-builder/xamarin-android/src/OpenTK-1.0/OpenTK.csproj]
  at System.Linq.Enumerable+SelectEnumerableIterator`2[TSource,TResult].MoveNext () [0x00036] in /Users/builder/jenkins/workspace/build-package-osx-mono/2018-02/external/bockbuild/builds/mono-x64/external/corefx/src/System.Linq/src/System/Linq/Select.cs:131  [/Users/builder/jenkins/workspace/xamarin-android-pr-builder/xamarin-android/src/OpenTK-1.0/OpenTK.csproj]
  at Xamarin.Android.Tools.AndroidVersions.LoadVersions (System.Collections.Generic.IEnumerable`1[T] versions) [0x00093] in <55cb12b88030401dac208033d851be89>:0  [/Users/builder/jenkins/workspace/xamarin-android-pr-builder/xamarin-android/src/OpenTK-1.0/OpenTK.csproj]
  at Xamarin.Android.Tools.AndroidVersions..ctor (System.Collections.Generic.IEnumerable`1[T] frameworkDirectories) [0x00130] in <55cb12b88030401dac208033d851be89>:0  [/Users/builder/jenkins/workspace/xamarin-android-pr-builder/xamarin-android/src/OpenTK-1.0/OpenTK.csproj]
  at Xamarin.Android.Tasks.MonoAndroidHelper.RefreshSupportedVersions (System.String[] referenceAssemblyPaths) [0x00001] in <0da745fece5743b988534327aec2f476>:0  [/Users/builder/jenkins/workspace/xamarin-android-pr-builder/xamarin-android/src/OpenTK-1.0/OpenTK.csproj]
  at Xamarin.Android.Tasks.ResolveSdks.RunTask () [0x001bd] in <0da745fece5743b988534327aec2f476>:0  [/Users/builder/jenkins/workspace/xamarin-android-pr-builder/xamarin-android/src/OpenTK-1.0/OpenTK.csproj]

@jonpryor

jonpryor commented Jun 8, 2018

Copy link
Copy Markdown
Contributor

The ArgumentNullException is presumably coming somewhere in: https://github.com/xamarin/xamarin-android-tools/blob/50af063b2fdf0eda752882a4a61129e0e55c746c/src/Xamarin.Android.Tools.AndroidSdk/AndroidVersion.cs#L72-L81

My guess is that bin/Debug/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v9.0/AndroidApiInfo.xml doesn't exist.

To that end I've restarted the build, so we can see what the build outputs are. (Hopefully we won't get another/new PR soon...)

@jonpryor

jonpryor commented Jun 8, 2018

Copy link
Copy Markdown
Contributor

Theory is close...but not quite right; from the debug log:

Building target "_GenerateAndroidApiInfo" completely.
Output file "/Users/builder/jenkins/workspace/xamarin-android-pr-builder/xamarin-android/bin/Debug/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v9.0/AndroidApiInfo.xml" does not exist.
Using "MakeDir" task from assembly "Microsoft.Build.Tasks.Core, Version=15.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a".
Task "MakeDir" (TaskId:8)
  Task Parameter:Directories=/Users/builder/jenkins/workspace/xamarin-android-pr-builder/xamarin-android/bin/Debug/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v9.0/ (TaskId:8)
  Creating directory "/Users/builder/jenkins/workspace/xamarin-android-pr-builder/xamarin-android/bin/Debug/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v9.0/". (TaskId:8)
Done executing task "MakeDir". (TaskId:8)
Added Item(s): _Line=<AndroidApiInfo>
Added Item(s): _Line=</AndroidApiInfo>
Using "WriteLinesToFile" task from assembly "Microsoft.Build.Tasks.Core, Version=15.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a".
Task "WriteLinesToFile" (TaskId:9)
  Task Parameter:File=/Users/builder/jenkins/workspace/xamarin-android-pr-builder/xamarin-android/bin/Debug/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v9.0/AndroidApiInfo.xml (TaskId:9)
  Task Parameter:
      Lines=
          <AndroidApiInfo>
          </AndroidApiInfo> (TaskId:9)
  Task Parameter:Overwrite=True (TaskId:9)
Done executing task "WriteLinesToFile". (TaskId:9)
Done building target "_GenerateAndroidApiInfo" in project "Mono.Android.csproj".: (TargetId:23)

Notice that there are no lines; we are (probably) generating an empty file, a'la:

<AndroidApiInfo>
</AndroidApiInfo>

Comment thread src/Mono.Android/Mono.Android.projitems Outdated
@@ -140,10 +140,10 @@
<Stable>True</Stable>
</AndroidApiInfo>
<AndroidApiInfo Include="v8.1.99">

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I believe that this is the problem: we didn't change it to v9.0. Consequently, when BuildEverything.mk builds framework 9.0, @(_ApiInfo) is empty:

https://github.com/xamarin/xamarin-android/blob/7bd8b7d7748b0734398abf3d966f242ab7eab249/src/Mono.Android/Mono.Android.targets#L138-L141

Comment thread src/Mono.Android/Mono.Android.projitems Outdated
<Id>P</Id>
<Stable>False</Stable>
<Id>28</Id>
<Stable>True</Stable>

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Question: Given that enumification is not yet complete, and that we're not checking v9.0 for API compatibility/consistency, and the IDEs will default to using the latest %(Stable)=True value...

Shouldn't this value remain False? I believe it should be False until this is fully stable.

@jonpryor

jonpryor commented Jun 9, 2018

Copy link
Copy Markdown
Contributor

Current failure:

  "javac" -source 1.5 -target 1.6 -d "obj/Debug/__CreateTestJarFile-bin" -cp "/Users/builder/android-toolchain/sdk/platforms/android-28/android.jar" "java/com/xamarin/android/Bxc4288.java" "java/com/xamarin/android/Bxc58383.java" "java/com/xamarin/android/CallMethodFromCtor.java" "java/com/xamarin/android/CallNonvirtualBase.java" "java/com/xamarin/android/CallNonvirtualDerived.java" "java/com/xamarin/android/DataHandler.java" "java/com/xamarin/android/DataListener.java" "java/com/xamarin/android/Logger.java" "java/com/xamarin/android/MarkerIgnoringBase.java" "java/com/xamarin/android/MyCanvas.java" "java/com/xamarin/android/Timing.java" "java/com/xamarin/android/Bxc9446.java" "java/com/xamarin/android/Bxc7634.java" "java/com/xamarin/android/Bxc37706Throwable.java" (TaskId:1188)
EXEC : warning : [options] bootstrap class path not set in conjunction with -source 1.5 [/Users/builder/jenkins/workspace/xamarin-android-pr-builder/xamarin-android/tests/CodeGen-Binding/Xamarin.Android.McwGen-Tests/Xamarin.Android.McwGen-Tests.csproj]
EXEC : warning : [options] source value 1.5 is obsolete and will be removed in a future release [/Users/builder/jenkins/workspace/xamarin-android-pr-builder/xamarin-android/tests/CodeGen-Binding/Xamarin.Android.McwGen-Tests/Xamarin.Android.McwGen-Tests.csproj]
EXEC : warning : [options] To suppress warnings about obsolete options, use -Xlint:-options. [/Users/builder/jenkins/workspace/xamarin-android-pr-builder/xamarin-android/tests/CodeGen-Binding/Xamarin.Android.McwGen-Tests/Xamarin.Android.McwGen-Tests.csproj]
  java/com/xamarin/android/MyCanvas.java:12: error: method does not override or implement a method from a supertype (TaskId:1188)
    @Override (TaskId:1188)
    ^ (TaskId:1188)
  java/com/xamarin/android/MyCanvas.java:15: error: method save in class Canvas cannot be applied to given types; (TaskId:1188)
      return super.save (saveFlags); (TaskId:1188)
                  ^ (TaskId:1188)
    required: no arguments (TaskId:1188)
    found: int (TaskId:1188)
    reason: actual and formal argument lists differ in length (TaskId:1188)
  2 errors (TaskId:1188)
  3 warnings (TaskId:1188)

However, there is something weird here: There is no Canvas.save(int) method.

It looks like it was removed in API-P DP2. We'll have to update the test.

@jonpryor jonpryor added the full-mono-integration-build For PRs; run a full build (~6-10h for mono bumps), not the faster PR subset (~2h for mono bumps) label Jun 10, 2018
@jonpryor

Copy link
Copy Markdown
Contributor

build

@jonpryor

Copy link
Copy Markdown
Contributor

After adding full-mono-integration-build, the current build failure:

  "javac" -source 1.8 -target 1.8 -d "obj/Debug/android-28/jcw/bin" -bootclasspath "/Users/builder/android-toolchain/sdk/platforms/android-P/android.jar":"/Users/builder/jenkins/workspace/xamarin-android-pr-builder/xamarin-android/bin/Debug/lib/xamarin.android/xbuild-frameworks/MonoAndroid/v9.0/mono.android.jar" @obj/Debug/android-28/jcw/classes.txt (TaskId:969)
  obj/Debug/android-28/jcw/src/mono/android/graphics/ImageDecoder_OnPartialImageListenerImplementor.java:28: error: cannot find symbol (TaskId:969)
        public boolean onPartialImage (android.graphics.ImageDecoder.DecodeException p0) (TaskId:969)
                                                                    ^ (TaskId:969)
    symbol:   class DecodeException (TaskId:969)
    location: class ImageDecoder (TaskId:969)
  obj/Debug/android-28/jcw/src/mono/android/graphics/ImageDecoder_OnPartialImageListenerImplementor.java:33: error: cannot find symbol (TaskId:969)
        private native boolean n_onPartialImage (android.graphics.ImageDecoder.DecodeException p0); (TaskId:969)
                                                                              ^ (TaskId:969)
    symbol:   class DecodeException (TaskId:969)
    location: class ImageDecoder (TaskId:969)
  obj/Debug/android-28/jcw/src/mono/android/media/MediaPlayer_OnMediaTimeDiscontinuityListenerImplementor.java:8: error: cannot find symbol (TaskId:969)
                android.media.MediaPlayer.OnMediaTimeDiscontinuityListener (TaskId:969)
                                         ^ (TaskId:969)
    symbol:   class OnMediaTimeDiscontinuityListener (TaskId:969)
    location: class MediaPlayer (TaskId:969)
  obj/Debug/android-28/jcw/src/mono/android/media/MediaPlayer_OnSubtitleDataListenerImplementor.java:8: error: cannot find symbol (TaskId:969)
	                android.media.MediaPlayer.OnSubtitleDataListener (TaskId:969)
                                         ^ (TaskId:969)
    symbol:   class OnSubtitleDataListener (TaskId:969)
    location: class MediaPlayer (TaskId:969)
  obj/Debug/android-28/jcw/src/mono/android/media/MediaPlayer_OnSubtitleDataListenerImplementor.java:28: error: cannot find symbol (TaskId:969)
        public void onSubtitleData (android.media.MediaPlayer p0, android.media.SubtitleData p1) (TaskId:969)
                                                                               ^ (TaskId:969)
    symbol:   class SubtitleData (TaskId:969)
    location: package android.media (TaskId:969)
  obj/Debug/android-28/jcw/src/mono/android/media/MediaPlayer_OnSubtitleDataListenerImplementor.java:33: error: cannot find symbol (TaskId:969)
        private native void n_onSubtitleData (android.media.MediaPlayer p0, android.media.SubtitleData p1); (TaskId:969)
                                                                                         ^ (TaskId:969)
    symbol:   class SubtitleData (TaskId:969)
    location: package android.media (TaskId:969)
  obj/Debug/android-28/jcw/src/mono/android/se/omapi/SEService_OnConnectedListenerImplementor.java:8: error: cannot find symbol (TaskId:969)
                android.se.omapi.SEService.OnConnectedListener (TaskId:969)
                                          ^ (TaskId:969)
    symbol:   class OnConnectedListener (TaskId:969)
    location: class SEService (TaskId:969)
  obj/Debug/android-28/jcw/src/mono/android/view/View_OnUnhandledKeyEventListenerImplementor.java:8: error: cannot find symbol (TaskId:969)
                android.view.View.OnUnhandledKeyEventListener (TaskId:969)
                                 ^ (TaskId:969)
    symbol:   class OnUnhandledKeyEventListener (TaskId:969)
    location: class View (TaskId:969)
  obj/Debug/android-28/jcw/src/mono/android/graphics/ImageDecoder_OnPartialImageListenerImplementor.java:4: error: ImageDecoder_OnPartialImageListenerImplementor is not abstract and does not override abstract method onPartialImage(int,Source) in OnPartialImageListener (TaskId:969)
  public class ImageDecoder_OnPartialImageListenerImplementor (TaskId:969)
         ^ (TaskId:969)

Notably "wrong" is the path to android.jar used: android-toolchain/sdk/platforms/android-P/android.jar, which should instead be android-toolchain/sdk/platforms/android-28/android.jar.

@jonpryor
jonpryor merged commit 01988e0 into dotnet:master Jun 11, 2018
jonpryor pushed a commit that referenced this pull request Jun 13, 2018
Android P Developer Preview 3 has been released, which contains the
*final* API-28 Java API.

Provide an *initial* (not *stable*) API binding for API-28,
`$(TargetFrameworkversion)`=v9.0 (not v8.1.99).  This initial binding
is not stable because enumification hasn't been performed yet.

Bumps to mono/2018-02/6f9bef3b

Related change: [API-28 removes the `Canvas.save(int)` method][0],
which caused `Xamarin.Android.McwGen-Tests` to not build:

[0]: https://developer.android.com/sdk/api_diff/p-dp2/changes

          "javac" -source 1.5 -target 1.6 -d "obj/Debug/__CreateTestJarFile-bin" -cp "…/android-toolchain/sdk/platforms/android-28/android.jar" "java/com/xamarin/android/Bxc4288.java" "java/com/xamarin/android/Bxc58383.java" "java/com/xamarin/android/CallMethodFromCtor.java" "java/com/xamarin/android/CallNonvirtualBase.java" "java/com/xamarin/android/CallNonvirtualDerived.java" "java/com/xamarin/android/DataHandler.java" "java/com/xamarin/android/DataListener.java" "java/com/xamarin/android/Logger.java" "java/com/xamarin/android/MarkerIgnoringBase.java" "java/com/xamarin/android/MyCanvas.java" "java/com/xamarin/android/Timing.java" "java/com/xamarin/android/Bxc9446.java" "java/com/xamarin/android/Bxc7634.java" "java/com/xamarin/android/Bxc37706Throwable.java"
          java/com/xamarin/android/MyCanvas.java:12: error: method does not override or implement a method from a supertype
            @OverRide
            ^ (TaskId:1188)
          java/com/xamarin/android/MyCanvas.java:15: error: method save in class Canvas cannot be applied to given types;
              return super.save (saveFlags);
                          ^
            required: no arguments
            found: int
            reason: actual and formal argument lists differ in length
          2 errors

Fix `MyCanvas.java` to instead override `Canvas.save()`.
@github-actions github-actions Bot locked and limited conversation to collaborators Feb 2, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

full-mono-integration-build For PRs; run a full build (~6-10h for mono bumps), not the faster PR subset (~2h for mono bumps)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants