Fails to deploy to Android on vs2019 but not with vs2022

Damian 1 Reputation point
2022-01-03T16:47:42.427+00:00

After installing vs2022 (17.1.0 preview 1.1) alongside vs2019 (16.11.7), I am unable to deploy my apps to the Android emulator on vs2019. On vs2019 I am met with, Error: SB6006: "java.exe" exited with code 2" every time it tries to deploy to the emulator. On the flip-side, it does deploy with vs2022.

Note, this issue occurs with all of my apps, even the default Xamarin.Forms template apps. And, I keep my dev laptop environments minimal - Visual Studio, .NET SDK, Notepad++.

Could this be a PATH Environment Variable being out of order with the recent install of VS2022?

Reproduce

Below are the specs of a project freshly created with a new emulator generated that fails to deploy on vs2019.

  1. Open, Visual Studio 2019 (Enterprise)
  2. Create a new Xamarin.Forms project (Android only)
  3. Build
  4. Debug (play button)

    Environment

    • Xamarin.Forms: v5.0.0.2012
    • Emulator - Pixel2 API30 (default)
    • Proj - Minimum Android Version: Android 5.0 (API Level 21 - Lollipop)
    • Proj - Target Android Version: Android 11.0 (API Level 30 - R)

      Build

      ...
      1>Starting deployment to pixel2_-_api_30 ...
      1>Deploying to pixel2_-_api_30 ...
      Build started.
      Project "Base2019.Android.csproj" (Install target(s)):
      Found Java SDK version 1.8.0.
      Found Java SDK version 1.8.0.
      Dex Fast Deployment Enabled: False
      MonoAndroid Tools: C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Xamarin\Android\
      Android Platform API level: 30
      TargetFrameworkVersion: v11.0
      Android NDK:
      Android SDK: C:\Program Files (x86)\Android\android-sdk\
      Android SDK Build Tools: C:\Program Files (x86)\Android\android-sdk\build-tools\30.0.2\
      Java SDK: C:\Program Files\Eclipse Foundation\jdk-8.0.302.8-hotspot\
      Application Java class: android.app.Application
      Project "Base2019.csproj" (GetTargetFrameworks target(s)):
      Done building project "Base2019.csproj".
      Project "Base2019.csproj" (GetTargetPath target(s)):
      Done building project "Base2019.csproj".
      Project "Base2019.csproj" (GetNativeManifest target(s)):
      Done building project "Base2019.csproj".
      Skipping target "_ResolveLibraryProjectImports" because all output files are up-to-date with respect to the input files.
      ...
      ...
      Skipping target "_CompileToDalvik" because all output files are up-to-date with respect to the input files.
      Copying file from "C:\work\labs\zFailures\Base2019\Base2019\Base2019.Android\obj\Debug\110\android\bin\com.companyname.base2019.apk" to "C:\work\labs\zFailures\Base2019\Base2019\Base2019.Android\bin\Debug\com.companyname.base2019.apk".
      Creating "obj\Debug\110\android_debug_keystore.flag" because "AlwaysCreate" was specified.
      C:\Program Files (x86)\Android\android-sdk\build-tools\30.0.2\zipalign.exe -p 4 "C:\work\labs\zFailures\Base2019\Base2019\Base2019.Android\obj\Debug\110\android\bin\com.companyname.base2019.apk" "bin\Debug\com.companyname.base2019-Signed.apk"
      C:\Program Files\Eclipse Foundation\jdk-8.0.302.8-hotspot\bin\java.exe -jar "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Xamarin\Android\apksigner.jar" sign --ks "C:\Users\damians\AppData\Local\Xamarin\Mono for Android\debug.keystore" --ks-pass pass:android --ks-key-alias androiddebugkey --key-pass pass:android --min-sdk-version 21 --max-sdk-version 30 C:\work\labs\zFailures\Base2019\Base2019\Base2019.Android\bin\Debug\com.companyname.base2019-Signed.apk
      Failed to load signer "signer #1"
      java.io.IOException: Invalid keystore format
      at sun.security.provider.JavaKeyStore.engineLoad(JavaKeyStore.java:666)
      at sun.security.provider.JavaKeyStore$JKS.engineLoad(JavaKeyStore.java:57)
      at sun.security.provider.KeyStoreDelegator.engineLoad(KeyStoreDelegator.java:224)
      at sun.security.provider.JavaKeyStore$DualFormatJKS.engineLoad(JavaKeyStore.java:71)
      at java.security.KeyStore.load(KeyStore.java:1445)
      at com.android.apksigner.SignerParams.loadKeyStoreFromFile(SignerParams.java:353)
      at com.android.apksigner.SignerParams.loadPrivateKeyAndCertsFromKeyStore(SignerParams.java:239)
      at com.android.apksigner.SignerParams.loadPrivateKeyAndCerts(SignerParams.java:181)
      at com.android.apksigner.ApkSignerTool.sign(ApkSignerTool.java:277)
      at com.android.apksigner.ApkSignerTool.main(ApkSignerTool.java:83)
      MSB6006: "java.exe" exited with code 2.
      Done building project "Base2019.Android.csproj" -- FAILED.
      Build FAILED.
      1>Deployment failed to pixel2_-_api_30. ==========
      Deploy: 0 succeeded, 1 failed, 0 skipped ==========
Developer technologies | .NET | Xamarin
Developer technologies | Visual Studio | Debugging
{count} votes

2 answers

Sort by: Most helpful
  1. Damian 1 Reputation point
    2022-01-03T18:10:02.55+00:00

    Updated the Java JDK from v1.8 to 11.0.12.7.1 and make sure it's configured correctly in Visual Studio.

    1. Install, JDK 11.0.12.7
    2. VS2019 > Tools > Options > Xamarin > Android
    3. Set, SDK Location to: "C:\Program Files\Microsoft\jdk-11.0.12.7-hotspot"

    More info can be found at:
    * https://github.com/xamarin/xamarin-android/wiki/JDK-11-Warning


  2. Ahmed Thabet Elshamandy 40 Reputation points
    2023-03-20T09:26:50.8433333+00:00
    1. VS2019 > Tools > Options > Xamarin > Android setting

    I solved it by change ( Java Development Kit Location) Jdk to: "C:\Program Files\Microsoft\jdk-11.0.12.7-hotspot"

    Thanks @Damian for your help

    Report

    0 comments No comments

Your answer

Answers can be marked as Accepted Answers by the question author, which helps users to know the answer solved the author's problem.