Skip to content

Commit e134890

Browse files
authored
Merge pull request #463 from YangSen-qn/develop
support android 4
2 parents ad0f8c1 + 59bee19 commit e134890

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

65 files changed

+586
-348
lines changed

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,9 @@
11
#Changelog
2+
## 8.3.1(2021-06-30)
3+
* 支持 API level 14 (注意调整 okhttp 至 3.12.+)
4+
* 支持 okhttp 4.9
5+
* 解决偶现并发异常
6+
27
## 8.3.0(2021-05-12)
38
* 支持资源通过 Uri 和 InputStream 方式上传
49

README.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@ https://github.com/qiniudemo/qiniu-lab-android
1515

1616
| Qiniu SDK 版本 | 最低 Android版本 | 依赖库版本 |
1717
|------------ |-----------------|------------------------|
18-
| 8.3.x | Android 5.0+ | okhttp 4+ |
18+
| 8.3.1+ | Android 4.0+ | okhttp 4+ |
19+
| 8.3.0 | Android 5.0+ | okhttp 4+ |
1920
| 8.2.x | Android 5.0+ | okhttp 4+ |
2021
| 8.1.x | Android 5.0+ | okhttp 4+ |
2122
| 8.0.x | Android 5.0+ | okhttp 4+ |
@@ -30,7 +31,7 @@ https://github.com/qiniudemo/qiniu-lab-android
3031
| 7.0.7 | Android 2.2+ | android-async-http 1.4.8 |
3132

3233
### 注意
33-
* 推荐使用最新版:8.3.0
34+
* 推荐使用最新版:8.3.1
3435
* AndroidNetwork.getMobileDbm()可以获取手机信号强度,需要如下权限(API>=18时生效)
3536
```
3637
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
#Wed Dec 23 14:42:43 CST 2020
1+
#Mon Jun 28 14:50:04 CST 2021
22
distributionBase=GRADLE_USER_HOME
33
distributionPath=wrapper/dists
44
zipStoreBase=GRADLE_USER_HOME
55
zipStorePath=wrapper/dists
6-
distributionUrl=https\://services.gradle.org/distributions/gradle-6.3-bin.zip
6+
distributionUrl=https\://services.gradle.org/distributions/gradle-6.3-all.zip

library/build.gradle

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ android {
2424
buildToolsVersion '29.0.2'
2525
defaultConfig {
2626
//applicationId "com.qiniu.android"
27-
minSdkVersion 19
27+
minSdkVersion 14
2828
targetSdkVersion 26
2929
versionCode code
3030
versionName version
@@ -52,7 +52,8 @@ android {
5252

5353
dependencies {
5454
implementation 'com.squareup.okhttp3:okhttp:4.2.2'
55-
// implementation 'com.squareup.okhttp3:okhttp:3.12.1'
55+
56+
// implementation 'com.squareup.okhttp3:okhttp:3.12.+'
5657
implementation 'com.qiniu:happy-dns:0.2.18'
5758
// for javax.annotation.Nullable use in custom MultipartBody and Headers implements.
5859
// implementation 'com.google.code.findbugs:jsr305:3.0.2'

library/src/androidTest/java/com/qiniu/android/BaseTest.java

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
package com.qiniu.android;
22

3-
import com.qiniu.android.utils.LogUtil;
3+
import android.test.AndroidTestCase;
44

5-
import junit.framework.TestCase;
5+
import com.qiniu.android.utils.LogUtil;
66

77
import java.util.Date;
88
import java.util.concurrent.CountDownLatch;
@@ -11,7 +11,7 @@
1111
/**
1212
* Created by yangsen on 2020/5/26
1313
*/
14-
public class BaseTest extends TestCase {
14+
public class BaseTest extends AndroidTestCase {
1515

1616
@Override
1717
protected void setUp() throws Exception {
@@ -20,18 +20,19 @@ protected void setUp() throws Exception {
2020
}
2121

2222
private long maxWaitTimestamp = 0;
23+
2324
/**
2425
* waitCondition: 等待条件
2526
* maxWaitTime: 等待最大时长 单位-秒
2627
*/
27-
public void wait(WaitConditional waitConditional, float maxWaitTime){
28+
public void wait(WaitConditional waitConditional, float maxWaitTime) {
2829

2930
WaitConditional waitConditionalP = waitConditional;
30-
if (waitConditionalP == null){
31+
if (waitConditionalP == null) {
3132
waitConditionalP = new WaitCondition();
3233
}
3334

34-
this.maxWaitTimestamp = new Date().getTime() + (long)(maxWaitTime * 1000);
35+
this.maxWaitTimestamp = new Date().getTime() + (long) (maxWaitTime * 1000);
3536
while (waitConditionalP.shouldWait()) {
3637
long currentTimestamp = new Date().getTime();
3738
if (currentTimestamp > maxWaitTimestamp) {
@@ -53,13 +54,16 @@ public interface WaitConditional {
5354

5455
public static class WaitCondition implements WaitConditional {
5556
public boolean shouldWait = true;
56-
public boolean shouldWait(){
57+
58+
public boolean shouldWait() {
5759
return shouldWait;
58-
};
60+
}
61+
62+
;
5963
}
6064

6165

62-
private void notestWait(){
66+
private void notestWait() {
6367

6468
long waitTime = 5;
6569

@@ -71,6 +75,6 @@ private void notestWait(){
7175

7276
long endTimestamp = new Date().getTime();
7377

74-
assertTrue(((startTimestamp + waitTime*1000) < endTimestamp));
78+
assertTrue(((startTimestamp + waitTime * 1000) < endTimestamp));
7579
}
7680
}

library/src/androidTest/java/com/qiniu/android/BigDataConfigurationTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
public class BigDataConfigurationTest extends AndroidTestCase {
88

9-
public void testCopy(){
9+
public void testCopy() {
1010
Configuration configuration = new Configuration();
1111
configuration.connectTimeout = 15;
1212

@@ -15,7 +15,7 @@ public void testCopy(){
1515
assertTrue(configurationCopy.connectTimeout == configuration.connectTimeout);
1616
}
1717

18-
public void testCopyNoValue(){
18+
public void testCopyNoValue() {
1919
Configuration configuration = null;
2020

2121
Configuration configurationCopy = Configuration.copy(configuration);

library/src/androidTest/java/com/qiniu/android/ClientTest.java

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,27 +4,22 @@
44
import com.qiniu.android.bigdata.client.CompletionHandler;
55
import com.qiniu.android.bigdata.client.PostArgs;
66
import com.qiniu.android.http.ResponseInfo;
7-
import com.qiniu.android.http.request.httpclient.MultipartBody;
87
import com.qiniu.android.storage.UpToken;
98
import com.qiniu.android.utils.StringMap;
109

1110
import org.json.JSONObject;
1211

13-
import java.util.HashMap;
14-
15-
import okhttp3.MediaType;
16-
1712
public class ClientTest extends BaseTest {
1813

19-
public void testSyncGet(){
14+
public void testSyncGet() {
2015

2116
Client client = new Client(null, 90, 90, null, null);
2217
ResponseInfo responseInfo = client.syncGet("https://up.qiniup.com/crossdomain.xml", null);
2318
assertTrue(responseInfo != null);
2419
assertTrue(responseInfo.statusCode == 200);
2520
}
2621

27-
public void testAsyncGet(){
22+
public void testAsyncGet() {
2823

2924
final WaitCondition waitCondition = new WaitCondition();
3025
Client client = new Client();
@@ -41,7 +36,7 @@ public void complete(ResponseInfo info, JSONObject response) {
4136
wait(waitCondition, 10 * 60);
4237
}
4338

44-
public void testMultipartSyncPost(){
39+
public void testMultipartSyncPost() {
4540

4641
PostArgs postArgs = new PostArgs();
4742
postArgs.data = "123".getBytes();
@@ -57,7 +52,7 @@ public void testMultipartSyncPost(){
5752
assertTrue(responseInfo != null);
5853
}
5954

60-
public void testMultipartAsyncPost(){
55+
public void testMultipartAsyncPost() {
6156

6257
final WaitCondition waitCondition = new WaitCondition();
6358

library/src/androidTest/java/com/qiniu/android/ComplexUploadSceneTest.java

Lines changed: 11 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,22 @@
11
package com.qiniu.android;
22

3-
import android.test.AndroidTestCase;
43
import android.util.Log;
54

6-
import com.qiniu.android.common.Config;
75
import com.qiniu.android.http.ResponseInfo;
86
import com.qiniu.android.storage.Configuration;
97
import com.qiniu.android.storage.UpCompletionHandler;
10-
import com.qiniu.android.storage.UploadManager;
11-
12-
import junit.framework.Assert;
138

149
import org.json.JSONObject;
1510

1611
import java.io.File;
1712
import java.io.IOException;
1813
import java.util.concurrent.CountDownLatch;
19-
import java.util.concurrent.TimeUnit;
2014

2115
public class ComplexUploadSceneTest extends UploadBaseTest {
2216

2317
private final CountDownLatch signal = new CountDownLatch(1);
2418

25-
public void testMutiUploadV1(){
19+
public void testMutiUploadV1() {
2620

2721
final int maxCount = 40;
2822

@@ -36,7 +30,7 @@ public void testMutiUploadV1(){
3630
.resumeUploadVersion(Configuration.RESUME_UPLOAD_VERSION_V1)
3731
.useConcurrentResumeUpload(true)
3832
.concurrentTaskCount(3)
39-
.chunkSize((i%4 + 1) * 1024 * 1024 + i)
33+
.chunkSize((i % 4 + 1) * 1024 * 1024 + i)
4034
.build();
4135

4236
int size = (i + 1) * 1024;
@@ -53,12 +47,12 @@ public void testMutiUploadV1(){
5347
upload(info, keyUp, config, null, new UpCompletionHandler() {
5448
@Override
5549
public void complete(String key, ResponseInfo info, JSONObject response) {
56-
synchronized (param){
50+
synchronized (param) {
5751
param.completeCount += 1;
58-
if (info != null && info.isOK()){
52+
if (info != null && info.isOK()) {
5953
param.successCount += 1;
6054
}
61-
if (param.completeCount == (maxCount - start)){
55+
if (param.completeCount == (maxCount - start)) {
6256
signal.countDown();
6357
}
6458
}
@@ -76,7 +70,7 @@ public void complete(String key, ResponseInfo info, JSONObject response) {
7670
assertTrue("success count" + param.successCount, param.successCount == param.completeCount);
7771
}
7872

79-
public void testMutiUploadV2(){
73+
public void testMutiUploadV2() {
8074

8175
final int maxCount = 40;
8276

@@ -90,7 +84,7 @@ public void testMutiUploadV2(){
9084
.resumeUploadVersion(Configuration.RESUME_UPLOAD_VERSION_V2)
9185
.useConcurrentResumeUpload(true)
9286
.concurrentTaskCount(3)
93-
.chunkSize((i%4 + 1) * 1024 * 1024 + i)
87+
.chunkSize((i % 4 + 1) * 1024 * 1024 + i)
9488
.build();
9589

9690
int size = (i + 1) * 1024;
@@ -107,12 +101,12 @@ public void testMutiUploadV2(){
107101
upload(info, keyUp, config, null, new UpCompletionHandler() {
108102
@Override
109103
public void complete(String key, ResponseInfo info, JSONObject response) {
110-
synchronized (param){
104+
synchronized (param) {
111105
param.completeCount += 1;
112-
if (info != null && (info.isOK() || info.statusCode == 614)){
106+
if (info != null && (info.isOK() || info.statusCode == 614)) {
113107
param.successCount += 1;
114108
}
115-
if (param.completeCount == (maxCount - start)){
109+
if (param.completeCount == (maxCount - start)) {
116110
signal.countDown();
117111
}
118112
}
@@ -131,7 +125,7 @@ public void complete(String key, ResponseInfo info, JSONObject response) {
131125
}
132126

133127

134-
private class TestParam{
128+
private class TestParam {
135129
int successCount = 0;
136130
int completeCount = 0;
137131
}

library/src/androidTest/java/com/qiniu/android/ConcurrentResumeUploadTest.java

Lines changed: 1 addition & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,12 @@
11
package com.qiniu.android;
22

3-
import android.test.suitebuilder.annotation.LargeTest;
4-
5-
import com.qiniu.android.common.AutoZone;
6-
import com.qiniu.android.common.FixedZone;
7-
import com.qiniu.android.common.Zone;
83
import com.qiniu.android.http.ResponseInfo;
94
import com.qiniu.android.storage.Configuration;
10-
import com.qiniu.android.storage.UpCompletionHandler;
11-
import com.qiniu.android.storage.UpProgressHandler;
12-
import com.qiniu.android.storage.UploadManager;
13-
import com.qiniu.android.storage.UploadOptions;
14-
import com.qiniu.android.utils.AsyncRun;
15-
import com.qiniu.android.utils.Etag;
16-
import com.qiniu.android.utils.LogUtil;
17-
18-
import org.json.JSONObject;
195

206
import java.io.File;
217
import java.io.IOException;
228
import java.util.Date;
23-
import java.util.Iterator;
24-
import java.util.LinkedList;
25-
import java.util.Queue;
9+
2610

2711
/**
2812
* Created by yangsen on 2020/5/27

library/src/androidTest/java/com/qiniu/android/DnsApiTest.java

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,6 @@
77
import com.qiniu.android.http.dns.IDnsNetworkAddress;
88
import com.qiniu.android.storage.UpToken;
99

10-
import android.util.Log;
11-
import com.qiniu.android.storage.Recorder;
12-
import com.qiniu.android.utils.StringUtils;
13-
import java.net.InetAddress;
14-
import java.net.UnknownHostException;
15-
import java.util.ArrayList;
16-
1710
import java.util.List;
1811

1912
/**
@@ -28,7 +21,7 @@ protected void setUp() throws Exception {
2821

2922
public void testLocalLoad() {
3023

31-
final String host = "upload.qiniup.com";
24+
final String host = "uc.qbox.me";
3225
final DnsPrefetcher dnsPrefetcher = DnsPrefetcher.getInstance();
3326
dnsPrefetcher.localFetch();
3427

0 commit comments

Comments
 (0)