求思路,给基于 C++的程序开发移动端应用 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
midas
V2EX    问与答

求思路,给基于 C++的程序开发移动端应用

  •  
  •   midas 2016-03-21 10:00:05 +08:00 2283 次点击
    这是一个创建于 3526 天前的主题,其中的信息可能已经有所发展或是发生改变。

    无移动端开发经验,擅长 Java/C

    想为一个基于 C++软件开发移动端应用, iOS/Android 都考虑的情况下有什么好的思路

    C++软件只是简单的接收 command line argument 进行操作后直接终端内输出

    搜索了一下

    Android 有 NDK 支持 C++的使用

    iOS 只是不能使用 UIKit 来直接做 C++的交互

    两个都支持使用已有 C++的程序

    1. 不知道有没有可以实现两个代码库共用的思路(部分共享, UI 开始分开的)
    2. 如果每天投入 8 小时边学边做大概要多久(这个问题可能有点让人不好回答,但考虑最简单的 UI 的话)

    欢迎指出错误,各种意见,帮助和推荐资料

    Thanks in advance

    11 条回复    2016-03-23 00:24:20 +08:00
    3dwelcome
        1
    3dwelcome  
       2016-03-21 10:08:29 +08:00
    就按照游戏开放的方案,用 opengl es 做界面,在桌面系统调试通过后,直接搬到手机。全平台都是 c++,代码通用,很爽的。
    midas
        2
    midas  
    OP
       2016-03-21 10:19:22 +08:00
    @3dwelcome 感谢思路,开发过程是在 Visual Studio 上完成吗?界面设计方便也是 VS 上做吗?
    3dwelcome
        3
    3dwelcome  
       2016-03-21 10:32:38 +08:00
    可能和你需求并不是完全匹配,游戏开发是完全用 vs 的,有现成的 opengles 模拟器,界面使用 gl es 的一些开源界面库搭建。

    你如果只做单个应用 app 的话, C 辅助处理,写一下原生 UI 也未尝不好。找一些简单的开源项目边看边学就行了。
    WildCat
        4
    WildCat  
       2016-03-21 10:38:28 +08:00 via iPhone
    QT 可以,但是几乎没人用
    midas
        5
    midas  
    OP
       2016-03-21 10:51:01 +08:00
    @WildCat 感谢推荐

    @3dwelcome 原生 UI 让人感觉更好,与操作系统看起来是一体。我的情况的话基本上后台处理都是交给 C++处理了,已经不是简单辅助了。
    longear
        6
    longear  
       2016-03-21 11:35:26 +08:00
    http://news.cnblogs.com/n/209785/
    我忘了是不是这篇, 是说业内知名应用的夸平台共享代码的事情。
    另外游戏应用 Android 和 iOS 共享 C/C++代码很常见, 我也正在做这个。

    先搭建两个开发环境, 一个是 Android 的,最好是 Linux, 因为要用到 NDK , NDK 叉编译 在 Linux 环境下麻烦最少,当然 Windows 的也可以。另一个 iOS 开发环境只能用 Mac OSX 系统,黑的白的无所谓, 但最好是白的,因为省心,黑的除非找人给装,不然还要自己研究怎么装,这也要浪费一点精力。

    至于每天 8 小时,要用多久,这个真的不好说,环境搭建好之后,可能用 2~4 周就能搞定,要看你的 UI 到底有多简单,足够简单的话,根本不用深入学 Android 和 IOS 的基础知识。

    可以让 C++的程序输出到一个文本数组返回给调用端,然后就可以简单绘制成 UI 上的对象。如果不想对 C++程序有什么改动就参考这个改动重定向输出,然后在调用端解析文本。

    http://stackoverflow.com/questions/23352592/redirecting-stdin-and-stdout-of-c-program-in-android
    longear
        7
    longear  
       2016-03-21 11:37:33 +08:00
    界面都在各自的开发环境中设计,都有 UI 编辑器, 先搭建好开饭环境再说,走过来就了
    midas
        8
    midas  
    OP
       2016-03-21 12:55:06 +08:00
    @longear 感谢回复。 开发环境我觉得还是小事,基本上要啥有啥。平时编程相关都用 OS X ,实体手机也都有。就怕开发起来经验不足做很多可能一步可以做到事情自己分解成了很多多余的步骤。我可能会做的也和你最后说的差不多,基本就是 stdin stdout 能满足。只是在 UI 显示反馈的时候稍微做下优化以致于不像直接在终端上交互一样,加强一下移动端的体验。

    刚跑步时候在油管上看了一下 MS 给 Xarmin 做的一个小视频范例,不知道实用起来体验怎么样。
    learnshare
        9
    learnshare  
       2016-03-21 12:59:50 +08:00
    Qt ?
    yuriko
        10
    yuriko  
       2016-03-21 14:41:08 +08:00
    Xarmin 也好 Qt 也好,自己学着弄都会有坑,如果不复杂还不如去研究下原生。
    游戏那套一般比如 cocos 这种,用全 C++配合 GL 实现完后整个装到两边的容器里,效果你也知道

    还有种就是用 hydrid 类方案,用 web 的结构去开发,同第一种一样,有很多坑要踩

    嘛如果有一种能兼顾的开发方案,还要那么多 iOS 、 Android 开发干嘛
    midas
        11
    midas  
    OP
       2016-03-23 00:24:20 +08:00
    @yuriko 感谢回答。自己也知道不同的方法肯定是有 tradeoff 的。
    @learnshare 感谢回答。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1027 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 18:23 PVG 02:23 LAX 10:23 JFK 13:23
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86