Java Qt代码在Android上的移植及其工作原理

Java Qt代码在Android上的移植及其工作原理,java,android,c++,qt,porting,Java,Android,C++,Qt,Porting,我正在考虑将我的Qt应用程序移植到android上 我的问题是,C++中的代码和Qt是一个C++库,它是如何移植到Android的,Android需要java代码,需要一个APK文件来安装这个设备上的应用程序。我很好奇,他们是如何和做什么事情来让代码像java代码一样工作的 如果问题不清楚,请发表评论,我会尽我所能让它更清楚。Android应用程序是Java应用程序,运行在名为“Dalvik”的虚拟机上。这给Qt/C++应用程序在这样一个基于Java的平台上运行带来了许多挑战。为此,Qt for

我正在考虑将我的Qt应用程序移植到android上

我的问题是,C++中的代码和Qt是一个C++库,它是如何移植到Android的,Android需要java代码,需要一个APK文件来安装这个设备上的应用程序。我很好奇,他们是如何和做什么事情来让代码像java代码一样工作的


如果问题不清楚,请发表评论,我会尽我所能让它更清楚。

Android应用程序是Java应用程序,运行在名为“Dalvik”的虚拟机上。这给Qt/C++应用程序在这样一个基于Java的平台上运行带来了许多挑战。为此,Qt for Android应用程序分为两部分。第一部分是qtake组织的Qt/C++本机应用程序。第二部分是一个启动器,它是由QtCreator根据您的应用程序首选项、设置和目标Android版本自动生成的Java代码

启动器是一个Java进程,因此Qt Android应用程序有一个基于Java的入口点。launcher中的Java代码将根据模板中其他文件中给出的元信息加载所需的Qt库。因此,当Qt for Android应用程序启动时,它只是一个普通的Java应用程序。入口点位于
QtActivity.java
中,可在项目构建目录的
android/src/…
下找到


加载Qt库后,Java代码将在新线程上启动应用程序的本机main()函数,应用程序将启动。此时,Java代码用于将事件从Android委托给Qt。对于Android应用程序,QT使用java本地接口(JNI)来在java世界和C++世界之间进行通信。

< P>只使用QT5.4.0,安装NDK+Android SDK,你会发现在Android上使用C++是非常容易的。

谢谢你的洞察力。这真的很有帮助,但是我对新的想法很有兴趣。还有一件事,当你说“第二部分是由QtCreator生成java代码的启动器”时。只想知道它生成什么代码,让C++世界和java世界之间的通信。如果我在C++中编写HeloWord程序,什么代码会让java调用它。希望我问的是正确的问题,如果我错了,请纠正我。@RahulAssassin您可以构建一个简单的Qt Android应用程序,并查看在
$build\u TARGET/Android/src/…
中生成的Java文件
QtActivity.Java
。我创建了Qt应用程序,并且可以在我的设备上成功运行它,但我没有办法更改应用程序映像。请帮助。@RahulAssassin你最好用一个新问题来提问。描述问题以及您所做的工作。谢谢。我之前试过Qt5.1,但运气不好。现在我已经删除了它并安装了Qt5.4。我会让你知道它是否有效,不过还是要谢谢你。最后我可以在我的android设备上运行QT应用程序了