---
# System prepended metadata

title: '[Windows][Android studio]vulkansamples 小白填坑心得'

---

# [Windows][Android studio]vulkansamples 小白填坑心得
###### tags: android vulkan 

以下是我遇到有血有淚的坑



#### 1  no module named datetime
執行到下列步驟
```
..\..\..\ndk-build NDK_PROJECT_PATH=. APP_BUILD_SCRIPT=Android.mk ^
 APP_ABI=all APP_PLATFORM=android-24 APP_STL=c++_static ^
 -j8 clean libshaderc_combined
```
會遇到此坑[no module named datetime]

[思考過程]以為是有缺少packages，所以使用pip下載，但結果無效
後來才發現這部分在執行時會自己去抓NDK目錄下python2.7的舊版本，
所以我把NDK目錄下的python.exe檔全刪了，就解決。

#### 2 OSError: [WinError 193] %1 is not a valid Win32 application
執行到下列步驟
```
cd android
python3 compile_shaders.py
```
("python3"，這個指令若本身電腦環境變數設置是"python"，就把"3"省略掉，原因應該是有部分人的電腦裡同時有python2,python3，所以環境變數設置有所區別)

會遇到兩個坑
第一個是[OSError: [WinError 193] %1 is not a valid Win32 application]

[思考過程]以為是因為使用64位元的python,所以無法,但改用anaconda3共存方式開32位元python，也無法解決。
仔細看錯誤訊息發現源自於subprocess.py這個檔案，
後來嘗試網路上提供的方法，去修改"subprocess.py"
```
將shell=false 改成 shell=ture
```
就可解決

#### 3 ..\..\glslang\bin\glslangValidator' 不是內部或外部命令、可執行的程式或批次檔。
#### 4 ..\..\spirv-tools\bin\spirv-as' 不是內部或外部命令、可執行的程式或批次檔。

剛剛上列步驟第二個坑
這次學乖了從錯誤訊息直接攻擊目標"compile_shaders.py"
打開發現，裡面有兩行
```
"glslang-master-linux-Release.zip"
"SPIRV-Tools-master-linux-RelWithDebInfo.zip"
```
我是在windows，但他下載的是linux版本，
所以修改為
```
"glslang-master-windows-x64-Release.zip"
"SPIRV-Tools-master-windows-x64-Release.zip"
```
就解決此問題