“家”计划:Android开发用HTTP进行文件共享

通过将编译好的AndroidNginx部署到应用中,实现无需USB传输和蓝牙连接即可分享照片等文件的功能,大幅简化了文件分享流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

代码镇楼:https://github.com/dna2github/dna2mtgol/tree/master/fileShare

最近老妈一直抱怨传照片连个USB好麻烦,给别人传照片还要开蓝牙。

于是需求一来,那就动手写个程序解决下呗。

首先的思路肯定是使用现有的库,Netty和NanoHttpd都是不错的选择,但是还要去研究它怎么用,并且有一大堆繁琐的错误处理和文件读写缓存处理要做,有没有方法能疾速缩短开发周期呢?

于是掂量掂量刚编译好的Android版Nginx 1.9.5,要不直接调用它!

Android Nginx 1.9.5的编译请参阅:文章 拥抱Android:编译nginx搭建移动平台 |编译脚本 nginx-1.9.5.sh

有了nginx,一切变得简单了,只要能想办法让Android App去启一个单独的进程运行nginx就可以达到HTTP文件索引服务的目标。

第一步,我们需要将nginx放到资源文件夹里,然后用代码把它读出来写到app自身data文件夹里。

这个GetResource,InputStream再结合FileOutputStream很快就能搞定。

于是接着写了个class NginxServer使用Runtime.getRuntime.exec去启动新进程。

结果是nginx死活运行不起来,adb shell进去查看nginx文件,原来没有可执行权限,加个可执行。

可以执行了,又报了socket permission denied。是没有开Android App的网络权限,那就在AndroidManifest.xml里加个申明好了。

后面nginx终于可以执行了,打开浏览器可以显示404错误了。

下面再来一个class NginxConf专门生成nginx的配置文件,用户输入一个文件夹路径,把server里location的alias设置成这个路径,开启autoindex,一个HTTP文件索引服务立刻就完成了。

到哪share文件,以前是在Android的模拟命令行写python -m SimpleHTTPServer,现在就直接输入一个路径,开始服务!

因为这个nginx当时编译的时候包含了https和mail的功能,甚至连websocket都支持了。所以下一步就是继续扩展这个app的功能。

首先是可以把编译好的python(点击打开链接)或者nodejs(点击打开链接)拿过来,打包好必要的库成zip放在资源里,需要的时候释放出来,完全可以做应用服务器了!

比如python装好了,把Django, flup准备好,到时候app运行两个Process,一个是python manage.py runfcgi,一个是nginx;nginx配置好fcgipass,一切完美!

好了,今天就洗洗睡吧。呃,就这么过了11.11,也是醉了 -_-///

补遗:又过了几天,在玩Raspberry的时候,突然搜索到了OTG这个东西,网上有人手工把普通miniB-USB的线改装成OTG线,于是果断下单买了一个。呵呵,app神马都是浮云。手机连个OTG线,都有键盘和鼠标了,插U盘移动硬盘也能自动识别!好了,FileShare就此扔一边去了。不过在外面多人共享wifi热点这个app还是很实用滴~



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值