我目前正在计划开发一个多平台应用程序,我不确定哪种方式最符合我的要求,因为我能想到的所有可能性都无法让我满意。
首先,我想为Android编写一个应用程序,它应该感觉像一个普通的典型Android应用程序。所以我想在我的其他gui元素中使用标准的actionbar和android设计外观。在完成Android应用程序后,我正计划开发一个应该有不同设计的ios应用程序,所以无论如何我都会重新开发gui。
但我不想重写代表应用程序智能的其他代码,独立于gui。我提出了以下可能性:
这里我在C ++库中抽象了我的应用程序的所有代码(因为据我所知ios也支持c ++库的使用)并且通常在java中开发gui android。该库将具有启动功能,并将通过回调函数通知gui每个更改。
临
缺点
在这里我很难找到可能的东西,尤其是2.2
我在Qt方面只有一些初步经验但据我所知,我会有以下优点和缺点:
临
重用ios和Android代码的大部分内容。我想为每个平台重新设计gui,让它们感觉自然。我无法评估qt甚至可以帮助我做这件事
缺点
我必须使用其他qt小部件来复制android gui。这是更多的努力,我不知道是否可以复制android gui元素(如操作栏),以便用户不会注意到它。
我不知道这是否可行,我无法找到这些信息。我可以使用类“NativeActivity”并使用android框架来构建gui并使用例如动作栏?如果这是可能的,那么它将有来自1的专业人员。也许不会有它的缺点?
您对我的想法有什么反馈,甚至可能是我没想过的新方法吗?像WhatsApp这样的其他多平台应用程序如何解决这个问题?他们是否为每个平台都有冗余代码?
谢谢你, 托比
答案 0 :(得分:0)
我想说这很大程度上取决于您的申请要求。我认为,更好的解决方案是使用针对该平台推荐的SDK为每个平台开发单独的应用程序,并在本机C ++中实现仅耗费时间的数据处理算法。
移动平台上的应用程序运行时并不像桌面平台那么简单。您应该考虑后台和前台处理,特定应用程序生命周期,访问网络,文件系统等系统资源。所有这些问题在iOS和Android上都有所不同。
关于您列出的可能性。
Qt / QML只有在满足两个要求的情况下才可以:
1.1您的应用程序是一个没有任何后台操作的foregroud应用程序。
1.2您购买商业Qt许可证是因为只有商业Qt可以提交到Apple iTunes应用程序商店(甚至GPL应用程序都在 问题)。在Android上使用带有跨平台C / C ++后端的NDK原生活动。 Android NDK API提供的API比Android Java SDK少得多,因此您需要手动实现或包装许多东西。这是一条艰难的道路。
使用JNI混合Java代码和C / C ++可以为您提供更多的Android SDK API。但是你应该记住,在C / C ++上开发时,Android活动的生命周期并不是你用来处理的。
我们正在使用的方法
我们一直在开发一个具有大量跨平台功能的应用程序,该应用程序可以在Windows / Linux / Mac OSx / Android / iOS上运行。我们按照以下方法使用该方法。
尽管如此,两个移动平台通常都需要在C ++核心中进行变通和调整,这为每个平台的代码添加了许多#ifdef&#edde分支。