您的位置:首页 > 移动开发 > Android开发

Android使用Minio对象存储服务API

2017-07-26 15:38 656 查看
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

博主技术有限,望大牛路过多多指教!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息