Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Final P API update. #1790

Merged
merged 5 commits into from
Jun 11, 2018
Merged

Final P API update. #1790

merged 5 commits into from
Jun 11, 2018

Conversation

atsushieno
Copy link
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
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
Copy link
Member

jonpryor commented Jun 7, 2018

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
Copy link
Member

jonpryor commented Jun 8, 2018

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
Copy link
Member

jonpryor commented Jun 8, 2018

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
Copy link
Member

jonpryor commented Jun 8, 2018

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>

@@ -140,10 +140,10 @@
<Stable>True</Stable>
</AndroidApiInfo>
<AndroidApiInfo Include="v8.1.99">
Copy link
Member

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

<Id>P</Id>
<Stable>False</Stable>
<Id>28</Id>
<Stable>True</Stable>
Copy link
Member

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
Copy link
Member

jonpryor commented Jun 9, 2018

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
Member

build

@jonpryor
Copy link
Member

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