Android Studio 3.2.1编译Vulkan示例项目

最近在学习Vulkan,根据Google官方给出的文档,是存在一些问题的,总结一下:

# 官方文档说要检出 git clone https://github.com/googlesamples/vulkan-basic-samples.git
# 实际上 vulkan-basic-samples.git 是 VulkanSamples.git 的一个fork,google简化了部分编译流程
# vulkan-basic-samples.git检出后,直接用 Android Studio打开即可
# https://github.com/SaschaWillems/Vulkan.git也存在一个例子工程
# 但是貌似根正苗红的是VulkanSamples这个例子

$ git clone https://github.com/LunarG/VulkanSamples.git

$ cd VulkanSamples

$ cd API-Samples

# 最后在当前目录下生成一个 android 的目录,用Android Studio导入这个目录下的工程
# 也就是 "VulkanSamples⁩/API-Samples⁩/android⁩" 这个目录是我们的工程目录
$ cmake -DANDROID=ON -DABI_NAME=armeabi-v7a

如果代码下载不成功,可以本站下载一份拷贝。 点击这里下载 VulkanSamples vulkan-basic-samples

Android Studio导入代码的时候,需要使用Import Project(Gradle,Eclipse ADT,etc)这个选项导入工程,否则会出现工程无法调试的问题。

如下图:

如果导入工程的时候,出现下面的界面,请按照下图指示进行选择

注意,编译出来的例子,有些只是代码流程示例,没有显示,屏幕是黑屏,这个并不是错误,只需要选择其他能显示的工程即可。

比如下图所示的draw_textured_cube这个例子是有显示的。

如果编译的时候出现如下错误信息:

ninja: error: '~/Library/Android/sdk/ndk-bundle/sources/third_party/shaderc/libs/c++_static/armeabi-v7a/libshaderc.a', needed by '../../../../build/intermediates/cmake/debug/obj/armeabi-v7a/libvulkan_sample.so', missing and no known rule to make it
:API-Samples/android/:enumerate_devices_adv:externalNativeBuildDebug FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':API-Samples/android/:enumerate_devices_adv:externalNativeBuildDebug'.
> Build command failed.
  Error while executing process ~/Library/Android/sdk/cmake/3.6.4111459/bin/cmake with arguments {--build ~/Source/vulkan-basic-samples/API-Samples/android/enumerate_devices_adv/.externalNativeBuild/cmake/debug/armeabi-v7a --target vulkan_sample}
  ninja: error: '~/Library/Android/sdk/ndk-bundle/sources/third_party/shaderc/libs/c++_static/armeabi-v7a/libshaderc.a', needed by '../../../../build/intermediates/cmake/debug/obj/armeabi-v7a/libvulkan_sample.so', missing and no known rule to make it


* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

Deprecated Gradle features were used in this build, making it incompatible with Gradle 5.0.
See https://docs.gradle.org/4.6/userguide/command_line_interface.html#sec:command_line_warnings

BUILD FAILED in 10s
155 actionable tasks: 154 executed, 1 up-to-date

则说明NDK目录下的工程没有编译,导致无法正确的找到链接文件。

需要执行如下命令编译:

# ${ndk.dir} 为NDK的安装目录
$ cd ${ndk.dir}/sources/third_party/shaderc/

# 这一步的编译特别耗时,好消息是只需要执行一次就可以
$ ../../../ndk-build NDK_PROJECT_PATH=. APP_BUILD_SCRIPT=Android.mk \
 APP_STL:=c++_shared APP_ABI=all libshaderc_combined

# 这一步就非常快了
$ ../../../ndk-build NDK_PROJECT_PATH=. APP_BUILD_SCRIPT=Android.mk  APP_STL:=c++_static APP_ABI=all libshaderc_combined

参考链接


发布者

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注