【发布时间】:2021-07-28 21:16:29
【问题描述】:
如果 process = new ProcessBuilder(new String[]{"su", "-c", "exec " + mylib.so).start() 返回 0 而没有任何执行迹象,如何执行 .so 文件正在发生。
我使用 cmake 编译了一个 .c 文件并将其存储为库 (.so)。但是,当尝试执行库(必须运行 main() 函数)时,进程退出值为 0(无错误)时什么也没有发生。
我尝试写入我创建的文件以测试库是否正在执行,但也没有任何反应。文件仍然是空的。
int main (int argc, char **argv)
{
LOGW("Running");
FILE* file = fopen("/data/local/tmp/log.txt","w+");
if (file != NULL)
{
fputs("Running\n", file);
fflush(file);
fclose(file);
}}
另外,我找不到cmake日志文件是因为库没有执行吗?如果我在我的 cmakelist.txt 中添加日志库,我如何访问日志文件,如下所示:
find_library(
log-lib
log )
target_link_libraries(
mylib
${log-lib} )
【问题讨论】:
-
这里缺少很多信息。例如,您为什么要尝试使用
exec而不是像通常那样通过 JNI 调用库?为什么要使用硬编码的文件路径而不是要求 Android 提供允许写入的路径? -
Android 日志功能的输出,您可以在
logcat输出中找到。通常通过在您已通过 USB 或 WiFi 连接到手机的计算机上运行adb logcat。
标签: android c cmake android-ndk android-native-library