2012-08-09 198 views
3

我正在使用NDK將C程序移植到Android上。該程序使用uuid.huuid/uuid.h庫,具體取決於可用的庫。當我編譯程序時,給出錯誤信息uuid.h: No such file or directory將uuid.h包含到Android NDK項目中

我是新來的NDK,所以我不完全確定問題是什麼。我在Windows上使用cygwin;計算機沒有uuid.h庫或Android不支持它?有沒有解決方法 - 我可以以某種方式將它包含在編譯器設置中嗎?

最後,程序只使用像這樣的庫:

char  *s; 
uuid_t uu; 
uuid_create(&uu, NULL); 
uuid_to_string(&uu, &s, 0); 

也許我可以模仿我自己的C代碼,這種行爲?

感謝您提前提供任何幫助!

回答

6

uuid.h不是NDK的一部分。您可以通過運行來檢查find /opt/android-ndk-r8b/ -name uuid.h

您可以從AOSP獲取所需的代碼。我在主分支中找到了external/e2fsprogs/lib/uuid/uuid.h

+0

感謝您的幫助!我想我必須將該代碼合併到項目中......任何建議都可以這樣做。 – yellow 2012-08-09 17:27:35

+0

只需從AOSP直接提取代碼即可。看起來你需要的只是已經包含Android.mk文件的'uuid'文件夾。祝你好運。 – Frohnzie 2012-08-09 18:33:24

+0

嘿謝謝。我已經使用GIT將文件夾拉出來了,並且將它添加到我的項目中並運行ndk-build。它吐出一個「libext2_uuid.so」文件;爲了加入這個,我需要創建一個頭文件「uuid.h」來引用這些方法,並在Android.mk源列表中包含.so。 – yellow 2012-08-09 18:37:18

0

文章UUIDs and Linux: Everything you ever need to know 建議使用

$ cat /proc/sys/kernel/random/uuid 
eaf3a162-d770-4ec9-a819-ec96d429ea9f 

命令確實工作在Android的,雖然你的程序將要讀這個(/proc/sys/kernel/random/uuid)文件,而不是調用庫。

所以,如果你把String getStringFromFile(String filePath)here

getStringFromFile("/proc/sys/kernel/random/uuid") 

將返回一個UUID,你可以,例如,打印到日誌:

D/~~~  (5065): uuid=418ebd25-4f6e-4431-b31e-784703ea6093 

(運行它在三星GS4)

+0

有沒有人檢查過它實際上在Android設備上工作? – 2014-12-04 00:31:49

+0

我在代碼中使用它。 – 18446744073709551615 2014-12-04 08:32:15

相關問題