我在Visual Studio 2017 15.6.2中创建了一个全新的Android原生项目,并且在不更改单个项目设置或源代码行的情况下,点击构建。它因以下错误而失败:
1>------ Build started: Project: AndroidNDKTest.NativeActivity, Configuration: Debug x86 ------
1>ANDROID_HOME=C:\Program Files (x86)\Android\android-sdk
1>ANT_HOME=
1>JAVA_HOME=C:\Program Files\Java\jdk1.8.0_161
1>NDK_ROOT=C:\ProgramData\Microsoft\AndroidNDK64\android-ndk-r13b
1>pch.h
1>TRACKER : error TRK0005: Failed to locate: "clang.exe". The system cannot find the file specified.
我不知道为什么找不到clang.exe,因为它存在:
C:\>dir /s C:\ProgramData\Microsoft\AndroidNDK64\android-ndk-r13b\clang.exe
Volume in drive C is OSDisk
Volume Serial Number is 1234-ABCD
Directory of C:\ProgramData\Microsoft\AndroidNDK64\android-ndk-r13b\toolchains\llvm\prebuilt\windows-x86_64\bin
03/08/2017 03:24 PM 43,847,680 clang.exe
答案 0 :(得分:2)
我也遇到了同样的问题,并通过学习VS属性系统的工作方式并跟踪进入VS的不良数据找到了它的源头,从而像老板一样修复了它。
我看了一下VS宏(这说明了如何在不熟悉的情况下找到它们:How can I find out the value of $(ProjectDir)?),我发现VS正在寻找$(LLVMToolchainPrebuiltRoot),它是llvm工具链(即clang等) 。)在这里:
C:\ Microsoft \ AndroidNDK \ android-ndk-r15c \ toolchains \ llvm \ prebuilt \ windows \ bin
但它已安装在这里:
C:\ Microsoft \ AndroidNDK64 \ android-ndk-r15c \ toolchains \ llvm \ prebuilt \ windows-x86_64 \ bin
很奇怪吧?因此,我找到了宏名称,并一直追溯到项目文件中包含的所有属性文件,直到找到它为止。
基本上,VS构建系统使用一堆宏,这些宏在继承到您的项目文件中的.props文件中定义。
这些.props文件隐藏在Visual Studio安装文件夹之一的深处(在我的计算机上,这些文件位于以下根目录下:C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Community \ Common7 \ IDE \ VC \ VCTargets)。
无论如何,通过手动调试所有的props文件和值,我最终得出了正在设置$(LLVMToolchainPrebuiltRoot)的props文件从注册表中获取其值的信息: 计算机\ HKEY_CURRENT_USER \软件\ Microsoft \ VisualStudio \ SecondaryInstaller \ VC
这似乎是由Visual Studio 2017“添加功能”安装程序错误设置的(我通过菜单选项“工具”->“获取工具和功能”安装了Android构建内容)。
删除注册表项会为我修复它(警告:除非您知道自己在做什么,否则请不要与regedit混淆!)
答案 1 :(得分:1)
我已通过在Visual Studio中设置Android NDK的文件夹来解决此问题。
答案 2 :(得分:0)
这个建议并不能解决我的问题。 In the visual studio developer community我发现卸载和安装Visual Studio的最新版本是可行的。
显然,逐步升级Visual Studio时可能会发生此问题。
答案 3 :(得分:0)
您可以设置以下环境变量来定义Android NDK和SDK位置:
set VS_NdkRoot=
set VS_AndroidHome=
来自C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\VC\VCTargets\Application Type\Android\3.0\Android.Common.targets
<SetEnv Name ="ANDROID_HOME"
Value ="$(VS_AndroidHome)"
Prefix ="false"
Verbosity="$(ShowAndroidPathsVerbosity)">
</SetEnv>
<SetEnv Name ="ANT_HOME"
Value ="$(VS_AntHome)"
Prefix ="false"
Verbosity="$(ShowAndroidPathsVerbosity)">
</SetEnv>
<SetEnv Name ="JAVA_HOME"
Value ="$(VS_JavaHome)"
Prefix ="false"
Verbosity="$(ShowAndroidPathsVerbosity)">
</SetEnv>
<SetEnv Name ="NDK_ROOT"
Value ="$(VS_NdkRoot)"
Prefix ="false"
Verbosity="$(ShowAndroidPathsVerbosity)">
</SetEnv>