欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

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

程序员文章站 2022-04-30 16:10:16
...
代码镇楼: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,也是醉了 -_-///

以上就介绍了“家”计划:Android开发用HTTP进行文件共享,包括了索引,github,AndroidManifest.xml方面的内容,希望对PHP教程有兴趣的朋友有所帮助。