Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/203.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函数&;Qt for Android中的第三方库_Android_Qt_Mosync - Fatal编程技术网

[本机]:使用Java函数&;Qt for Android中的第三方库

[本机]:使用Java函数&;Qt for Android中的第三方库,android,qt,mosync,Android,Qt,Mosync,最近我使用qt编写了一个android应用程序。 但我有一个大问题,我可以使用/调用一些原生android API吗,比如调用特殊活动 e、 在Android SDK中,我用java调用联系人: 意向意向=新意向(Intent.ACTION\u PICK,Contacts contract.Contacts.CONTENT\u URI); startActivityForResult(意向、选择联系人) java C++ Android SDK API的一些C++包装库吗? 或者,如果我需要一

最近我使用qt编写了一个android应用程序。
但我有一个大问题,我可以使用/调用一些原生android API吗,比如调用特殊活动

e、 在Android SDK中,我用java调用联系人:
意向意向=新意向(Intent.ACTION\u PICK,Contacts contract.Contacts.CONTENT\u URI); startActivityForResult(意向、选择联系人)

java C++ Android SDK API的一些C++包装库吗? 或者,如果我需要一个特殊的组件(用java编写),我可以在qt android程序中使用它吗?
或者用“纯qt”和“标准java”或“C++android NDK”的混合页面/活动制作一个程序

(我问这个问题是因为我有使用MOSYNC框架的经验,这是一个很好的框架,但您仅限于自己的库,无法使用任何外部库或android标准API,…)

提前谢谢

编辑: 根据JNI的改进( ),我有一个问题:
我可以在qt项目中使用“任意”android Java第三方库吗?当我在Java SDK项目中使用这些库时?

您可以使用Android NDK在C/C++中编程。你必须在静态库中包装C++代码库,并通过java包装器和jn.< /p>加载它。

标准NDK不支持RTTI,标准C++的许多功能也不可用,如STD::String等。Dmitry Moskalchuk提供了NDK的一个修改版本,该版本至少支持这一点。此修改版本适用于所有运行ARM处理器的Android手机


注意:JNI调用会大大降低性能。Java并没有那么难——如果你知道如何用C/C++编程的话。java的优点在于,应用程序可以运行在运行Android的任何设备上,因为NDK应用程序依赖于编译的架构。

< P>为了实现您想要的,您需要通过JNI调用C++代码中的java代码。对此我不知道任何C++包装库。您需要从JNI_OnLoad获取Java VM,当您想要调用Java方法时,您需要将VM附加到您的线程,with将为您提供一个JNIEnv,您可以使用它来查找您想要的类并调用其上的方法。应该有助于了解细节


至于使用QT开发Android应用程序是否值得,是的,如果您需要跨平台支持,并希望将同一应用程序部署到Android、Linux、Windows等。如果您只开发Android应用程序,那么根据我的经验,直接使用安卓系统更容易、更快。

我不确定您是如何进行的“Qt for Android”。但此时此刻,这个想法得到了团队(K桌面环境)的正式支持。他们称之为project。2012年10月,他们发布了该项目的第一个beta版

因此,基本上,当您安装Essentials SDK时,您可能已经安装了这些东西

  • Qt Creator-为Android定制的Qt IDE
  • Android NDK-用于用Qt代码构建共享对象
  • Android SDK-使用Qt支持定制
  • 使用定制的Qt Creator,您可以

  • 创建一个Android用户界面项目
  • 在集成Qt设计器中设计UI
  • 编译C++代码来构建.so文件并用java代码包起来。
  • 创建APK并部署
  • 调试APK
  • 我对Qt for Android的一个主要关注点是UI。UI具有KDE 4.x的本机外观和感觉(与在台式机上运行的相同)。Android UI主题(Holo等)尚未完全可用

    由于这个项目仍然是测试版,我不确定Android原生功能的包装类/函数是否可用。请查看官方文档以了解更多详细信息


    希望这能有所帮助。

    QT使用android NDK,它应该有一个包装器功能,不是吗?是的,sebastian,NDK有,但这并不意味着QT也有一个使用android sdk/NDK的包装器。Eclipse的评论似乎很主观。为什么android开发在Eclipse中最适合被问到的问题?以及如何使用它Eclipse使被问到的问题比使用任何其他IDE都更容易解决?我刚刚发现了一个从Android应用程序调用Java代码的示例:我认为这个问题可以打开。@Sashoalm NDK确实支持RTTI、异常和STL。请看:谢谢@gnuanu,实际上我问这个问题是为了得到正式提及!