vs-android不适用于找到的Java。

11 浏览
0 Comments

vs-android不适用于找到的Java。

我在使用Visual Studio 2013中的vs android插件时遇到了很多问题。基本上,我正在使用官方github vs-android网页上的故障排除指南取得一些进展。但是现在我遇到了困难。在多次重新安装JDK和Android SDK后,我到了一个地步,即出现以下输出:

1>ANTBUILD : [dx] error : 找不到合适的Java。为了正确使用Android开发工具,您需要在系统上安装适当版本的Java JDK。

这很奇怪,因为在错误上面有这样一行:

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 : 找不到合适的Java。为了正确使用Android开发工具,您需要在系统上安装适当版本的Java JDK。
1>         [dx] 我们建议您在这里安装JavaSE的JDK版本:
1>         [dx]   http://www.oracle.com/technetwork/java/javase/downloads
1>         [dx] 
1>         [dx] 如果您已经安装了Java,您可以在控制面板/系统/高级系统设置中定义JAVA_HOME环境变量,指向JDK文件夹。
1>         [dx] 
1>         [dx] 您可以在这里找到完整的Android SDK要求:
1>         [dx]   http://developer.android.com/sdk/requirements.html
1>         [dx] 
1>         [dx] 无法执行指定的程序。
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 : 找不到合适的Java。为了正确使用Android开发工具,您需要在系统上安装适当版本的Java JDK。
1>         [dx] 我们建议您在这里安装JavaSE的JDK版本:
1>         [dx]   http://www.oracle.com/technetwork/java/javase/downloads
1>         [dx] 
1>         [dx] 如果您已经安装了Java,您可以在控制面板/系统/高级系统设置中定义JAVA_HOME环境变量,指向JDK文件夹。
1>         [dx] 
1>         [dx] 您可以在这里找到完整的Android SDK要求:
1>         [dx]   http://developer.android.com/sdk/requirements.html
1>         [dx] 
1>         [dx] 无法执行指定的程序。
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

0
0 Comments

在64位操作系统中,vs-android不适用于找到Java。问题的根源来自于android工具链使用的一个批处理文件,用于获取Java可执行文件的完整路径。该文件位于android_sdk\tools\lib\find_java.bat。

令人费解的是,该批处理文件只在“Program Files”文件夹下搜索Java可执行文件,而不在64位Windows下的“Program Files (x86)”文件夹下搜索。如果您安装了64位版本的JDK,这是可以的,但如果您安装了32位版本的JDK,则会失败。据我所记,vs-android需要32位版本才能正常工作,否则在Visual Studio中调用Java时会失败,这与msbuild任务(与跟踪器有关)存在某些问题有关。

我找到的最简单的解决方法是在系统环境变量中定义JAVA_HOME(我假设您已经有了)并修改find_java.bat文件中的下一个代码(从第44行开始):

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级别的消息与您的清单文件的uses-sdk设置有关,与您项目的vs-android设置无关。有关更多信息,请参阅此链接:http://developer.android.com/guide/topics/manifest/uses-sdk-element.html

vs-android中的设置在构建时用于选择正确的头文件和库,而其他一个则是在部署.apk时对Android操作系统的一个指示。

希望能对您有所帮助! 🙂

是的,您需要32位版本的JDK,否则在构建过程中会更早遇到更多错误。我以前遇到过这个问题,不得不重新安装所有内容。如果您的建议有效,我将尝试并接受答案。谢谢。

尝试了你的解决方案更新findJava.bat但是... -Djava.ext.dirs=..\lib\x86_64;..\lib不受支持。请使用-classpath代替。错误:无法创建Java虚拟机。错误:发生了致命异常。程序将退出。这清楚地表明需要32位版本的JDK。

0
0 Comments

问题原因:在使用vs-android时,找不到适合的Java版本。

解决方法:无需降级到Java 8,只需要安装Android Studio,并将以下路径添加到“path”系统变量中。

C:\Program Files\Android\Android Studio\jre\bin

我使用的是jdk-11.0.6版本,"uiautomatorviewer"正常工作。

0
0 Comments

在2020年使用win10时,我遇到了这个问题。我是一个Android开发的新手,但是我是一个经验丰富的程序员。经过很多次安装错误和编译,我推荐以下步骤来解决这个问题。首先,我从计算机中删除了所有的Java版本,并删除了所有可能的路径和设置。然后,我安装了jdk 1.8(jdk-8u261-windows-x64.exe)。现在,find_java.bat和dx.bat可以正常工作了。我的示例测试程序可以完全编译而没有错误。根据我的理解,Android与最新的jdk版本不兼容。最新的兼容版本是1.8。

原因:Android不兼容较新的jdk版本。

解决方法:删除计算机中的所有Java版本和相关路径设置,安装jdk 1.8版本。

0