用一个安卓 app 实验全栈开发

2019-09-02 20:46:11 +08:00
 novato

一般所谓“全栈开发”就是前后台一起搞,既然 Android 也是 Linux 内核,那么不是也可以当服务器用吗?但是用常规的后台开发语言 PHP、java、nodejs 之类的都不太合适,把 php-fpm 交叉编译成 arm 版的这个有人做过,nodejs 也有安卓版的,但都是提供一个环境让别人去写后台代码,光这个环境就几十兆了,很笨重还不好用。java 倒是有点靠谱,又是 Android 原生语言。只是不太喜欢 java,感觉表达起来太啰嗦。
所以我选择用 C++ 做后台,sqlite 做数据库(自己编译的原生版,不是安卓自带的那个),前端用 vuejs 做 spa,通过 ajax + websocket 与本地的 C++后台交互。
我想写一个商城‘网站’,用户在手机上添加商品,包括价格、文字描述、图片 /视频展示,同一内网中的其它客户端,包括安卓、iphone、PC 端,用浏览器打开这个“运行在安卓”上的商城就可以自助购物,如果直接用微信扫码打开的,就直接用公众号方式支付,如果是在 PC 端打开的,就显示一个二维码,让客户扫码支付。那么这台手机上售出的所有订单和商品信息都存在本地的 sqlite 数据库中,并且可让它支持退款。
客户付的款到哪里去了?那就要让安卓手机的机主可以直接在 app 上开通自己的微信商户并绑定自己的银行卡,那别人在你手机上买东西的钱就由微信转到你银行卡中了。
那么就需要解决几个问题:

  1. 对接微信官方小微商户接口(这个可以绑个人银行卡的,不需要公司对公账户)
  2. 上传商品的图片、视频到 http 站点目录,实际上是保存文件到安卓内部存储中,sqlite 存储媒体文件的 url 并与该商品关联。上传的视频文件大小没限制(只要手机容量够大)
  3. 在其它客户端用浏览器播放视频流,现在支持 html5 的浏览器都支持<audio><video>标签,所以没问题。在 http 服务器中加入 range 分段处理即可。就是让客户可以拖动进度条播放那种。
  4. 顺便也加上扫码收款,扫客户的付款码,也可出示收款码让客户扫,直接选商品生成,不用输入金额。而且开通了小微商户别人可用信用卡支付。
    这样线上、线下支付都有了。所谓线上也只是内网的线上,别人没法通过公网访问你的安卓 http 网站(除非在路由器中加 ip 映射)。

然后这样拍脑袋搞出来的东西是这样的(请不要吐槽界面,我美工比较弱):

App 下载( 4.2M )

3207 次点击
所在节点    分享创造
4 条回复
BigDogWang
2019-09-02 22:34:08 +08:00
说实话,佩服。像我现在已经没有动力写这种 Demo 了,感觉有点浮躁了
jerry12547
2019-09-03 15:38:22 +08:00
有点猛
hurrytospring
2019-09-05 10:25:48 +08:00
没看懂有啥意义,你的服务器运行在安卓上操作的是哪里的数据呢,本地 sqllite ?在端上就可以直接操作啊,为啥再在本地起服务,然后用服务操作。。
novato
2019-09-05 15:04:00 +08:00
@hurrytospring 在端上是可以直接操作,但是不起服务的话,其它浏览器客户端就访问不了。而且 app 的界面是 vuejs 做的,sqlite 读写是用 C++操作的,在界面上点一个按钮就要通过 javascript->java->c++->写入 sqlite ( C 原生编译的),也可以直接 post json 到 C++的 restful 服务操作。实际上两种方式都有用。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/597323

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX