开源项目 Android-oss 的踩坑之旅

如何成功运行 Android-oss

版本声明 : 创作不易, 转载请标明出处 (第一篇博客终于出炉了, 哈哈哈)

概要


第一种错误: 无法执行 make 命令

先附上传送门 Android-oss

这是一个大神推荐的开源 APP, 采用 MVVM 架构, 用到了 RX 系列的很多框架, 从 github 拉下来之后, 被它的单元测试框架吸引了, 想看看 MVVM 下的单元测试怎么写, 但是…程序不能顺利运行, 踩坑之旅就这样开始啦 ~

最开始会报”can not find @string/koala_endpoint” 等一系列找不到 Xxx 的错误, 到项目的 issue 中找类似问题, 需要使用 “make bootstrap” 命令, window 环境是没有这个命令行的, 继续翻 issue, 发现全是无疾而终的….代码维护者也没有办法, 毕竟他们全部使用了 mac. 怎么办呢.

继续翻 issue, 发现有人使用了 “./script/bootstrap”, 而且格式很像 git 环境, 突然想到了 gitbash, 先试试再说. 安装完成之后, 在项目的根目录下打开 gitbash, 执行 “./script/bootstrap” .这条命令成功执行了, 但 bootstrap 中的命令只有部分执行了, 失败的原因都是: “命令 ruby 不存在, 命令 bundle 不存在”, 这种 “Xxx命令不存在” 的问题, 往往都是环境问题, 那就先解决环境问题吧.

试了多种解决办法, 比如打开 win10 的开发者, 但并没有任何作用. 最终, 这一问题的解决办法是, 安装 railsinstaller 软件.
官网在此

gitbash 大家应该有所接触, 没什么好介绍的, railsinstaller 是一个集成环境, 包含”ruby”, “bundle”, “sqlite” ,”rails” 等常用开发环境, 安装简单, 亲测好用 !!!

第二种错误: 不存在命令 Rails

两个软件都安装完成之后, 在 cmd 下, 运行 “ruby -v” 和 “rails -v”, 发现后者运行不通过, 提示没有这个命令, 解决办法是, 在 railsinstaller 软件的安装目录下, 找到 “rails.bat” 文件, 以编辑的方式打开, 替换全部内容为 :

@ECHO OFF
IF NOT "%~f0" == "~f0" GOTO :WinNT
ECHO.This version of Ruby has not been built with support for Windows 95/98/Me.
GOTO :EOF
:WinNT
@"%~dp0ruby.exe" "%~dpn0" %*

这个问题是在 stackoverflow 上找到解决办法的, 传送门在此:
stackoverflow_rails.

第三种错误: 找不到符号 Secrets

此时再次回到项目的根目录, 打开 gitbash, 使用命令 “./script/bootstrap” 和 “./script/bootstrap_config”, 命令运行成功, 也没有出现 “Xxx 命令不存在”的问题.

就在我感觉 app 可以成功运行的时候, 出现了另一种错误….”找不到符号 Secrets”, 再次到 issue 上查找类似解答, 看到亲切的中文啦, 但这位同志已经放弃了…一番折腾之后, 很偶然的打开了 名为 “Secret.java.example” 的文件, 这就是 java 文件好吗…直接重命名为 “Secrets.java”, clean 之后再次 build ,终于没有报错啦, 运行成功 ~~~

总结

github 上开源的项目, 除了部分大厂, 开发者的精力有限, 不能全面的解决 issue, 这种时候要想啊, 大家都是维护者, 慢慢探索, 共同维护这个项目, 很有成就感.

完结撒花


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(); } }); } }
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值