Leveraging Test Cloud seems like a good idea, this document aims at figuring out the requirements for our team.
Xamarin.Android has various APK-based tests that currently run on emulators/devices.
In general, they operate by running adb commands:
| ssh -fNL 2375:localhost:2375 yourUsername@yourHostnameOrIP |
| #!/bin/bash | |
| # Connect to remote Docker VM | |
| ssh -fNL 2375:localhost:2375 jonathanpeppers@23.98.216.31 -i keys/nukkit | |
| export DOCKER_HOST=:2375 | |
| # Just to verify we connected (and to the right machine) | |
| docker info | |
| # Run docker image |
I did this test with the latest Visual Studio for Mac on the beta channel 7.3 build 764 Xamarin.Android 8.1.0.23.
Steps:
msbuild HelloForms.csproj /t:SignAndroidPackage /p:Configuration=ReleaseResults in apk from zipinfo:
NuGet:
<packages>
<package id="Newtonsoft.Json" version="9.0.1" targetFramework="monoandroid71" />
<package id="Xam.Plugin.Connectivity" version="3.0.3" targetFramework="monoandroid71" />
<package id="Xamarin.Android.Arch.Core.Common" version="1.0.0" targetFramework="monoandroid80" />
<package id="Xamarin.Android.Arch.Lifecycle.Common" version="1.0.1" targetFramework="monoandroid80" />
<package id="Xamarin.Android.Arch.Lifecycle.Runtime" version="1.0.0" targetFramework="monoandroid80" />
<package id="Xamarin.Android.Support.Animated.Vector.Drawable" version="26.1.0.1" targetFramework="monoandroid80" />
<package id="Xamarin.Android.Support.Annotations" version="26.1.0.1" targetFramework="monoandroid80" />| Task StartAndroidEmulator | |
| AndroidSdkHome: /Users/jonathanpeppers/android-toolchain/sdk | |
| ImageName: XamarinAndroidTestRunner | |
| Port: 5570 | |
| Tool /Users/jonathanpeppers/android-toolchain/sdk/tools/emulator execution started with arguments: -verbose -avd XamarinAndroidTestRunner -port 5570 | |
| Environment variables being passed to the tool: | |
| ANDROID_HOME="/Users/jonathanpeppers/android-toolchain/sdk" | |
| [emulator stdout] emulator: Android virtual device file at: /Users/jonathanpeppers/.android/avd/XamarinAndroidTestRunner.ini | |
| [emulator stdout] emulator: virtual device content at /Users/jonathanpeppers/.android/avd/XamarinAndroidTestRunner.avd | |
| [emulator stdout] emulator: virtual device config file: /Users/jonathanpeppers/.android/avd/XamarinAndroidTestRunner.avd/config.ini |
| diff -rup __mcw/Android.AccessibilityServices.AccessibilityService.cs obj/Debug/android-27/mcw/Android.AccessibilityServices.AccessibilityService.cs | |
| --- __mcw/Android.AccessibilityServices.AccessibilityService.cs 2017-12-01 09:12:23.000000000 -0600 | |
| +++ obj/Debug/android-27/mcw/Android.AccessibilityServices.AccessibilityService.cs 2017-12-01 12:45:20.000000000 -0600 | |
| @@ -300,7 +300,7 @@ namespace Android.AccessibilityServices | |
| get { return _members.ManagedPeerType; } | |
| } | |
| - IntPtr class_ref; | |
| + new IntPtr class_ref; | |
| diff -rup __mcw/Android.Animation.Animator.cs obj/Debug/android-27/mcw/Android.Animation.Animator.cs | |
| --- __mcw/Android.Animation.Animator.cs 2017-12-04 21:48:03.000000000 -0600 | |
| +++ obj/Debug/android-27/mcw/Android.Animation.Animator.cs 2017-12-04 21:51:59.000000000 -0600 | |
| @@ -869,12 +869,12 @@ namespace Android.Animation { | |
| // Metadata.xml XPath method reference: path="/api/package[@name='android.animation']/class[@name='Animator']/method[@name='clone' and count(parameter)=0]" | |
| [Register ("clone", "()Landroid/animation/Animator;", "GetCloneHandler")] | |
| - public virtual unsafe Android.Animation.Animator Clone () | |
| + public virtual unsafe Java.Lang.Object Clone () | |
| { |
If you need something, message @peppers on Slack or @jonathanpeppers on Twitter. Just keep in mind it might take a bit for me to respond, thanks!
Feel free to reach out to me if one of my VSTS build definitions stops working (or if you find a commit of mine that broke something), I wouldn't mind to jump in for an hour or two and help.
Need fixes for building on a system with JDK 9 installed, which is installed on VSTS Mac Build agents.
| public async Task<Bitmap> LoadImageAsync(ImageSource imagesource, Context context, CancellationToken cancelationToken = default(CancellationToken)) | |
| { | |
| string file = ((FileImageSource)imagesource).File; | |
| Bitmap bitmap; | |
| if (File.Exists (file)) | |
| bitmap = !DecodeSynchronously ? (await BitmapFactory.DecodeFileAsync (file).ConfigureAwait (false)) : BitmapFactory.DecodeFile (file); | |
| else | |
| bitmap = !DecodeSynchronously ? (await context.Resources.GetBitmapAsync (file).ConfigureAwait (false)) : context.Resources.GetBitmap (file); | |