From a4f7fa9485f3ca95f2e44cb81b9508a2fd32a3d1 Mon Sep 17 00:00:00 2001 From: Andy Scherzinger Date: Sun, 14 Aug 2016 23:20:39 +0200 Subject: [PATCH 01/13] bump to v24 incl. toolchain, jdk8 etc. --- .travis.yml | 10 ++++---- AndroidManifest.xml | 2 +- README.md | 23 +++++++++++-------- build.gradle | 4 ++-- project.properties | 2 +- sample_client/AndroidManifest.xml | 2 +- sample_client/build.gradle | 9 ++------ sample_client/project.properties | 2 +- .../shares/UpdateRemoteShareOperation.java | 9 ++++---- test_client/AndroidManifest.xml | 2 +- test_client/build.gradle | 9 ++------ test_client/project.properties | 2 +- test_client/res/values/strings.xml | 2 +- test_client/tests/project.properties | 2 +- test_client/tests/res/values/strings.xml | 2 +- 15 files changed, 39 insertions(+), 43 deletions(-) diff --git a/.travis.yml b/.travis.yml index 1755dff616..ee998afae2 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,12 +1,14 @@ sudo: false language: android +jdk: + - oraclejdk8 android: components: - platform-tools - tools - - build-tools-23.0.3 - - android-23 - - sys-img-armeabi-v7a-android-23 + - build-tools-24.0.0 + - android-24 + - sys-img-armeabi-v7a-android-24 branches: only: - master @@ -37,7 +39,7 @@ env: # - secure: ezKyZbb3q1Phcv/vJntuJe0C2req+Hp4/C+tFZIWZ3o8wRO9jVI3bnED9TWQyQOOT0SoRYjJ5zqp0UcEOGCzPeWFO6bA7RWp+zA/R9sziLNcVWMVv3WXnuClQjPBHJeXRnP7YmNjxDmSfV97a14dk5d9LgJZYliTDepH4dLsxro= # - secure: HV8REF7bB1i6cBEe4YCZvjgTf6tGiptAPzp9qZXGUH9Lxh6yUjYMXXP8flDaIFcE2JuAakW6P4SPr7/SQ+X4f8/84cNhmU1I+6Y1nG37WvelRHQVslOUDbl1TNUnynYZ+ybkb3BtrQvggCGMdQKvGZXYiggFhN/TWuDo0c7Q2Ro= matrix: - - ANDROID_TARGET=android-23 ANDROID_ABI=armeabi-v7a + - ANDROID_TARGET=android-24 ANDROID_ABI=armeabi-v7a #addons: # coverity_scan: # project: diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 29d9f65000..1ed7ca2d60 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -30,7 +30,7 @@ + android:targetSdkVersion="24" /> diff --git a/README.md b/README.md index 5eabd3df1f..5722f549ed 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ Using Nextcloud Android library it will be the easiest way to communicate with N Add this library in your project and integrate your application with Nextcloud seamlessly. ## Use Library -In the repository it is not only the library project but also the example project “sample_client”; +In the repository it is not only the library project but also the example project "sample_client"; thanks to it you will learn how to use the library. *There are different ways of adding this library to your code* @@ -37,14 +37,19 @@ The repository holds one main branch with an infinite lifetime: Branch __origin/master__ is considered the main branch where the source code of HEAD always reflects a state with the latest delivered development changes for the next release. -Other branches, some supporting branches are used to aid parallel development between team members, ease tracking of features, prepare for production releases and to assist in quickly fixing live production problems. Unlike the main branches, these branches always have a limited life time, since they will be removed eventually. +Other branches, some supporting branches are used to aid parallel development between team members, ease tracking of features and to assist in quickly fixing live production problems. Unlike the main branch, these branches always have a limited life time, since they will be removed eventually (feature branching). -The different types of branches we use: +## Development process +We are all about quality while not sacrificing speed so we use a very pragmatic workflow. -- Branch __perNewFeature__ -- Branch __releaseBranches__ - -Both of them branch off from master and must merge back into master branch through a [pull requests](https://github.com/nextcloud/android-library/pulls) in Github. Once the PR is approved and merged, the branch may be deleted. +* create an issue with feature request + * discuss it with other developers + * create mockup if necessary + * must be approved --> label approved + * after that no conceptual changes! +* develop code +* create [pull request](https://github.com/nextcloud/android-library/pulls) +* to assure the quality of the app, any PR gets reviewed, approved and tested by [two developers](https://github.com/nextcloud/android-library/blob/master/MAINTAINERS) before it will be merged to master ## License @@ -65,6 +70,6 @@ Licensed under Apache License, Version 2.0. ## Compatibility -Nextcloud Android library is valid for Android version 3.0 and up (android:minSdkVersion="11" android:targetSdkVersion="23"). +Nextcloud Android library is valid for Android version 3.0 and up (with ```android:minSdkVersion="11"``` and ```android:targetSdkVersion="24"```). -Nextcloud Android library supports Nextcloud server from version 9. +Nextcloud Android library supports Nextcloud server from version 9+. diff --git a/build.gradle b/build.gradle index 780ded286c..3331dab2b8 100644 --- a/build.gradle +++ b/build.gradle @@ -22,8 +22,8 @@ dependencies { } android { - compileSdkVersion 23 - buildToolsVersion "23.0.3" + compileSdkVersion 24 + buildToolsVersion "24.0.0" sourceSets { main { diff --git a/project.properties b/project.properties index b2ef7dccc5..34c8d58b38 100644 --- a/project.properties +++ b/project.properties @@ -11,5 +11,5 @@ #proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt # Project target. -target=android-23 +target=android-24 android.library=true diff --git a/sample_client/AndroidManifest.xml b/sample_client/AndroidManifest.xml index 358405b614..47734a4c12 100644 --- a/sample_client/AndroidManifest.xml +++ b/sample_client/AndroidManifest.xml @@ -30,7 +30,7 @@ + android:targetSdkVersion="24" /> * Allow updating several parameters, triggering a request to the server per parameter. */ - public class UpdateRemoteShareOperation extends RemoteOperation { private static final String TAG = GetRemoteShareOperation.class.getSimpleName(); @@ -159,7 +158,7 @@ protected RemoteOperationResult run(OwnCloudClient client) { } if (mExpirationDateInMillis < 0) { // clear expiration date - parametersToUpdate.add(new Pair(PARAM_EXPIRATION_DATE, "")); + parametersToUpdate.add(new Pair<>(PARAM_EXPIRATION_DATE, "")); } else if (mExpirationDateInMillis > 0) { // set expiration date @@ -167,16 +166,16 @@ protected RemoteOperationResult run(OwnCloudClient client) { Calendar expirationDate = Calendar.getInstance(); expirationDate.setTimeInMillis(mExpirationDateInMillis); String formattedExpirationDate = dateFormat.format(expirationDate.getTime()); - parametersToUpdate.add(new Pair(PARAM_EXPIRATION_DATE, formattedExpirationDate)); + parametersToUpdate.add(new Pair<>(PARAM_EXPIRATION_DATE, formattedExpirationDate)); } // else, ignore - no update if (mPermissions > 0) { // set permissions - parametersToUpdate.add(new Pair(PARAM_PERMISSIONS, Integer.toString(mPermissions))); + parametersToUpdate.add(new Pair<>(PARAM_PERMISSIONS, Integer.toString(mPermissions))); } if (mPublicUpload != null) { - parametersToUpdate.add(new Pair(PARAM_PUBLIC_UPLOAD, Boolean.toString(mPublicUpload))); + parametersToUpdate.add(new Pair<>(PARAM_PUBLIC_UPLOAD, Boolean.toString(mPublicUpload))); } /// perform required PUT requests diff --git a/test_client/AndroidManifest.xml b/test_client/AndroidManifest.xml index 20b76ef1f5..d3b74d523d 100644 --- a/test_client/AndroidManifest.xml +++ b/test_client/AndroidManifest.xml @@ -39,7 +39,7 @@ + android:targetSdkVersion="24" /> - oc_framework-test-project + Nc_framework-test-project Settings Hello world! The test account %1$s could not be found in the device diff --git a/test_client/tests/project.properties b/test_client/tests/project.properties index 916037e334..7ce68660c4 100644 --- a/test_client/tests/project.properties +++ b/test_client/tests/project.properties @@ -11,4 +11,4 @@ #proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt # Project target. -target=android-23 +target=android-24 diff --git a/test_client/tests/res/values/strings.xml b/test_client/tests/res/values/strings.xml index 66f25f1eec..dd37217303 100644 --- a/test_client/tests/res/values/strings.xml +++ b/test_client/tests/res/values/strings.xml @@ -25,6 +25,6 @@ - Oc_framework-testTest + Nc_framework-testTest From 1dc0e04a5ebb4fc3bb682a0f4deee68e9dd53d4b Mon Sep 17 00:00:00 2001 From: Andy Scherzinger Date: Wed, 17 Aug 2016 18:51:40 +0200 Subject: [PATCH 02/13] build tools 24.0.1, webdav update --- README.md | 2 +- build.gradle | 4 ++-- ....10.1.jar => jackrabbit-webdav-2.12.2.jar} | Bin 330116 -> 330358 bytes sample_client/build.gradle | 2 +- test_client/build.gradle | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) rename libs/{jackrabbit-webdav-2.10.1.jar => jackrabbit-webdav-2.12.2.jar} (85%) diff --git a/README.md b/README.md index 5722f549ed..c73158cb47 100644 --- a/README.md +++ b/README.md @@ -57,7 +57,7 @@ Nextcloud Android Library is available under MIT license. See [LICENSE.md](https ### Third party libraries ``` -Nextcloud Android Library uses Apache JackRabbit, version 2.2.5. +Nextcloud Android Library uses Apache JackRabbit, version 2.12.2. Copyright (C) 2004-2010 The Apache Software Foundation. Licensed under Apache License, Version 2.0. ``` diff --git a/build.gradle b/build.gradle index 3331dab2b8..be4c8e9715 100644 --- a/build.gradle +++ b/build.gradle @@ -18,12 +18,12 @@ repositories { } dependencies { - compile 'org.apache.jackrabbit:jackrabbit-webdav:2.10.1' + compile 'org.apache.jackrabbit:jackrabbit-webdav:2.12.2' } android { compileSdkVersion 24 - buildToolsVersion "24.0.0" + buildToolsVersion "24.0.1" sourceSets { main { diff --git a/libs/jackrabbit-webdav-2.10.1.jar b/libs/jackrabbit-webdav-2.12.2.jar similarity index 85% rename from libs/jackrabbit-webdav-2.10.1.jar rename to libs/jackrabbit-webdav-2.12.2.jar index 068346888dbef204bd1af1ffe573a12091c235b6..1be8d51a49053462b559a64f1500651eba8d516d 100644 GIT binary patch delta 18281 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 delta 17816 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 diff --git a/sample_client/build.gradle b/sample_client/build.gradle index aca0239cdb..2cbc078390 100644 --- a/sample_client/build.gradle +++ b/sample_client/build.gradle @@ -10,7 +10,7 @@ dependencies { android { compileSdkVersion 24 - buildToolsVersion "24.0.0" + buildToolsVersion "24.0.1" sourceSets { main { diff --git a/test_client/build.gradle b/test_client/build.gradle index b1865d3f9c..714215da73 100644 --- a/test_client/build.gradle +++ b/test_client/build.gradle @@ -21,7 +21,7 @@ dependencies { android { compileSdkVersion 24 - buildToolsVersion "24.0.0" + buildToolsVersion "24.0.1" sourceSets { main { From 08a61e2ceff3df91ea3687e14ad422f7aef54596 Mon Sep 17 00:00:00 2001 From: Andy Scherzinger Date: Wed, 17 Aug 2016 18:52:18 +0200 Subject: [PATCH 03/13] update travis --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index ee998afae2..d1d662b243 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,7 +6,7 @@ android: components: - platform-tools - tools - - build-tools-24.0.0 + - build-tools-24.0.1 - android-24 - sys-img-armeabi-v7a-android-24 branches: From 7dce27586713634f0da7e04d20e32c8928a475fc Mon Sep 17 00:00:00 2001 From: Andy Scherzinger Date: Mon, 29 Aug 2016 18:01:22 +0200 Subject: [PATCH 04/13] bump Android SDK Build-Tools to 24.0.2 --- .travis.yml | 2 +- build.gradle | 2 +- sample_client/build.gradle | 2 +- test_client/build.gradle | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index d1d662b243..f0339d4e98 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,7 +6,7 @@ android: components: - platform-tools - tools - - build-tools-24.0.1 + - build-tools-24.0.2 - android-24 - sys-img-armeabi-v7a-android-24 branches: diff --git a/build.gradle b/build.gradle index be4c8e9715..0d3b41d99e 100644 --- a/build.gradle +++ b/build.gradle @@ -23,7 +23,7 @@ dependencies { android { compileSdkVersion 24 - buildToolsVersion "24.0.1" + buildToolsVersion "24.0.2" sourceSets { main { diff --git a/sample_client/build.gradle b/sample_client/build.gradle index 2cbc078390..b9f636a751 100644 --- a/sample_client/build.gradle +++ b/sample_client/build.gradle @@ -10,7 +10,7 @@ dependencies { android { compileSdkVersion 24 - buildToolsVersion "24.0.1" + buildToolsVersion "24.0.2" sourceSets { main { diff --git a/test_client/build.gradle b/test_client/build.gradle index 714215da73..f313b3ee20 100644 --- a/test_client/build.gradle +++ b/test_client/build.gradle @@ -21,7 +21,7 @@ dependencies { android { compileSdkVersion 24 - buildToolsVersion "24.0.1" + buildToolsVersion "24.0.2" sourceSets { main { From 320c451bea3283c5f3f665daea407008d8bf3898 Mon Sep 17 00:00:00 2001 From: Andy Scherzinger Date: Mon, 26 Sep 2016 16:20:41 +0200 Subject: [PATCH 05/13] move to drone --- .drone.yml | 14 ++++++++++++ .travis.yml | 51 -------------------------------------------- wait_for_emulator.sh | 9 ++++++-- 3 files changed, 21 insertions(+), 53 deletions(-) create mode 100644 .drone.yml delete mode 100644 .travis.yml diff --git a/.drone.yml b/.drone.yml new file mode 100644 index 0000000000..b6a7af3f9d --- /dev/null +++ b/.drone.yml @@ -0,0 +1,14 @@ +pipeline: + test: + image: nextcloudci/android:android-7 + commands: + - echo no | android create avd --force -n test -t $ANDROID_TARGET --abi $ANDROID_ABI -c 20M + - emulator -avd test -no-window & + - ./wait_for_emulator.sh + # build app + - ./gradlew clean build + + environment: + - ANDROID_TARGET=android-24 + - ANDROID_ABI=armeabi-v7a + - LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/:/opt/android-sdk-linux/tools/lib64/gles_mesa/ diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index f0339d4e98..0000000000 --- a/.travis.yml +++ /dev/null @@ -1,51 +0,0 @@ -sudo: false -language: android -jdk: - - oraclejdk8 -android: - components: - - platform-tools - - tools - - build-tools-24.0.2 - - android-24 - - sys-img-armeabi-v7a-android-24 -branches: - only: - - master -before_install: -- echo no | android create avd --force -n test -t $ANDROID_TARGET --abi $ANDROID_ABI - -c 20M -- emulator -avd test -no-skin -no-audio -no-window & -- rm pom.xml -- android update project -p . -- chmod +x ./wait_for_emulator.sh -- ./wait_for_emulator.sh -script: -#- ant clean -#- ant debug -#- cd test_client/tests -#- ant acceptance-test -#- cd ../.. -- ./gradlew clean build -env: - global: - # The next declaration is the encrypted COVERITY_SCAN_TOKEN, created - # via the "travis encrypt" command using the project repo's public key -# - secure: epTZ0zZGDbHL3o6vSC9uNkZsi5j5SA6O/tvQBH7QW/dluuzIJxIjfhNbZHDyBReYDleirLzUFQpdWAUdvulCMLs/qZdIzFGlYXZSpxEnvPYMGQcilwADdJcxLw8L+3+ET5hSexxhjrTGw427IljkqGUpqQTxaLwFdFu98lDWSbc= - # The next 3 declarations are the variables needed to access the test server, - # added via "travis encrypt", using the repo public key -# - secure: gPCBnpGLA2sdSMtfhT+/InThmXNEU8XrrS54uuIP8iXBLvVe0yZrNl76GbMosV0ry3YtDngsmsbHwRjPPb0+3mTTdAqZ60HHzGaNPgEm6b5t0t4bpJ3LW9osLZsuf9jRsI2LD66zxblaMrK2+8hN/dUrj707ijsZHp3SPSQJ6g8= -# - secure: AnxLVarfwM7IhJ7Sca35USyRlFHFvlcBhWTt2TVDcyQ+ldDyb+U6IWXFK0Yy82QP0ZH/RCLu7FnmHK/rKG0BHNRt1Ymco1VkTQql0MZcHXP+4IKgEvgJyUn1TqYj+hSVmM6lgTA+QUjZYGSfwU8mhUFiU7644ZTdTe6ALdqa+v8= -# - secure: ezKyZbb3q1Phcv/vJntuJe0C2req+Hp4/C+tFZIWZ3o8wRO9jVI3bnED9TWQyQOOT0SoRYjJ5zqp0UcEOGCzPeWFO6bA7RWp+zA/R9sziLNcVWMVv3WXnuClQjPBHJeXRnP7YmNjxDmSfV97a14dk5d9LgJZYliTDepH4dLsxro= -# - secure: HV8REF7bB1i6cBEe4YCZvjgTf6tGiptAPzp9qZXGUH9Lxh6yUjYMXXP8flDaIFcE2JuAakW6P4SPr7/SQ+X4f8/84cNhmU1I+6Y1nG37WvelRHQVslOUDbl1TNUnynYZ+ybkb3BtrQvggCGMdQKvGZXYiggFhN/TWuDo0c7Q2Ro= - matrix: - - ANDROID_TARGET=android-24 ANDROID_ABI=armeabi-v7a -#addons: -# coverity_scan: -# project: -# name: nextcloud/android-library -# description: Build submitted via Travis CI -# notification_email: lukas@nextcloud.com -# build_command_prepend: gradle clean -# build_command: gradle build -# branch_pattern: coverity_scan diff --git a/wait_for_emulator.sh b/wait_for_emulator.sh index 7f6443c794..37fa325459 100644 --- a/wait_for_emulator.sh +++ b/wait_for_emulator.sh @@ -1,14 +1,17 @@ #!/bin/bash +# Originally written by Ralf Kistner , but placed in the public domain + bootanim="" failcounter=0 checkcounter=0 + until [[ "$bootanim" =~ "stopped" ]]; do bootanim=`adb -e shell getprop init.svc.bootanim 2>&1` echo "($checkcounter) $bootanim" if [[ "$bootanim" =~ "not found" ]]; then let "failcounter += 1" - if [[ $failcounter -gt 30 ]]; then + if [[ $failcounter -gt 3 ]]; then echo "Failed to start emulator" exit 1 fi @@ -16,4 +19,6 @@ until [[ "$bootanim" =~ "stopped" ]]; do let "checkcounter += 1" sleep 10 done -echo "Done" +echo "($checkcounter) Done" +adb -e shell input keyevent 82 +echo "($checkcounter) Unlocked emulator screen" \ No newline at end of file From 1524ef1cb78cee04f4a5d9b0fef737bde005fff7 Mon Sep 17 00:00:00 2001 From: Andy Scherzinger Date: Mon, 26 Sep 2016 16:51:27 +0200 Subject: [PATCH 06/13] no self approvals + at least one review --- .lgtm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.lgtm b/.lgtm index 59a8a38bf3..3ae801a20f 100644 --- a/.lgtm +++ b/.lgtm @@ -1 +1,3 @@ pattern = "(?i):shipit:|:\\+1:|LGTM" +self_approval_off=true +approvals = 1 From b0948093337071738f0fbae3a430cb4fd5b40707 Mon Sep 17 00:00:00 2001 From: Andy Scherzinger Date: Mon, 26 Sep 2016 16:58:31 +0200 Subject: [PATCH 07/13] fixing execution permission --- wait_for_emulator.sh | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 wait_for_emulator.sh diff --git a/wait_for_emulator.sh b/wait_for_emulator.sh old mode 100644 new mode 100755 From 012d7b83f9a841a50a02adab5466dc55b7d669a2 Mon Sep 17 00:00:00 2001 From: Andy Scherzinger Date: Mon, 26 Sep 2016 17:17:53 +0200 Subject: [PATCH 08/13] latest stable webdav lib --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 0d3b41d99e..a3b8317329 100644 --- a/build.gradle +++ b/build.gradle @@ -18,7 +18,7 @@ repositories { } dependencies { - compile 'org.apache.jackrabbit:jackrabbit-webdav:2.12.2' + compile 'org.apache.jackrabbit:jackrabbit-webdav:2.12.4' } android { From fe94778a42d24bde3e41461d000a14c4d86affe6 Mon Sep 17 00:00:00 2001 From: AndyScherzinger Date: Wed, 5 Oct 2016 00:59:13 +0200 Subject: [PATCH 09/13] update gradle dependency --- build.gradle | 2 +- test_client/build.gradle | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index a3b8317329..33a0fd753c 100644 --- a/build.gradle +++ b/build.gradle @@ -3,7 +3,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:2.1.3' + classpath 'com.android.tools.build:gradle:2.2.0' classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5' } } diff --git a/test_client/build.gradle b/test_client/build.gradle index f313b3ee20..2ea70d21fc 100644 --- a/test_client/build.gradle +++ b/test_client/build.gradle @@ -3,7 +3,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:2.1.3' + classpath 'com.android.tools.build:gradle:2.2.0' } } From 769fbfbde36216fc464171bc98a9b07219c02ff0 Mon Sep 17 00:00:00 2001 From: AndyScherzinger Date: Mon, 24 Oct 2016 19:00:20 +0200 Subject: [PATCH 10/13] bump plugin to 2.2.0 and target to 25 --- AndroidManifest.xml | 2 +- build.gradle | 6 +++--- sample_client/AndroidManifest.xml | 2 +- sample_client/build.gradle | 4 ++-- sample_client/res/values/strings.xml | 2 +- test_client/AndroidManifest.xml | 2 +- test_client/build.gradle | 6 +++--- 7 files changed, 12 insertions(+), 12 deletions(-) diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 1ed7ca2d60..6d3255c583 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -30,7 +30,7 @@ + android:targetSdkVersion="25" /> diff --git a/build.gradle b/build.gradle index 33a0fd753c..1b35d2ab4e 100644 --- a/build.gradle +++ b/build.gradle @@ -3,7 +3,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:2.2.0' + classpath 'com.android.tools.build:gradle:2.2.2' classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5' } } @@ -22,8 +22,8 @@ dependencies { } android { - compileSdkVersion 24 - buildToolsVersion "24.0.2" + compileSdkVersion 25 + buildToolsVersion "25.0.0" sourceSets { main { diff --git a/sample_client/AndroidManifest.xml b/sample_client/AndroidManifest.xml index 47734a4c12..4a79f03807 100644 --- a/sample_client/AndroidManifest.xml +++ b/sample_client/AndroidManifest.xml @@ -30,7 +30,7 @@ + android:targetSdkVersion="25" /> - ownCloud Sample Client + Nextcloud Sample Client Refresh Upload Delete remote file diff --git a/test_client/AndroidManifest.xml b/test_client/AndroidManifest.xml index d3b74d523d..a96c29a20f 100644 --- a/test_client/AndroidManifest.xml +++ b/test_client/AndroidManifest.xml @@ -39,7 +39,7 @@ + android:targetSdkVersion="25" /> Date: Mon, 24 Oct 2016 19:04:35 +0200 Subject: [PATCH 11/13] space --- .drone.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.drone.yml b/.drone.yml index b6a7af3f9d..149651c18d 100644 --- a/.drone.yml +++ b/.drone.yml @@ -5,7 +5,7 @@ pipeline: - echo no | android create avd --force -n test -t $ANDROID_TARGET --abi $ANDROID_ABI -c 20M - emulator -avd test -no-window & - ./wait_for_emulator.sh - # build app + # build app - ./gradlew clean build environment: From a0cf431f232221aeab22a0ff5a0240c24b2d2933 Mon Sep 17 00:00:00 2001 From: AndyScherzinger Date: Wed, 26 Oct 2016 17:48:50 +0200 Subject: [PATCH 12/13] revert back to v24 --- .drone.yml | 2 +- AndroidManifest.xml | 2 +- build.gradle | 6 +++--- sample_client/AndroidManifest.xml | 2 +- sample_client/build.gradle | 4 ++-- sample_client/res/values/strings.xml | 2 +- test_client/AndroidManifest.xml | 2 +- test_client/build.gradle | 6 +++--- 8 files changed, 13 insertions(+), 13 deletions(-) diff --git a/.drone.yml b/.drone.yml index b6a7af3f9d..149651c18d 100644 --- a/.drone.yml +++ b/.drone.yml @@ -5,7 +5,7 @@ pipeline: - echo no | android create avd --force -n test -t $ANDROID_TARGET --abi $ANDROID_ABI -c 20M - emulator -avd test -no-window & - ./wait_for_emulator.sh - # build app + # build app - ./gradlew clean build environment: diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 1ed7ca2d60..6d3255c583 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -30,7 +30,7 @@ + android:targetSdkVersion="25" /> diff --git a/build.gradle b/build.gradle index 33a0fd753c..1b35d2ab4e 100644 --- a/build.gradle +++ b/build.gradle @@ -3,7 +3,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:2.2.0' + classpath 'com.android.tools.build:gradle:2.2.2' classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5' } } @@ -22,8 +22,8 @@ dependencies { } android { - compileSdkVersion 24 - buildToolsVersion "24.0.2" + compileSdkVersion 25 + buildToolsVersion "25.0.0" sourceSets { main { diff --git a/sample_client/AndroidManifest.xml b/sample_client/AndroidManifest.xml index 47734a4c12..4a79f03807 100644 --- a/sample_client/AndroidManifest.xml +++ b/sample_client/AndroidManifest.xml @@ -30,7 +30,7 @@ + android:targetSdkVersion="25" /> - ownCloud Sample Client + Nextcloud Sample Client Refresh Upload Delete remote file diff --git a/test_client/AndroidManifest.xml b/test_client/AndroidManifest.xml index d3b74d523d..a96c29a20f 100644 --- a/test_client/AndroidManifest.xml +++ b/test_client/AndroidManifest.xml @@ -39,7 +39,7 @@ + android:targetSdkVersion="25" /> Date: Wed, 26 Oct 2016 18:42:50 +0200 Subject: [PATCH 13/13] revert to 24 --- AndroidManifest.xml | 2 +- build.gradle | 6 +++--- sample_client/AndroidManifest.xml | 2 +- sample_client/build.gradle | 4 ++-- test_client/AndroidManifest.xml | 2 +- test_client/build.gradle | 6 +++--- 6 files changed, 11 insertions(+), 11 deletions(-) diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 6d3255c583..1ed7ca2d60 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -30,7 +30,7 @@ + android:targetSdkVersion="24" /> diff --git a/build.gradle b/build.gradle index 1b35d2ab4e..33a0fd753c 100644 --- a/build.gradle +++ b/build.gradle @@ -3,7 +3,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:2.2.2' + classpath 'com.android.tools.build:gradle:2.2.0' classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5' } } @@ -22,8 +22,8 @@ dependencies { } android { - compileSdkVersion 25 - buildToolsVersion "25.0.0" + compileSdkVersion 24 + buildToolsVersion "24.0.2" sourceSets { main { diff --git a/sample_client/AndroidManifest.xml b/sample_client/AndroidManifest.xml index 4a79f03807..47734a4c12 100644 --- a/sample_client/AndroidManifest.xml +++ b/sample_client/AndroidManifest.xml @@ -30,7 +30,7 @@ + android:targetSdkVersion="24" /> + android:targetSdkVersion="24" />