# android-sdk **Repository Path**: mirrors_qiniu/android-sdk ## Basic Information - **Project Name**: android-sdk - **Description**: Qiniu Resource (Cloud) Storage SDK for Android - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-08-18 - **Last Updated**: 2025-12-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Qiniu Resource Storage SDK for Android [![@qiniu on weibo](http://img.shields.io/badge/weibo-%40qiniutek-blue.svg)](http://weibo.com/qiniutek) [![Software License](https://img.shields.io/badge/license-MIT-brightgreen.svg)](LICENSE.md) [![Build Status](https://github.com/qiniu/android-sdk/workflows/Run%20Test%20Cases/badge.svg)](https://github.com/qiniu/android-sdk/actions) [![codecov](https://codecov.io/gh/qiniu/android-sdk/branch/master/graph/badge.svg)](https://codecov.io/gh/qiniu/android-sdk) [![Latest Stable Version](http://img.shields.io/maven-central/v/com.qiniu/qiniu-android-sdk.svg)](https://search.maven.org/search?q=a:qiniu-android-sdk) ## 演示代码 https://github.com/qiniudemo/qiniu-lab-android ## 安装 ### 运行环境 | Qiniu SDK 版本 | 最低 Android版本 | 依赖库版本 | |--------------|-----------------|------------------------| | 8.9.x | Android 4.0+ | okhttp 4+ | | 8.8.x | Android 4.0+ | okhttp 4+ | | 8.7.x | Android 4.0+ | okhttp 4+ | | 8.6.x | Android 4.0+ | okhttp 4+ | | 8.5.x | Android 4.0+ | okhttp 4+ | | 8.4.x | Android 4.0+ | okhttp 4+ | | 8.3.2 | Android 4.0+ | okhttp 4+ | | 8.3.1 | Android 4.0+ | okhttp 4+ | | 8.3.0 | Android 5.0+ | okhttp 4+ | | 8.2.x | Android 5.0+ | okhttp 4+ | | 8.1.x | Android 5.0+ | okhttp 4+ | | 8.0.x | Android 5.0+ | okhttp 4+ | | 7.7.x | Android 5.0+ | okhttp 4+ | | 7.6.x | Android 5.0+ | okhttp 4+ | | 7.5.x | Android 5.0+ | okhttp 4+ | | 7.4.6 | Android 4.0+ | okhttp 3.12.6 | | 7.3.x | Android 2.3+ | okhttp 3.11.0 | | 7.2.x | Android 2.3+ | okhttp 3+ | | 7.1.x | Android 2.3+ | okhttp 2.6+ | | 7.0.8,7.0.9 | Android 2.2+ | android-async-http 1.4.9 | | 7.0.7 | Android 2.2+ | android-async-http 1.4.8 | ### 注意 * 推荐使用最新版:8.9.2 * 7.6.2 ~ 8.3.2 AndroidNetwork.getMobileDbm()可以获取手机信号强度,需要如下权限(API>=18时生效) ``` ``` * 从7.5.0开始增加了DNS预取和缓存策略,减少dns解析错误 * 如果可以明确 区域 的话,最好指定固定区域,这样可以少一步网络请求,少一步出错的可能。 * 如果使用 Android 4.x ,对应 okhttp 版本请调整至 3.12.+ ### 直接安装 将sdk jar文件 复制到项目中去,[jar包下载地址](http://search.maven.org/#search%7Cga%7C1%7Ccom%2Fqiniu%2Fqiniu-android-sdk) , 下载对应的jar包,以及搜索下载对应的依赖库 [happy-dns下载地址](https://repo1.maven.org/maven2/com/qiniu/happy-dns/) ### 通过maven * Android Studio中添加dependencies 或者 在项目中添加maven依赖 ``` // 1. 直接导入 implementation 'com.qiniu:qiniu-android-sdk:8.9.+' // 2. 如果要修改okhttp依赖的版本,可采用以下方式(强烈建议使用七牛库依赖的okhttp版本) implementation ('com.qiniu:qiniu-android-sdk:8.9.+'){ exclude (group: 'com.squareup.okhttp3', module: 'okhttp') } implementation 'com.squareup.okhttp3:okhttp:4.9.1' ``` * 如果是eclipse, 也可以直接添加依赖来处理。 ## 使用方法 UploadManager 可以创建一次,一直使用。 7.6.2 ~ 8.3.2 会调用AndroidNetwork.getMobileDbm可以获取网络信号强度 需要Manifest.permission.ACCESS_FINE_LOCATION和Manifest.permission.ACCESS_COARSE_LOCATION权限 ```java import com.qiniu.android.storage.UploadManager; ... String token = "从服务端SDK获取"; UploadManager uploadManager = new UploadManager(); uploadManager.put("Hello, World!".getBytes(), "hello", token, new UpCompletionHandler() { @Override public void complete(String key, ResponseInfo info, JSONObject response) { LogUtil.i(info); } }, null); ... ``` ### 支持使用 HTTP/3 协议发起请求 导入 [HTTP/3 client 插件](https://github.com/qiniu/qiniu-android-curl-plugin),http3 client 插件依赖于 Android SDK v8.5.0及以上版本 安装导入 ```java // 移除 qiniu-android-sdk 依赖 : implementation 'com.qiniu:qiniu-android-sdk:x.x.+' implementation 'com.qiniu:qiniu-android-curl-plugin:1.0.0' ``` 使用 CurlClient ```java import com.qiniu.client.curl.CurlClient; import com.qiniu.android.storage.Configuration; import com.qiniu.android.storage.UploadManager; // @param caPath: SSL 证书本地路径;如果想自定义 CA 可设置此选项,此处为 CA 文件的本地路径。 // 如果未定义(caPath 配置 null)则使用 SDK 内部提供的 CA 证书,证书来源:https://curl.se/ca/cacert.pem CurlClient client = new CurlClient(caPath); Configuration config = new Configuration.Builder() .requestClient(client) .build(); UploadManager manager = new UploadManager(config); ``` ## 测试 ``` bash $ ./gradlew connectedAndroidTest ``` ## 常见问题 1).有关Android Studio以及Eclipse安装运行Android Demo步骤,这里以Android Studio为实例: 1.修改 build.gradle 双击打开您的工程目录下的build.gradle,在dependencies中添加一条依赖compile 'com.qiniu:qiniu-android-sdk:7.2.+',如下所示: ``` dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:23.1.1' compile 'com.qiniu:qiniu-android-sdk:7.6.+' } ``` 当然也可以将jar包下载到本地导入到项目中 2.添加相关权限,在 app/src/main 目录中的 AndroidManifest.xml 中增加如下 uses-permission 声明 ``` ``` 3.布局,在res/layout/activity_main.xml添加相应的上传的按钮以及相关控件,以下以一个简单的布局为例: ```