Android 9.0 上傳阿里雲 OSS,請求無回調

在 Android 9.0 的手機上,上傳文件到阿里雲 OSS 上,不論請求是否成功,均沒有回調。html

而在 9.0 如下的手機中,嘗試均沒有問題。android

錯誤內容

上傳調用方式以下:git

OSSClient oss = new OSSClient(context, endpoint, credentialProvider, conf);

PutObjectResult putResult = oss.putObject(put);
⬇️
這一步後報錯。

oss 上傳的地址: http://oss-cn-hangzhou.aliyuncs.com
複製代碼

報錯內容:github

Failed resolution of: Lorg/apache/commons/codec/binary/Base64;
複製代碼

嘗試的解決辦法:

1、Android 9.0 兼容 http 請求,默認只支持 https 請求

更改 AndroidManifest 的 application 標籤下的配置。apache

添加 networkSecurityConfig(網絡安全配置)。api

android:networkSecurityConfig="@xml/network_security_config"
複製代碼

networkSecurityConfig 配置

network_security_config 文件內容以下:安全

<?xml version="1.0" encoding="utf-8"?>
<network-security-config xmlns:tools="http://schemas.android.com/tools">
  <base-config cleartextTrafficPermitted="true"/>
</network-security-config>
複製代碼

其餘標籤屬性參考:網絡安全性配置bash

兼容後,再次嘗試,依然是報錯。網絡

2、 參考 github 上 aliyun-oss-android-sdk 的相關 issue 解決方案。

  1. 更改 OSS 上傳路徑爲 https,無效的方案
  2. 根據在 Android P 中容許明文連接配置,無效的方案

最終的解決方案。

  1. 開啓 Android 9.0 兼容 http 的請求
  2. 將本地的 oss 的 sdk 版本升級到 2.9.0 以上,api 'com.aliyun.dpa:oss-android-sdk:+',如今最新版爲 2.9.2。
  3. 將 oss 的地址改回 http 鏈接,http://oss-cn-hangzhou.aliyuncs.com

再次嘗試成功。app

這個錯誤耗費了我幾乎一下午的時間,在此記錄一下,以防遺忘。

相關文章
相關標籤/搜索