调用本机代码Android Studio:Assets Dir或静态库中的可执行文件

调用本机代码Android Studio:Assets Dir或静态库中的可执行文件,android,android-studio,android-ndk,native-code,Android,Android Studio,Android Ndk,Native Code,在Android studio NDK应用程序中运行本机可执行文件的更好方法是什么(假设您有源代码)。假设以下是两个选项(请不要建议用Java重写代码): A.将main()编译成一个静态库,并在java中调用它。将输出添加到main以获取要传递给Java应用程序的信息。如果需要捕获stdout/stderr进行调试,请将其复制到getFilesDir()中的文件中 B.将编译后的可执行文件放在assets文件夹中,复制到具有可执行权限的GetFileDir(),并将其作为输入流运行。使用red

在Android studio NDK应用程序中运行本机可执行文件的更好方法是什么(假设您有源代码)。假设以下是两个选项(请不要建议用Java重写代码):

A.将main()编译成一个静态库,并在java中调用它。将输出添加到main以获取要传递给Java应用程序的信息。如果需要捕获stdout/stderr进行调试,请将其复制到getFilesDir()中的文件中

B.将编译后的可执行文件放在assets文件夹中,复制到具有可执行权限的GetFileDir(),并将其作为输入流运行。使用redirectErrorStream解析stdout以获取所需信息

我目前的观点是,A更有效、更无缝,但我可能错了。B可以节省您将argv和argc传递给main的时间(可能会使Java看起来像一个终端,从而更容易理解)