2012-08-09 202 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

相关问题