OSS-Android SDK 搭建总结

背景

很多小伙伴对 Android 的 SDK 搭建熟悉,但是对于上云的 OSS Android SDK 使用有些一门疑问,今天从环境搭建到客户端使用全面给大家梳理一遍个人的使用总结;

分解

  • 下载jdk和Android studio
  • 安装jdk
  • 配置环境变量
  • 安装Android Studio
  • 配置Android Studio

下载工具

安装

JDK

image

典型下一步的操作
image

image

环境变量配置

image

JAVA_HOME

image

编辑Path

image

CLASSPATH变量

image

测试环境变量是否配置成功 “开始” -》 输入 -》 “cmd” 打开命令行窗口输入 javac

image

安装 Android Studio

image

  • 建议典型安装,如果不是很懂安装过程,不要建议更改配置

image

  • 上面是 Android Studio的安装目录 下面是sdk的目录,自行选择即可;

image

Android Studio配置

  • 加载本地配置信息提示

image

  • 刚开始打开的时候会问我们是否加载本地的配置信息,就是 Android Studio 的配置环境信息等,如果你以前没有用过,忽略掉就好了。直接按默认的点 ok 启动 Android Studio

image

  • 直接点击 Cancel 进入 SDK 配置

image

  • 然后一路下一步,直至finish,finish后会下载一些插件,等一下就好;

image

image

配置 SDK

image

image

这里我们选择我们刚才sdk的安装目录即可;
这时候我们就可以点击 Start a new Android Studio project 来新建一个工程了;
弹出新建工程对话框

image

新建工程,依次填写项目名称 公司域名 包名 等信息,注意选择自己的工作区不要用默认的;
然后一路next全默认最后到finish

image

集成 OSS SDK

1、 集成工程到 Android Studio 中;

  • 直接 git clone 工程;

https://github.com/aliyun/aliyun-oss-android-sdk.git

  • 引入 git 工程,这里要注意下,模式切换为 project;

image

image

2、引入成功后,了解主要的 java 类

2.1 Config 是我们主要的配置文件,里面存放的是 OSS 操作的 bucket 配置,以及回调、STS 获取地址、endpoint 等信息;

image

注意:
  • 现在 SDK 基本都采用 STS 的方式上传,用户需要自己维护一台 STS Server 服务器,目的是用来获取 STS token 临时令牌的信息; STS 的搭建可以参考:快速搭建移动服务
  • callback 是上传成功后回调用户的地址,也是用户自己维护,目的是接收 OSS 上传成功后回调信息,用户的回调服务器必须能返回 200 并且是 JSON 的字符串,类似截图中

image

2.2 OSSAuthCredentialsProvider 自动鉴权

这个类主要功能,是根据用户设置的 STS URL 地址,自动解析出返回的变量,并且在 STS 过期后自动去获取新的 STS token;STS 返回的鉴权信息格式一定要如下,并且返回 200

image

STS 地址返回的鉴权信息格式

{"StatusCode":200,"AccessKeyId":"STS.NJxxxxxxxxxxx1zMxm6Q","AccessKeySecret":"EDLc9CxxxxxxxPcSDxqrzW1kwCh5z7","Expiration":"2019-04-12T04:24:32Z","SecurityToken":"CAIS9xxxxxxxxxxKH6"}

2.3 这个路径下面主要是 Android 测试的类文件;

image

image

2.4 demo 的测试集合类

OssService 中集合 demo 的测试方式 (PutObject , PutImage ....)当使用者需要修改设置上传回调时可以通过这个地址进行修改;

image

测试上传

按照截图顺序,点击 设置,提示成功后 ,点击 选择图片,输入 object 名称,点击上传

image

通过 DEBUG 结果我们可以看到文件上传成功,导致我们的初步测试已经成功

image

public class GetAndUploadFileDemo { private static String TAG = "GetAndUploadFileDemo"; private OSSService ossService; private OSSBucket bucket; public void show() { ossService = OSSServiceProvider.getService(); bucket = ossService.getOssBucket("youcaidao"); // 文件的常规操作如普通上传、下载、拷贝、删除等,与Data类一致,故这里只给出断点下载和断点上传的demo resumableDownloadWithSpecConfig(); // delay(); // resumableUpload(); // delay(); // resumableDownload(); // delay(); } public void delay() { try { Thread.sleep(30 * 1000); } catch (Exception e) { e.printStackTrace(); } } // 断点上传 public void resumableUpload() { // OSSData ossData = ossService.getOssData(sampleBucket, "sample-data"); // ossData.setData(data, "raw"); // 指定需要上传的数据和它的类型 // ossData.enableUploadCheckMd5sum(); // 开启上传MD5校验 // ossData.upload(); // 上传失败将会抛出异常 OSSFile bigfFile = ossService.getOssFile(bucket, "de.jpg"); try { bigfFile.setUploadFilePath( "/storage/emulated/0/Android/data/com.qd.videorecorder/video/VMS_1439866564822.jpg", "image/jpg"); bigfFile.ResumableUploadInBackground(new SaveCallback() { @Override public void onSuccess(String objectKey) { Log.d(TAG, "[onSuccess] - " + objectKey + " upload success!"); } @Override public void onProgress(String objectKey, int byteCount, int totalSize) { Log.d(TAG, "[onProgress] - current upload " + objectKey + " bytes: " + byteCount + " in total: " + totalSize); } @Override public void onFailure(String objectKey, OSSException ossException) { Log.e(TAG, "[onFailure] - upload " + objectKey + " failed!\n" + ossException.toString()); ossException.printStackTrace(); ossException.getException().printStackTrace(); } }); } catch (FileNotFoundException e) { e.printStackTrace(); } } // 断点下载 public void resumableDownload() { OSSFile bigFile = ossService.getOssFile(bucket, "bigFile.dat"); bigFile.ResumableDownloadToInBackground( "/storage/sdcard0/src_file/bigFile.dat", new GetFileCallback() { @Override public void onSuccess(String objectKey, String filePath) { Log.d(TAG, "[onSuccess] - " + objectKey + " storage path: " + filePath); } @Override public void onProgress(String objectKey, int byteCount, int totalSize) { Log.d(TAG, "[onProgress] - current download: " + objectKey + " bytes:" + byteCount + " in total:" + totalSize); } @Override public void onFailure(String objectKey, OSSException ossException) { Log.e(TAG, "[onFailure] - download " + objectKey + " failed!\n" + ossException.toString()); ossException.printStackTrace(); } }); } // 设置相关参数的断点续传 public void resumableDownloadWithSpecConfig() { OSSFile bigFile = ossService .getOssFile(bucket, "VMS_1439866564822.jpg"); ResumableTaskOption option = new ResumableTaskOption(); option.setAutoRetryTime(2); // 默认为2次,最大3次 option.setThreadNum(2); // 默认并发3个线程,最大5个 bigFile.ResumableDownloadToInBackground( "/storage/emulated/0/Android/data/com.qd.videorecorder/video/VMS_1439866564822.jpg", new GetFileCallback() { // /storage/emulated/0/DCIM/Camera/VID_20150803_173350.mp4 @Override public void onSuccess(String objectKey, String filePath) { System.out.println("[onSuccess] - " + objectKey + " storage path: " + filePath); } @Override public void onProgress(String objectKey, int byteCount, int totalSize) { System.out.println("[onProgress] - current download: " + objectKey + " bytes:" + byteCount + " in total:" + totalSize); } @Override public void onFailure(String objectKey, OSSException ossException) { System.out.println("[onFailure] - download " + objectKey + " failed!\n" + ossException.toString()); ossException.printStackTrace(); } }); } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值