クライアント側のネットワークは正常なのに、HTTPでのCOSアクセスが非常に遅かったり、Connection resetのエラーが発生したりします。どのように対処すればよいですか。
一部の地域ではキャリアがCOSのドメイン名をハイジャックする可能性がありますので、COSへのアクセスはできる限りHTTPSで行ってください。
マルチパートアップロード完了インターフェースを呼び出した際にetag情報が含まれておらず、400 BadRequestのエラーが発生しましたが、どのように対処すればよいですか。
存在するネットワークがEtagのヘッダーをフィルタリングし、SDKがパートをアップロードした後に対応するパラメータを解析できず、SDKがマルチパートアップロードを終了した時点でエラーが発生した可能性があります。
QCloudResultListenerまたはその他のコールバック関数がコールバックされないのですが、どのように対処すればよいですか。
ログによってコールバックがなかったことを確認したのであれば、ログ出力時のフィルタリングレベルが高すぎるか、またはその他のフィルタリング方法でログがフィルタリングされた可能性があります。フィルタリングルールを調整するか、またはコールバック関数の中に中断点を設定する方法でコールバックの状況を判断することができます。
インターフェースを呼び出した際にNoClassDefFoundErrorというエラーが発生しましたが、どのように対処すればよいですか。
SDKはboltsとokHttpという2つの一般的なクラスに依存しています。これらのクラスが見つからない場合は、ご自身のプロジェクトにもこれらの依存関係がインポートされている可能性があります。ただしバージョンが低いため、できる限りSDKのものと同一のバージョンまたはそれより上のバージョンを使用してください。
SDKのスマートフォンでの権限取得の問題にはどのように対処すればよいですか。
外部のストレージでファイルをアップロードまたはダウンロードする必要がある場合は、ネットワークおよび外部ストレージの読み取り/書き込み権限を取得する必要があります。位置情報の権限、デバイス情報の権限などのその他の権限は必須の権限ではありません。権限の問題に敏感な場合は、MtaUtilsパッケージをインポートしないか、または5.5.8かそれ以上のバージョンにアップグレードすることができます。
HTTPSを使用するとjava.security.cert.CertPathValidatorException: Trust anchor for certification path not foundというエラーが発生しましたが、どのように対処すればよいですか。
プロキシ方式でCOSにアクセスしている場合は、まずプロキシがHTTPSをサポートしているかどうかをチェックしてください。該当しない場合は、お問い合わせください。 アップロードの進捗が100%となりましたが、最終的にonFailedインターフェースがコールバックされました。どのように対処すればよいですか。
アップロードの進捗はSDKがネットワークに書き込む際の進捗状況のみを表しており、100%はアップロードが完了したという意味ではありません。onSuccessインターフェースがコールバックされなければ、アップロードは実際には成功していません。最後にComplete Multipart Uploadリクエストを送信する際に異常が発生した場合は、onFailedインターフェースがコールバックされます。
マルチパートアップロードを使用すると、400 BadRequest、409 Conflictなどのエラーが発生しましたが、どのように対処すればよいですか。
できる限り、SDKが提供する高度なインターフェースTransferManagerを使用してアップロードとダウンロードを行ってください。ご自身でマルチパートアップロードのインターフェースをパッケージ化するとエラーが発生しやすいのでおやめください。
TransferManagerでのアップロードとダウンロードが権限の問題でエラーとなりましたが、どのように対処すればよいですか。
TransferManagerはファイルをダウンロードする際に先にHead操作を行います。このため、HeadObjectとGetObjectという2つの権限が同時に承認されている必要があります。アップロードの際は、シンプルなアップロードとマルチパートアップロードの全インターフェースの権限が必要です。
インターフェースを呼び出す際、lock timeoutまたはno credential for signのエラーや、署名が期限切れであるというエラーが発生しましたが、どのように対処すればよいですか。
ご自身でBasicLifecycleCredentialProvider#fetchNewCredentials()メソッドを実現している場合は、キーが適時に更新されているか、あるいはキーが有効かどうかをここで判断してください。一時キーの場合はtokenが必要です。
アップロード時にjava.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()というエラーが発生しましたが、どのように対処すればよいですか。
メインスレッドでTransferManager#upload()メソッドを呼び出してアップロードを行う際にこのエラーが発生した場合、これはmtaアップロードイベントが誤って表示されたもので、使用への影響はありません。また、5.5.8かそれ以上のバージョンにアップグレードすることで解決することもできます。
コールバック中にuiを直接操作するとエラーが発生しましたが、どのように対処すればよいですか。
sdkコールバックスレッドは必ずしもメインスレッドとは限りません。uiを直接操作しないでください。
アップロードの際にcalculate md5 errorというエラーが発生しましたが、どのように対処すればよいですか。
アップロードの過程でファイルを変更したことで、ファイルのMD5の値に変化が生じたか、またはネットワーク品質が低いためにサーバー側のパケット受信時にエラーが発生した可能性があります。
リクエストに対しServerErrorエラーが返されましたが、どのように対処すればよいですか。
プロキシでCOSにアクセスしているが、プロキシがうまく転送を行えず、不正確なリターンパケットをそのまま返すことにより、SDKの解析がエラーとなった可能性があります。パケットをキャプチャし、クライアントが受信したリターンパケットが正常かどうかを確認することができます。
インターフェースを呼び出すと403権限エラーが発生しましたが、どのように対処すればよいですか。
権限の問題は一般的にSDKの問題ではありません。ご自身の権限情報をご確認ください。お問い合わせをいただくことも可能です。 Android SDKは中断からの再開をサポートしていますか。
COSのAndroid SDKの高度なインターフェースは中断からの再開をサポートしています。オブジェクトのアップロードとコピードキュメントの高度なインターフェースの実現をご参照ください。