Android使用Minio对象存储服务API
来源:互联网 发布:js 更改表单action 编辑:程序博客网 时间:2024/06/03 22:45
Minio提供对象存储服务。它的应用场景被设定在了非结构化的数据的存储之上了。众所周知,非结构化对象诸如图像/音频/视频/log文件/系统备份/镜像文件…等等保存起来管理总是不那么方便,size变化很大,类型很多,再有云端的结合会使得情况更加复杂,minio就是解决此种场景的一个解决方案。Minio号称其能很好的适应非结构化的数据,支持AWS的S3,非结构化的文件从数KB到5TB都能很好的支持。
在Minio的API中,为java等语言提供了API,但是想要移动端直接将文件等存在Minio上,是比较困难的一件事。 如果你直接集成Minio为java提供的SDK,那么不会那么轻易集成到安卓项目中,本人用了两天时间将经验融合到项目中。
Demo下载地址:https://github.com/15229016179/MinioForAndroid
Minio API地址:https://docs.minio.io/
如果你是写go的,那么你应该对Minio不陌生,一个强大的对象存储服务。
安卓直接使用Minio为java提供的API,需要引入jar包。看API的时候兴高采烈,感觉so easy!可结果却是:
日了狗了!!!
刚导入jar包就是各种报错!各种jar包冲突。
然后就是长达两天的折磨!终于搞定。
先是为了搞定冲突,尝试删减jar包:
packagingOptions { exclude 'META-INF/DEPENDENCIES' exclude 'META-INF/LICENSE' exclude 'META-INF/LICENSE.txt' exclude 'META-INF/NOTICE' exclude 'META-INF/NOTICE.txt' }//minio针对java做的api,导入后会报一系列包冲突compile('io.minio:minio:3.0.5', { exclude group: 'com.google.code.findbugs', module: 'jsr305' exclude group: 'com.google.code.findbugs', module: 'annotations' exclude group: 'com.squareup.okhttp3', module: 'okhttp' exclude group: 'com.squareup.okio', module: 'okio' exclude group: 'net.jcip', module: 'jcip-annotations' exclude group: 'org.apache.httpcomponents', module: 'httpclient' exclude group: 'xpp3', module: 'xpp3'})
无果。
虽然解决掉了jar包冲突的问题,在6.0的手机上运行ok,但是在4.2的手机上搞不起来,原因是minio的jar包中使用了JDK1.7的类库。好难受!
然后只能把jar包反编译,看看它究竟搞了什么鬼。
没办法,只能把jar包中Minio的包反编译出来,改掉源码中使用JDK1.7类库的函数,然后引入需要用到的第三方jar:
//自己根据minio sdk中的lib引用,将必须用到的lib引用到项目中,并做一些删减,解决包引用冲突 compile 'com.squareup.okhttp3:okhttp:3.6.0' compile group: 'com.fasterxml.jackson.core', name: 'jackson-core', version: '2.9.0.pr3' compile group: 'com.fasterxml.jackson.core', name: 'jackson-annotations', version: '2.9.0.pr3' compile group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.9.0.pr3' compile group: 'com.google.code.findbugs', name: 'annotations', version: '2.0.1'// compile group: 'commons-logging', name: 'commons-logging', version: '1.1.1' compile group: 'joda-time', name: 'joda-time', version: '2.7' compile group: 'com.google.guava', name: 'guava', version: '18.0'// compile group: 'org.apache.httpcomponents', name: 'httpclient', version: '4.3.5'// compile group: 'org.apache.httpcomponents', name: 'httpcore', version: '4.0.1' compile('com.google.http-client:google-http-client:1.20.0', { exclude group: 'org.apache.httpcomponents', module: 'httpclient' exclude group: 'com.google.code.findbugs', module: 'jsr305' }) compile(group: 'com.google.http-client', name: 'google-http-client-xml', version: '1.20.0', { exclude group: 'xpp3', module: 'xpp3' exclude group: 'org.apache.httpcomponents', module: 'httpclient' exclude group: 'com.google.code.findbugs', module: 'jsr305' })
最终搞定了,太开心了!
请转至github下载源码查看:https://github.com/15229016179/MinioForAndroid
博主技术有限,望大牛路过多多指教!
- Android使用Minio对象存储服务API
- Minio: 非结构化对象存储服务提供者
- 分布式存储 Minio
- minio
- COS对象存储服务的使用
- 基于Minio和Thumbor搭建独立图片服务
- 使用cURL操作Openstack对象存储的ReST API
- 使用cURL操作Openstack对象存储的ReST API
- 【PHP SDK for OpenStack/Rackspace APIs】使用对象存储服务
- 腾讯云COS(云对象存储服务)的使用
- Android使用Gson和SharedPreferences存储对象
- Android 中使用SharedPreferences存储通用对象
- 腾讯云cos对象存储服务文件上传api就是一个大坑
- android 位置服务 api
- 用 Preferences API 存储对象
- 用 Preferences API 存储对象
- 用 Preferences API 存储对象
- 用Preferences API 存储对象
- 编写可维护的javascript(五):UI层的松耦合
- 最简单的IOS
- J2EE学习笔记(一)之JSP原理详解
- 有趣的树
- Anaconda使用总结(转载)
- Android使用Minio对象存储服务API
- c语言for循环变量i,i的定义位置不同会导致错误
- hadoop源码解析一之hadoop jmx 监控
- python中的urlencode与urldecode
- angularJS中cookies的使用
- Android_Web的目录结构
- 在openfoam-dev 安装laminarsmoke——boost库
- 住建部称将立法明确租售同权:租房买房居民享同等待遇
- 二分图最大匹配之多重匹配