确定与Android应用程序一起部署的.so的工作目录
我正在部署一个第三方共享对象作为android应用程序的一部分,这个共享对象显然试图在“应用程序的工作目录”中查找许可证文件 在已部署的android应用程序上,特别是在共享对象的上下文中,如何确定工作目录是什么 在本机包装中,我尝试:确定与Android应用程序一起部署的.so的工作目录,android,android-ndk,Android,Android Ndk,我正在部署一个第三方共享对象作为android应用程序的一部分,这个共享对象显然试图在“应用程序的工作目录”中查找许可证文件 在已部署的android应用程序上,特别是在共享对象的上下文中,如何确定工作目录是什么 在本机包装中,我尝试: char cwd[PATH_MAX]; if (getcwd(cwd, sizeof(cwd)) != NULL) { printf("Current working dir: %s\n", cwd); } else {
char cwd[PATH_MAX];
if (getcwd(cwd, sizeof(cwd)) != NULL) {
printf("Current working dir: %s\n", cwd);
} else {
perror("getcwd() error");
return 1;
}
cwd以“/”结尾
那似乎不对
然后,我尝试天真地编写一个文件:
FILE* fFile = fopen("test.txt","w");
if (fFile==NULL) {
printf("Error %d \n", errno);
printf("It's null");
}
fprintf(fFile, "Hello World");
fclose(fFile);
菲菲最终被判无效。我的印象是,内部存储对读/写没有具体要求
Android上的库链接很好,函数可以执行-API只返回找不到许可证文件的消息。您看到的行为是正确的(从某种意义上说,您的应用程序正在按设计工作)。历史上的根本原因可能是Android应用程序在Java虚拟机中运行,Java传统上不使用“工作目录”概念
但是,没有什么可以阻止您设置工作目录以满足移植库的期望。没有经典意义上的“当前工作目录”。该库的开发者支持在Android上使用它吗?更新问题