Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 这个Android新手如何使用Android NDK和C++;Android应用程序中的代码?_Java_Android_C++_Android Ndk - Fatal编程技术网

Java 这个Android新手如何使用Android NDK和C++;Android应用程序中的代码?

Java 这个Android新手如何使用Android NDK和C++;Android应用程序中的代码?,java,android,c++,android-ndk,Java,Android,C++,Android Ndk,我是一名Java web开发人员;一、 本质上,编写JSP应用程序。我最舒适的环境是Linux,但我在Windows上做得还不错。我对Android应用程序开发了解甚少,对C++的知识一无所知。 我最近被指派编写一个Android应用程序。Android应用程序本身并没有那么令人畏惧,但这里是它变得复杂的地方。该公司有两个预先存在的小部件,用C++编写,希望我能加入Android应用程序。目前它们是独立的Windows应用程序,但我有源代码 我需要知道的是,我可以使用Android NDK来利用

我是一名Java web开发人员;一、 本质上,编写JSP应用程序。我最舒适的环境是Linux,但我在Windows上做得还不错。我对Android应用程序开发了解甚少,对C++的知识一无所知。 我最近被指派编写一个Android应用程序。Android应用程序本身并没有那么令人畏惧,但这里是它变得复杂的地方。该公司有两个预先存在的小部件,用C++编写,希望我能加入Android应用程序。目前它们是独立的Windows应用程序,但我有源代码

我需要知道的是,我可以使用Android NDK来利用我的Android应用程序中的C++代码吗?我可以在Android应用程序中使用这个预先存在的C++代码,并调用java中的IO类函数吗?然后,我可以将整个工具包和堆编译成一个Android应用程序,其中包含我原始代码的所有功能,以及预先存在的小部件吗

就像我说的,我对C++一无所知,所以我不知道从哪里开始。我已经在Android NDK上做了一些阅读,但是因为我没有C++经验,而且<>强>非常/强> Android经验(只是一些教程),我甚至不知道应该导入哪些文件到项目中。

谢谢

你没有提到C++代码使用的框架,这很重要。在一般情况下,它可能是从裸Win32 API到Qt的任何内容

Android NDK给了你纯C++(实际上是剥离的,没有STD::字符串),而没有Windows上可用的UI库/框架。如果C代码在没有访问UI的情况下做了一些复杂的事情,那么移植它是有意义的;如果它控制用户界面,那它就毫无用处了。 您不能只在框架之间移植MVC控制器,您必须重写所有内容。

Android有一个Qt端口,但我认为它不适合您(您首先没有提到Qt)。Qt庞大而复杂,一次学习的内容太多

Android有Xamarin/Mono,但据我所知是C#

您必须了解项目中使用的框架是否已移植到Android。如果是,您可能会使用该端口,如果不是,您将不得不重写UI

<> P>即使框架已经移植,也有可能你会花费更少的时间从头开始重新创建UI,并使用C++的东西作为参考模型,而不是尝试学习和配置第三方的东西。(这取决于代码的数量。)最有可能的是,用户界面无论如何都不适合手机


Android开发不必使用Windows,一切都可以在Linux下运行。(Linux更友好,特别是对于Linux爱好者:在Linux下,你可以grep logcat输出,Linux终端比Windows命令行框更友好(可以用鼠标调整大小,用键盘快捷键改变字体大小),并且.sh比.bat更好)。

这个答案非常主观,“Linux更友好”等等,它甚至与被问的问题无关,而且,它不寻求回答被问到的问题,即“如何”可以做到这一点,而不是“可以”做到这一点。@o0rebelious0o“友好”--您是否在windows和Linux下都使用了命令行adb logcat?在哪里更容易使窗口变宽,字体变小?在哪里更容易复制日志的一部分?你在哪里发现输出没有了,因为它超过了预设的行数?标记为离题,因为问题过于宽泛,不太可能收到任何非主观的高质量答案。开始做某事的最好方法是找到一个教程,然后跟进,回来问问题,并要求澄清你可能遇到的任何困难。