Docs: cordova run --emulator not working with Android SDK Command-line Tool 11.0
- Dominant language
- JavaScript
- Stars
- 353
- Forks
- 565
- Avg merge
- 7h 15m
- Merged PRs (30d)
- 5
Description
# Bug Report
## Problem
```cordova run --emulator``` command fails and the emulator don't be launched.
### What is expected to happen?
The emulator starts and launch the sample application.
### What does actually happen?
The application was built successfully but the emulator don't be launched.
Below is the log the command outputted.
```
PS C:\dev\MyProject> cordova run --emulator
Checking Java JDK and Android SDK versions
ANDROID_HOME=C:\Users\skyis\AppData\Local\Android\Sdk (recommended setting)
ANDROID_SDK_ROOT=C:\Users\skyis\AppData\Local\Android\Sdk (DEPRECATED)
Using Android SDK: C:\Users\skyis\AppData\Local\Android\Sdk
Subproject Path: CordovaLib
Subproject Path: app
Deprecated Gradle features were used in this build, making it incompatible with Gradle 8.0.
You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.
See https://docs.gradle.org/7.6/userguide/command_line_interface.html#sec:command_line_warnings
BUILD SUCCESSFUL in 3s
50 actionable tasks: 50 up-to-date
Built the following apk(s):
C:\dev\MyProject\platforms\android\app\build\outputs\apk\debug\app-debug.apk
Checking Java JDK and Android SDK versions
ANDROID_HOME=C:\Users\skyis\AppData\Local\Android\Sdk (recommended setting)
ANDROID_SDK_ROOT=C:\Users\skyis\AppData\Local\Android\Sdk (DEPRECATED)
Using Android SDK: C:\Users\skyis\AppData\Local\Android\Sdk
Command failed with exit code 1: avdmanager list avd
�G���[: ���C���E�N���Xcom.android.sdklib.tool.AvdManagerCli�̃��[�h����LinkageError���������܂���
java.lang.UnsupportedClassVersionError: com/android/sdklib/tool/AvdManagerCli has been compiled by a more recent version of the Java Runtime (class file version 61.0), this version of the Java Runtime only recognizes class file versions up to 55.0
```
## Information
The error message says that the command ```avdmanager list avd``` cannot execute because Java version is too old.
```avdmanager``` command is part of Command-line tools and actually it doesn't work with Java11 which specified by Cordova.
Reading [emulator.js](https://github.com/apache/cordova-android/blob/rel/12.0.1/lib/emulator.js), it indeed calls ```avdmanager``` command.
According to the [document](https://cordova.apache.org/docs/en/12.x/guide/platforms/android/index.html), using Environment Variable ```CORDOCA_JAVA_HOME```, we can use multiple Java versions differently for Cordova and other programs.
I thought that I can solve this problem by setting ```CORDOCA_JAVA_HOME``` as JDK11 and ```JAVA_HOME``` as JDK21 because Command-line tools is not part of Cordova and it should be execute with the Java specified with ```JAVA_HOME```, but it didn't work.
Reading [java.js](https://github.com/apache/cordova-android/blob/rel/12.0.1/lib/env/java.js), if the environment variable ```CORDOVA_JAVA_HOME``` is specified, it set ```JAVA_HOME``` as ```CORDOVA_JAVA_HOME```'s value and the original value of ```JAVA_HOME``` is discarded.
That may be why ```avdmanager``` is executed with old java version.
### Command or Code
```
cordova create MyProject
cd MyProject
cordova platform add android
cordova run --emulator
```
### Environment, Platform, Device
Windows10 (Japanese language)
Powershell 5.1.19041.3693
#### Environment Variables
- PATH
- C:\Users\myname\AppData\Local\Android\Sdk\emulator
- C:\Users\myname\AppData\Local\Android\Sdk\cmdline-tools\latest\bin
- C:\Users\myname\AppData\Local\Android\Sdk\platform-tools
- C:\Users\myname\AppData\Local\Android\Sdk\build-tools
- ANDROID_HOME
- C:\Users\myname\AppData\Local\Android\Sdk
- ANDROID_SDK_ROOT
- C:\Users\myname\AppData\Local\Android\Sdk
- GRADLE_HOME
- C:\ProgramData\chocolatey\lib\gradle\tools\gradle-8.4
- JAVA_HOME
- C:\Program Files\OpenJDK\jdk-21.0.1
- CORDOVA_JAVA_HOME
- C:\Program Files\OpenJDK\jdk-11
### Version information
Windows10 22H2
Android SDK Build-tools 33.02
Android SDK Command-line Tools(latest) 11.0
Android Emulator 32.1.15
Android SDK Platform-Tools 34.0.5
Android Studio Giraffe 2022.3.1 Patch 4
Cordova 12.0.0 (cordova-lib@12.0.1)
cordova-android 12.0.1
Gradle 8.4
## Checklist
- [x] I searched for existing GitHub issues
- [x] I updated all Cordova tooling to most recent version
- [x] I included all the necessary information above
Contributor guide
Research direction
Start with the Android platform guide linked in the report and review the referenced emulator.js and java.js behavior in cordova-android. Verify how CORDOVA_JAVA_HOME and JAVA_HOME affect avdmanager with the provided Windows and Java 11/21 setup. Done means the guide accurately explains the supported configuration or limitation and covers the cordova run --emulator path.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- android, java
- Domain
- documentation, mobile-dev
- Issue type
- Documentation
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 35/100