vs-android не подходит java найден

У меня много проблем, когда я пытаюсь использовать плагин vs android в Visual Studio 2013. В основном я добиваюсь определенного прогресса, используя руководство по устранению неполадок на официальной веб-странице github vs-android. Но сейчас я застрял. После переустановки JDK и Android SDK несколько раз я дошел до того, что получаю такой вывод:

1>ANTBUILD : [dx] error : No suitable Java found. In order to properly use the Android Developer

Это довольно странно, так как над ошибкой есть строка:

1>  Envvar: JAVA_HOME is set to 'c:/Program Files (x86)/Java/jdk1.8.0_66'

Так что, похоже, он действительно может найти JDK. Но почему-то позже не хочет этим пользоваться.

Еще одна странная вещь заключается в том, что есть эта часть вывода:

1>  [gettarget] Project Target:   Android 2.2
1>  [gettarget] API level:        8

Хотя мои настройки в настройках проекта: Android 5.0 (android-21)

Я пытаюсь построить пример, скачанный со страницы vs-android. Проблема одинакова для всех примеров.

Весь вывод:

1>------ Build started: Project: san-angeles, Configuration: Debug Android ------
1>Build started 27.10.2015 12:56:21.
1>InitializeBuildStatus:
1>  Touching "Android\Debug\san-angeles.tlog\unsuccessfulbuild".
1>ClCompile:
1>  All outputs are up-to-date.
1>Link:
1>  All outputs are up-to-date.
1>AntBuild:
1>  Envvar: JAVA_HOME is set to 'c:/Program Files (x86)/Java/jdk1.8.0_66'
1>  Envvar: JAVA_OPTS is set to ''
1>  e:\Libs\apache-ant-1.9.6\\bin\ant.bat  debug
1>  Buildfile: D:\Dokumenty\Projects\Vyuka\VS_Android\vs-android_samples\san-angeles\AndroidApk\build.xml
1>  
1>  -set-mode-check:
1>  
1>  -set-debug-files:
1>  
1>  -check-env:
1>   [checkenv] Android SDK Tools Revision 24.4.1
1>   [checkenv] Installed at E:\Libs\android-sdk
1>  
1>  -setup:
1>       [echo] Project Name: DemoActivity
1>    [gettype] Project Type: Application
1>  
1>  -set-debug-mode:
1>  
1>  -debug-obfuscation-check:
1>  
1>  -pre-build:
1>  
1>  -build-setup:
1>  [getbuildtools] Using latest Build Tools: 23.0.1
1>       [echo] Resolving Build Target for DemoActivity...
1>  [gettarget] Project Target:   Android 2.2
1>  [gettarget] API level:        8
1>       [echo] ----------
1>       [echo] Creating output directories if needed...
1>      [mkdir] Created dir: D:\Dokumenty\Projects\Vyuka\VS_Android\vs-android_samples\san-angeles\AndroidApk\bin\rsObj
1>      [mkdir] Created dir: D:\Dokumenty\Projects\Vyuka\VS_Android\vs-android_samples\san-angeles\AndroidApk\bin\rsLibs
1>       [echo] ----------
1>       [echo] Resolving Dependencies for DemoActivity...
1>  [dependency] Library dependencies:
1>  [dependency] No Libraries
1>  [dependency] 
1>  [dependency] ------------------
1>  [dependency] API<=15: Adding annotations.jar to the classpath.
1>       [echo] ----------
1>       [echo] Building Libraries with 'debug'...
1>     [subant] No sub-builds to iterate on
1>  
1>  -code-gen:
1>  [mergemanifest] Found Deleted Target File
1>  [mergemanifest] Merging AndroidManifest files into one.
1>  [mergemanifest] Manifest merger disabled. Using project manifest only.
1>       [echo] Handling aidl files...
1>       [aidl] No AIDL files to compile.
1>       [echo] ----------
1>       [echo] Handling RenderScript files...
1>       [echo] ----------
1>       [echo] Handling Resources...
1>       [aapt] Found Deleted Target File
1>       [aapt] Generating resource IDs...
1>       [echo] ----------
1>       [echo] Handling BuildConfig class...
1>  [buildconfig] Generating BuildConfig class.
1>  
1>  -pre-compile:
1>  
1>  -compile:
1>      [javac] Compiling 2 source files to D:\Dokumenty\Projects\Vyuka\VS_Android\vs-android_samples\san-angeles\AndroidApk\bin\classes
1>ANTBUILD : [javac] warning : [options] source value 1.5 is obsolete and will be removed in a future release
1>ANTBUILD : [javac] warning : [options] target value 1.5 is obsolete and will be removed in a future release
1>ANTBUILD : [javac] warning : [options] To suppress warnings about obsolete options, use -Xlint:-options.
1>      [javac] 3 warnings
1>  
1>  -post-compile:
1>  
1>  -obfuscate:
1>  
1>  -dex:
1>        [dex] input: D:\Dokumenty\Projects\Vyuka\VS_Android\vs-android_samples\san-angeles\AndroidApk\bin\classes
1>        [dex] input: E:\Libs\android-sdk\tools\support\annotations.jar
1>        [dex] Pre-Dexing E:\Libs\android-sdk\tools\support\annotations.jar -> annotations-ae0d3fb44877d22b7173c3abe3590afa.jar
1>         [dx] 
1>ANTBUILD : [dx] error : No suitable Java found. In order to properly use the Android Developer
1>         [dx] Tools, you need a suitable version of Java JDK installed on your system.
1>         [dx] We recommend that you install the JDK version of JavaSE, available here:
1>         [dx]   http://www.oracle.com/technetwork/java/javase/downloads
1>         [dx] 
1>         [dx] If you already have Java installed, you can define the JAVA_HOME environment
1>         [dx] variable in Control Panel / System / Avanced System Settings to point to the
1>         [dx] JDK folder.
1>         [dx] 
1>         [dx] You can find the complete Android SDK requirements here:
1>         [dx]   http://developer.android.com/sdk/requirements.html
1>         [dx] 
1>         [dx] The system cannot execute the specified program.
1>        [dex] Found Deleted Target File
1>        [dex] Converting compiled files and external libraries into D:\Dokumenty\Projects\Vyuka\VS_Android\vs-android_samples\san-angeles\AndroidApk\bin\classes.dex...
1>         [dx] 
1>ANTBUILD : [dx] error : No suitable Java found. In order to properly use the Android Developer
1>         [dx] Tools, you need a suitable version of Java JDK installed on your system.
1>         [dx] We recommend that you install the JDK version of JavaSE, available here:
1>         [dx]   http://www.oracle.com/technetwork/java/javase/downloads
1>         [dx] 
1>         [dx] If you already have Java installed, you can define the JAVA_HOME environment
1>         [dx] variable in Control Panel / System / Avanced System Settings to point to the
1>         [dx] JDK folder.
1>         [dx] 
1>         [dx] You can find the complete Android SDK requirements here:
1>         [dx]   http://developer.android.com/sdk/requirements.html
1>         [dx] 
1>         [dx] The system cannot execute the specified program.
1>  
1>  -crunch:
1>     [crunch] Crunching PNG Files in source dir: D:\Dokumenty\Projects\Vyuka\VS_Android\vs-android_samples\san-angeles\AndroidApk\res
1>     [crunch] To destination dir: D:\Dokumenty\Projects\Vyuka\VS_Android\vs-android_samples\san-angeles\AndroidApk\bin\res
1>     [crunch] Crunched 0 PNG files to update cache
1>  
1>  -package-resources:
1>       [aapt] Creating full resource package...
1>  
1>  -package:
1>  [apkbuilder] Current build type is different than previous build: forced apkbuilder run.
1>  [apkbuilder] Creating DemoActivity-debug-unaligned.apk and signing it with a debug key...
1>  
1>  BUILD FAILED

3 ответа

Решение

Я думаю, вы находитесь в 64-битной ОС.

Корень вашей проблемы исходит из командного файла, который использует цепочка инструментов Android для получения полного пути к исполняемому файлу Java. Он находится по адресу: android_sdk \ tools \ lib \ find_java.bat

Необъяснимо, что пакетный файл ищет исполняемый файл Java только в папке "Program Files", но не в папке "Program Files (x86)" в 64-битной Windows.

Это хорошо, если вы установили 64-битную версию JDK, но потерпите неудачу, если вместо этого вы установили 32-битную версию, и, насколько я помню, 32-битная версия необходима для того, чтобы заставить vs-android работать нормально, иначе она не будет работать при вызове java из-за Visual Studio из-за какой-то проблемы с задачей msbuild (я думаю, что это связано с трекером).

Самое простое решение, которое я нашел, - это определить JAVA_HOME в системных переменных среды (что, как я полагаю, у вас уже есть) и изменить следующий код (начиная со строки 44) внутри файла find_java.bat:

41:    rem Check we have a valid Java.exe in the path. The return code will
42:    rem be 0 if the command worked or 1 if the exec failed (program not found).
43:    for /f "delims=" %%a in ('"%~dps0\find_java%arch_ext%.exe" -s') do set java_exe=%%a
44:    if not defined java_exe goto :CheckFailed

для тех других:

44: if defined java_exe goto :SearchJavaW
45: 
46: rem Try to find java.exe by using JAVA_HOME if the previous step failed
47: if "%JAVA_HOME%" == "" goto :CheckFailed
48: set java_exe=%JAVA_HOME%\bin\java.exe
49: if not defined java_exe goto :CheckFailed
50: if not exist "%java_exe%" goto :CheckFailed
51: 

Что касается сообщения об уровне API, которое связано с настройкой метки метки-sdk вашего файла манифеста и не имеет ничего общего с настройками vs-android вашего проекта. Смотрите эту ссылку для получения дополнительной информации: http://developer.android.com/guide/topics/manifest/uses-sdk-element.html

Один в vs-android используется во время сборки, чтобы выбрать правильные заголовки и библиотеки во время сборки, в то время как другой является показателем для ОС Android во время развертывания.apk.

Я надеюсь, что послужил в качестве помощи!:)

Я столкнулся с этой проблемой. Собственно в 2020 году и с помощью win10. Я новичок в разработке Android, но опытный программист. После большого количества ошибок установки и компиляции, чтобы решить эту проблему, я рекомендую это. На упрощенном этапе сначала я удалил всю версию java со своего компьютера, удалил все возможные PATH и SET. Затем я установил jdk 1.8 (jdk-8u261-windows-x64.exe). Теперь find_java.bat и dx.bat работают правильно. Мой образец тестовой программы компилируется полностью без ошибок. Насколько я понял, Android несовместим с последней версией jdk. Самая последняя совместимая версия - 1.8.

Нашел решение, которое НЕ НУЖНО ДЛЯ ПЕРЕХОДА НА JAVA 8, поэтому JRE может запустить виртуальную машину для «uiautomatorviewer».

Необходимо установить Android Studio и добавить указанное ниже местоположение в системную переменную "path".

C: \ Program Files \ Android \ Android Studio \ jre \ bin У меня jdk-11.0.6 и "uiautomatorviewer" работает нормально

Другие вопросы по тегам