From 28328df06d77ad1b95130cb047ea668a51ffb398 Mon Sep 17 00:00:00 2001 From: Juan Miguel Boyero Corral Date: Tue, 3 Apr 2018 13:04:42 +0200 Subject: [PATCH 01/23] Updated dependencies --- SWADroid.iml | 2 +- SWADroid/build.gradle | 18 +++++++++--------- build.gradle | 4 ++-- gradle/wrapper/gradle-wrapper.properties | 4 ++-- 4 files changed, 14 insertions(+), 14 deletions(-) diff --git a/SWADroid.iml b/SWADroid.iml index e6de05ec6..87d9f68f4 100644 --- a/SWADroid.iml +++ b/SWADroid.iml @@ -1,5 +1,5 @@ - + diff --git a/SWADroid/build.gradle b/SWADroid/build.gradle index 4e616a092..feecf6fbb 100644 --- a/SWADroid/build.gradle +++ b/SWADroid/build.gradle @@ -75,13 +75,13 @@ def getBuildConfigField(String property){ } dependencies { - compile 'com.android.support:support-v4:27.0.2' - compile 'com.android.support:appcompat-v7:27.0.2' - compile 'com.google.android.gms:play-services-analytics:11.8.0' - compile 'com.google.code.ksoap2-android:ksoap2-android:3.6.2' - compile 'commons-io:commons-io:2.6' - compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5' - compile 'com.journeyapps:zxing-android-embedded:3.5.0@aar' - compile 'com.google.zxing:core:3.3.1' - compile 'com.google.code.gson:gson:2.8.2' + implementation 'com.android.support:support-v4:27.1.0' + implementation 'com.android.support:appcompat-v7:27.1.0' + implementation 'com.google.android.gms:play-services-analytics:12.0.1' + implementation 'com.google.code.ksoap2-android:ksoap2-android:3.6.2' + implementation 'commons-io:commons-io:2.6' + implementation 'com.nostra13.universalimageloader:universal-image-loader:1.9.5' + implementation 'com.journeyapps:zxing-android-embedded:3.5.0@aar' + implementation 'com.google.zxing:core:3.3.2' + implementation 'com.google.code.gson:gson:2.8.2' } \ No newline at end of file diff --git a/build.gradle b/build.gradle index c466735cd..047b75954 100644 --- a/build.gradle +++ b/build.gradle @@ -5,8 +5,8 @@ buildscript { google() } dependencies { - classpath 'com.android.tools.build:gradle:3.0.1' - classpath 'org.ajoberstar:grgit:1.8.0' + classpath 'com.android.tools.build:gradle:3.1.0' + classpath 'org.ajoberstar:grgit:2.1.1' } } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 33dd2e14a..daa06aa1f 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Wed Oct 25 20:37:21 CEST 2017 +#Tue Apr 03 01:52:04 CEST 2018 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip From a6350033810320229d6920bd104f83155e772a7d Mon Sep 17 00:00:00 2001 From: Juan Miguel Boyero Corral Date: Mon, 16 Apr 2018 17:16:17 +0200 Subject: [PATCH 02/23] Updated dependencies --- SWADroid/build.gradle | 6 +++--- build.gradle | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/SWADroid/build.gradle b/SWADroid/build.gradle index feecf6fbb..96f429aa5 100644 --- a/SWADroid/build.gradle +++ b/SWADroid/build.gradle @@ -75,9 +75,9 @@ def getBuildConfigField(String property){ } dependencies { - implementation 'com.android.support:support-v4:27.1.0' - implementation 'com.android.support:appcompat-v7:27.1.0' - implementation 'com.google.android.gms:play-services-analytics:12.0.1' + implementation 'com.android.support:support-v4:27.1.1' + implementation 'com.android.support:appcompat-v7:27.1.1' + implementation 'com.google.android.gms:play-services-analytics:15.0.0' implementation 'com.google.code.ksoap2-android:ksoap2-android:3.6.2' implementation 'commons-io:commons-io:2.6' implementation 'com.nostra13.universalimageloader:universal-image-loader:1.9.5' diff --git a/build.gradle b/build.gradle index 047b75954..6dddd95c4 100644 --- a/build.gradle +++ b/build.gradle @@ -5,7 +5,7 @@ buildscript { google() } dependencies { - classpath 'com.android.tools.build:gradle:3.1.0' + classpath 'com.android.tools.build:gradle:3.1.1' classpath 'org.ajoberstar:grgit:2.1.1' } } From dc4a6835a76033b7a67b092a2d4d64752b8e64cf Mon Sep 17 00:00:00 2001 From: Juan Miguel Boyero Corral Date: Wed, 18 Apr 2018 16:42:12 +0200 Subject: [PATCH 03/23] Create CONTRIBUTING.md --- CONTRIBUTING.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 CONTRIBUTING.md diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 000000000..7597d1557 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,13 @@ +## Contributing to SWADroid + +*Before opening a pull request*, consider: + +- Is the change important and ready enough to ask the community to spend time reviewing? +- Have you searched for existing, related GitHub issues and pull requests? +- Is the change being proposed clearly explained and motivated? + +When you contribute code, you affirm that the contribution is your original work and that you +license the work to the project under the project's open source license. Whether or not you +state this explicitly, by submitting any copyrighted material via pull request, email, or +other means you agree to license the material under the project's open source license and +warrant that you have the legal authority to do so. From de989a38196f18ec5e211884b48773b3da40824f Mon Sep 17 00:00:00 2001 From: Juan Miguel Boyero Corral Date: Wed, 18 Apr 2018 16:44:35 +0200 Subject: [PATCH 04/23] Create PULL_REQUEST_TEMPLATE.md --- PULL_REQUEST_TEMPLATE.md | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 PULL_REQUEST_TEMPLATE.md diff --git a/PULL_REQUEST_TEMPLATE.md b/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 000000000..bd405017c --- /dev/null +++ b/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,10 @@ +## What changes were proposed in this pull request? + +(Please fill in changes proposed in this fix) + +## How was this patch tested? + +(Please explain how this patch was tested. E.g. unit tests, integration tests, manual tests) +(If this patch involves UI changes, please attach a screenshot; otherwise, remove this) + +Please review https://github.com/Amab/SWADroid/blob/develop/CONTRIBUTING.md before opening a pull request. From 76e8de86c739600eb3940c9dcf0d01ab77ac74bb Mon Sep 17 00:00:00 2001 From: Juan Miguel Boyero Corral Date: Wed, 18 Apr 2018 16:46:37 +0200 Subject: [PATCH 05/23] Create CODE_OF_CONDUCT.md --- CODE_OF_CONDUCT.md | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 CODE_OF_CONDUCT.md diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 000000000..99aa10295 --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,46 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. + +## Our Standards + +Examples of behavior that contributes to creating a positive environment include: + +* Using welcoming and inclusive language +* Being respectful of differing viewpoints and experiences +* Gracefully accepting constructive criticism +* Focusing on what is best for the community +* Showing empathy towards other community members + +Examples of unacceptable behavior by participants include: + +* The use of sexualized language or imagery and unwelcome sexual attention or advances +* Trolling, insulting/derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or electronic address, without explicit permission +* Other conduct which could reasonably be considered inappropriate in a professional setting + +## Our Responsibilities + +Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. + +Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. + +## Scope + +This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at swadroid@gmail.com. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. + +Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version] + +[homepage]: http://contributor-covenant.org +[version]: http://contributor-covenant.org/version/1/4/ From c6eb60efa5c10851c11a517ac92eb4e543c20634 Mon Sep 17 00:00:00 2001 From: Juan Miguel Boyero Corral Date: Wed, 18 Apr 2018 20:15:49 +0200 Subject: [PATCH 06/23] Create ISSUE_TEMPLATE.md --- ISSUE_TEMPLATE.md | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 ISSUE_TEMPLATE.md diff --git a/ISSUE_TEMPLATE.md b/ISSUE_TEMPLATE.md new file mode 100644 index 000000000..719c16307 --- /dev/null +++ b/ISSUE_TEMPLATE.md @@ -0,0 +1,45 @@ +*Provide a general summary of the issue in the Title above* + +## Expected Behavior +*If you're describing a bug, tell us what should happen* + +*If you're suggesting a change/improvement, tell us how it should work* + +## Current Behavior +*If describing a bug, tell us what happens instead of the expected behavior* + +*If suggesting a change/improvement, explain the difference from current behavior* + +## Possible Solution +*Not obligatory, but suggest a fix/reason for the bug, + or ideas how to implement the addition or change* + +## Steps to Reproduce (for bugs) +*Provide a link to a live example, or an unambiguous set of steps to + reproduce this bug. Include code to reproduce, if relevant* + +1. + +2. + +3. + +4. + +## Context +*How has this issue affected you? What are you trying to accomplish?* + +*Providing context helps us come up with a solution that is most useful in the real world* + +## Environment data +*Include as many relevant details about the environment you experienced the bug in* + +Android version: + +Device model: + +Stock or customized system: + +SWADroid app version: + +SWAD server URL: From 949c2028d73d22755e664fcd680b974bda5cd4e3 Mon Sep 17 00:00:00 2001 From: Juan Miguel Boyero Corral Date: Wed, 18 Apr 2018 20:21:05 +0200 Subject: [PATCH 07/23] Updated issue template --- ISSUE_TEMPLATE.md | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/ISSUE_TEMPLATE.md b/ISSUE_TEMPLATE.md index 719c16307..559ffd1a7 100644 --- a/ISSUE_TEMPLATE.md +++ b/ISSUE_TEMPLATE.md @@ -1,22 +1,20 @@ -*Provide a general summary of the issue in the Title above* + ## Expected Behavior -*If you're describing a bug, tell us what should happen* - -*If you're suggesting a change/improvement, tell us how it should work* + + ## Current Behavior -*If describing a bug, tell us what happens instead of the expected behavior* - -*If suggesting a change/improvement, explain the difference from current behavior* + + ## Possible Solution -*Not obligatory, but suggest a fix/reason for the bug, - or ideas how to implement the addition or change* + + ## Steps to Reproduce (for bugs) -*Provide a link to a live example, or an unambiguous set of steps to - reproduce this bug. Include code to reproduce, if relevant* + + 1. @@ -27,12 +25,11 @@ 4. ## Context -*How has this issue affected you? What are you trying to accomplish?* - -*Providing context helps us come up with a solution that is most useful in the real world* + + ## Environment data -*Include as many relevant details about the environment you experienced the bug in* + Android version: From 61ef72b0c61a11e7e588b76817878d8e16a3c213 Mon Sep 17 00:00:00 2001 From: Juan Miguel Boyero Corral Date: Sat, 21 Apr 2018 22:23:10 +0200 Subject: [PATCH 08/23] Updated README --- README.md | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/README.md b/README.md index d93e1b578..424abced7 100644 --- a/README.md +++ b/README.md @@ -5,9 +5,6 @@ Android client for e-learning platform [![SWADroid](https://openswad.org/logo/sw [![SWADroid](http://developer.android.com/images/brand/en_generic_rgb_wo_45.png)](https://play.google.com/store/apps/details?id=es.ugr.swad.swadroid) -- Code: `git clone https://github.com/Amab/SWADroid.git` -- Issue tracker: https://github.com/Amab/SWADroid/issues - [![SWADroid](http://upload.wikimedia.org/wikipedia/commons/c/c8/Farm-Fresh_twitter_1.png)](http://twitter.com/SWADroid)[![SWADroid](http://upload.wikimedia.org/wikipedia/commons/4/4d/Farm-Fresh_facebook.png)](https://www.facebook.com/SWADroid)[![SWADroid](http://upload.wikimedia.org/wikipedia/commons/b/ba/Google_plus_32.png)](https://plus.google.com/115615684349730524355/posts)[![SWADroid](https://upload.wikimedia.org/wikipedia/commons/thumb/5/5c/Telegram_Messenger.png/35px-Telegram_Messenger.png?uselang=es)](https://telegram.me/swadroid)[![SWADroid](https://s.w.org/about/images/logos/wordpress-logo-32-blue.png)](http://swadroid.wordpress.com) CI Status @@ -57,4 +54,4 @@ Contributing SWADroid is an open source project. I encourage contributions. -The Github team has also been kind enough to write up some great [documentation](https://help.github.com/articles/about-pull-requests/) on working with pull requests. Contributions should be performed on [topic branches](http://progit.org/book/ch3-4.html) in your personal forks - just issue your pull requests from there. +The Github team has also been kind enough to write up some great [documentation](https://help.github.com/articles/about-pull-requests/) on working with pull requests. From 085922010180f81de66573ed0b19a51c74f4f7c8 Mon Sep 17 00:00:00 2001 From: Amab Date: Wed, 2 May 2018 18:32:41 +0200 Subject: [PATCH 09/23] Updated dependencies --- SWADroid.iml | 2 +- build.gradle | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/SWADroid.iml b/SWADroid.iml index 87d9f68f4..1f5a327f0 100644 --- a/SWADroid.iml +++ b/SWADroid.iml @@ -13,7 +13,7 @@ - + \ No newline at end of file diff --git a/build.gradle b/build.gradle index 6dddd95c4..d1afe4b4b 100644 --- a/build.gradle +++ b/build.gradle @@ -5,7 +5,7 @@ buildscript { google() } dependencies { - classpath 'com.android.tools.build:gradle:3.1.1' + classpath 'com.android.tools.build:gradle:3.1.2' classpath 'org.ajoberstar:grgit:2.1.1' } } From 5da9b7ac2494e1df1533375f05a1912704f1ff71 Mon Sep 17 00:00:00 2001 From: Juan Miguel Boyero Corral Date: Wed, 16 May 2018 22:12:42 +0200 Subject: [PATCH 10/23] Update API version to Android P Preview (#239) * Upgraded to Android P * Fix Travis CI (Try 1) * Fix Travis CI (Try 2) * Fix Travis CI (Try 3) * Fix Travis CI (Try 4) * Fix Travis CI (Try 5) * Fix Travis CI (Try 6) * Fix Travis CI (Try 7) * Fix Travis CI (Try 8) * Revert Fix Travis CI (Try 8) * Minor change * Add parsing of the lint report in Travis CI * Refactor Gradle config * Add TODO comments --- .travis.yml | 54 +++++++++++++++++++++++++++++-------------- SWADroid/build.gradle | 47 +++++++++++++++++++------------------ 2 files changed, 61 insertions(+), 40 deletions(-) diff --git a/.travis.yml b/.travis.yml index 8217793a7..73defe8e3 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,19 +1,39 @@ +sudo: false + language: android -jdk: -- oraclejdk8 -android: - components: - - tools - - tools - - platform-tools - - build-tools-27.0.3 - - android-27 - - extra-android-m2repository - - extra-android-support - - extra-google-m2repository - - extra-google-google_play_services -script: -- "./gradlew build connectedCheck" +jdk: oraclejdk8 + +env: + global: + - ANDROID_API=P + - ANDROID_BUILD_TOOLS=28.0.0-rc2 #TODO Switch to release version when Android P is released + +before_cache: + - rm -f $HOME/.gradle/caches/modules-2/modules-2.lock + - rm -rf $HOME/.gradle/caches/*/plugin-resolution/ + +cache: + directories: + - $HOME/.gradle/caches/ + - $HOME/.gradle/wrapper/ + - $HOME/.android/build-cache + before_install: -- chmod +x gradlew -- yes | sdkmanager "platforms;android-27" + # Travis still uses 'android' command behind the 'components' section update. + # That command is obsolete and cannot update Android SDK Tools after 25.2.5. + # Let's solve it here with the new command 'sdkmanager' + - yes | sdkmanager --verbose "build-tools;${ANDROID_BUILD_TOOLS}" + - yes | sdkmanager --verbose "platform-tools" + - yes | sdkmanager --verbose "tools" + - yes | sdkmanager --verbose "platforms;android-${ANDROID_API}" + - yes | sdkmanager --verbose "extras;android;m2repository" + + # Check tools and dependencies installed + - yes | sdkmanager --list + + - chmod +x gradlew + +script : + - ./gradlew build connectedCheck + +after_failure: "cat $TRAVIS_BUILD_DIR/SWADroid/build/reports/lint-results.xml" diff --git a/SWADroid/build.gradle b/SWADroid/build.gradle index 96f429aa5..2c8bfbf9a 100644 --- a/SWADroid/build.gradle +++ b/SWADroid/build.gradle @@ -1,16 +1,31 @@ apply plugin: 'com.android.application' +import org.ajoberstar.grgit.Grgit + ext { - git = org.ajoberstar.grgit.Grgit.open() + git = Grgit.open() gitVersionCode = git.tag.list().size() gitVersionName = "${git.describe()}" +} + +//return a BuildConfigField from a properties file. +def static getBuildConfigField(String property){ + def travisBuild = System.getenv("TRAVIS") == "true" + def value + + if(travisBuild) { + value = "\"" + System.getenv(property) + "\"" + } else { + Properties properties = new Properties() + properties.load(new FileInputStream("keystore.properties")) + value = "\"" + properties.getProperty(property) + "\"" + } - travisBuild = System.getenv("TRAVIS") == "true" + return value } android { - compileSdkVersion 27 - buildToolsVersion "27.0.3" + compileSdkVersion "android-P" dexOptions { maxProcessCount=2 @@ -27,7 +42,7 @@ android { versionName gitVersionName minSdkVersion 14 - targetSdkVersion 27 + targetSdkVersion "P" android.applicationVariants.all { variant -> def appName @@ -59,25 +74,11 @@ android { } } -//return a BuildConfigField from a properties file. -def getBuildConfigField(String property){ - def value - - if(travisBuild) { - value = "\"" + System.getenv(property) + "\"" - } else { - Properties properties = new Properties() - properties.load(new FileInputStream("keystore.properties")) - value = "\"" + properties.getProperty(property) + "\"" - } - - return value -} - +//TODO Switch to release versions when Android P is released dependencies { - implementation 'com.android.support:support-v4:27.1.1' - implementation 'com.android.support:appcompat-v7:27.1.1' - implementation 'com.google.android.gms:play-services-analytics:15.0.0' + implementation 'com.android.support:support-v4:28.0.0-alpha1' + implementation 'com.android.support:appcompat-v7:28.0.0-alpha1' + implementation 'com.google.android.gms:play-services-analytics:15.0.2' implementation 'com.google.code.ksoap2-android:ksoap2-android:3.6.2' implementation 'commons-io:commons-io:2.6' implementation 'com.nostra13.universalimageloader:universal-image-loader:1.9.5' From 0ac9e323633c03c19eeba83c67df8f92859c1343 Mon Sep 17 00:00:00 2001 From: Juan Miguel Boyero Corral Date: Fri, 18 May 2018 00:51:10 +0200 Subject: [PATCH 11/23] Enable APK Autodeploy in Travis CI (#240) Enable APK Autodeploy in Travis CI --- .gitignore | 2 ++ .travis.yml | 70 +++++++++++++++++++++++------------------- SWADroid/build.gradle | 20 +----------- keystore.jks.enc | Bin 0 -> 2576 bytes 4 files changed, 42 insertions(+), 50 deletions(-) create mode 100644 keystore.jks.enc diff --git a/.gitignore b/.gitignore index a000de9dd..56a12b378 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,5 @@ local.properties app/lint.xml /SWADroid/google-services.json keystore.properties +/SWADroid/release/ +keystore.jks diff --git a/.travis.yml b/.travis.yml index 73defe8e3..a7cc07c02 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,39 +1,47 @@ sudo: false - language: android jdk: oraclejdk8 - env: - global: - - ANDROID_API=P - - ANDROID_BUILD_TOOLS=28.0.0-rc2 #TODO Switch to release version when Android P is released - + global: + - ANDROID_API=P + - ANDROID_BUILD_TOOLS=28.0.0-rc2 + - secure: "eY3bGKw4jZ+HHkkMBZHiL2dhcz+RJYHib0WC77SSVHLJcCg63pBvs420i4rjNQHycMs+PhRSlR79jdglDTm8svphhRjSts6VMkHDxObwJIyLF8vAZ0PfjhqfOXO+4+Fx6pRIjwM7cBMOQrDfSimJHRB+z/f2AJfUIsaMSlltGVya7nmrLY/fO4dtl4wPnejslj3mhnBAxr+a2Or978RwI2TMpxBovHZKFT/46wJTcMzKXGdXU64M8nmQmpcKHeIKIBiR4g+A2tahC+Us4tFxxoTDd3R+IAzj7Gvjd5JuMlYmQ3quRv2M08u9OJNiT14LpDXy19fZKdw/QNHg3S8JVis8kJDkv6z4HyZXTIBgISZpCZZti04GP29Lj+1f4ISRFc6uxankDuRgfX8ucsxoEPJVq3PfJlpTdP7wjlQtEGv0HF/3MNNyruNbLHFiCgHOANwEOX44INtw6XylPEftmw4y4ptntFG3VXyV1Zi+732Qe4b2QNTbvLPrsmkCRKzo59vKKAzBBhvYvFVITcWbySqdx9/n1H25SRL2Q96nPGQSQyBF6obzzFcjMKkknPle1PXvAfb171964cdIK6/zo9rh/ZCL3+gAKZibmGWvbeztWYl5ON8B8x8mgLO/qgPIotY+aqwmsY06pKrqi6adYZacMF+UgtbLJlhnird6ugk=" + - secure: "EmcSyXk/5pEJhbRX9DSFzhQGYvGaYdxjDuQwmLuxUGitGpFQZbWexTAK/l0LLcIRsiSmucY7KJgOpL7I6odh2kVUZedarj8/5K1P69ljDDB7bfG8jyOLZvHJ1JTZRuKvUnT846zQwQWTnLXF9N4LaQ86FVqSW2bGHqptIivEjDEVh78V3g4PDsbX5aQ5LjTlSn7bezu9chpVS0fnRlqjAa6U2kUwUt+DDaSHEOs35Z89jT7JoonGFrMsyA7S26CQhOBYE3w76AllIea+MWzPJX3V364ZIzPBnQAkCz02oVI3n+LHZkzUCYHkY8DXWXNy6+/sulFa6L1v6bt8DzF1vwJ+nTNVqmqSDYBe2s1qAUZ+4o8l/THMndxC11LjbbEExG4ekBRFvRsOOf0pBps3Yr4ry27gaj4+9Ap2JCKKOQwm0izh48AJiy0Y8pzIzTO5wB5B7a4czLJmzaNWkPVXw4lKg2ldJ4sd6EBqUZqG2vRmN6VwHb8gHFNaQTH3feBRhYTpkv1wWUuhvclNn5yoZzcSxMT/b8d89e5DahoBYMW48c6jb5wL/EoY3bHp3mjtnTW8oIIjyZK8FjYX+8IqeEoue8bDDqNUN71xmRvp+0CX1iXnfgUeDWnYhXHTewOlJu6i509wGrZPxYjgwAdnpfTyGXPq7Vin9CkNHMw9fbA=" before_cache: - - rm -f $HOME/.gradle/caches/modules-2/modules-2.lock - - rm -rf $HOME/.gradle/caches/*/plugin-resolution/ - +- rm -f $HOME/.gradle/caches/modules-2/modules-2.lock +- rm -rf $HOME/.gradle/caches/*/plugin-resolution/ cache: directories: - - $HOME/.gradle/caches/ - - $HOME/.gradle/wrapper/ - - $HOME/.android/build-cache - + - "$HOME/.gradle/caches/" + - "$HOME/.gradle/wrapper/" + - "$HOME/.android/build-cache" before_install: - # Travis still uses 'android' command behind the 'components' section update. - # That command is obsolete and cannot update Android SDK Tools after 25.2.5. - # Let's solve it here with the new command 'sdkmanager' - - yes | sdkmanager --verbose "build-tools;${ANDROID_BUILD_TOOLS}" - - yes | sdkmanager --verbose "platform-tools" - - yes | sdkmanager --verbose "tools" - - yes | sdkmanager --verbose "platforms;android-${ANDROID_API}" - - yes | sdkmanager --verbose "extras;android;m2repository" - - # Check tools and dependencies installed - - yes | sdkmanager --list - - - chmod +x gradlew - -script : - - ./gradlew build connectedCheck - -after_failure: "cat $TRAVIS_BUILD_DIR/SWADroid/build/reports/lint-results.xml" +- yes | sdkmanager "build-tools;${ANDROID_BUILD_TOOLS}" +- yes | sdkmanager "platform-tools" +- yes | sdkmanager "tools" +- yes | sdkmanager "platforms;android-${ANDROID_API}" +- yes | sdkmanager "extras;android;m2repository" +- yes | sdkmanager --list +- chmod +x gradlew +script: +- "./gradlew clean test build connectedCheck" +after_failure: cat $TRAVIS_BUILD_DIR/SWADroid/build/reports/lint-results.xml +before_deploy: +- openssl aes-256-cbc -K $encrypted_855ad244b8b2_key -iv $encrypted_855ad244b8b2_iv -in keystore.jks.enc -out keystore.jks -d +- cd SWADroid/build/outputs/apk/release +- jarsigner -sigalg SHA1withRSA -digestalg SHA1 -keystore ${TRAVIS_BUILD_DIR}/keystore.jks -storepass $storepass -keypass $keypass SWADroid-release-unsigned.apk amab +- jarsigner -verify SWADroid-release-unsigned.apk +- "${ANDROID_HOME}/build-tools/${ANDROID_BUILD_TOOLS}/zipalign -p 4 SWADroid-release-unsigned.apk SWADroid-release.apk" +deploy: + provider: releases + api_key: + secure: ePphqb/bHjJC1wwlVfw3DNOZtluX7B/3G8a8uWDkDIBpKHqCykpnXUNmgnWEO9iQ+GUmSdkAHn+z9tKv+MAdBRgSw2Xfc8sEsj6lsWUjJxHk7/eQOdzE0FC8y8WjrKHpwbFEJAi03YId/0ruIBltMzCWyylxMTAXonrL9yAvGn9EL5m1y1Fap58XNUmDwnP+4yoTfTuXOOJrmppFGUKlR22xhI6j/zvVW1LeyA7kpp42X/76rgnSS78Fj4s/O8kN0aa6c9PM38rWg1TqgBRRuV+2PMWmZn3EfjdzBl2d+D5pJ+gPS9e+gSWpKtTkatZ+CKwSBvQSpNE6K7B1FSCSR+Gy9FtnnH0BMyeP71kMFDgU+zagZjuQZnVgRAIDYdaquNq52EwcStXV5LrqpzNpkgAfrNOSVfLZWS1eEkGy6q8WqpvBO8OcnseaiaNl4VNNRZn1e7FziDZHkA/SCr3aLOVYp4FkVK7Z+yiH2EbLJ5SeKuPWv7pEbBmNR7lzsZGZ0Rt6FmVN3yuA1/4oIN0zgdSwNEoqYGRXqG0bNeghwjLPCkpMJ3W8h82fblX40hk/f3bB3aGN9BX/oBa06MEFTSxUtp4pwfhRQVe0/13+oR2G6yei+fuGJSsil6FmaOB0jNoMvtMLI0IhQ47AflRW4QfAHnO+lbfP8ZmWdLgBidk= + file: $TRAVIS_BUILD_DIR/SWADroid/build/outputs/apk/release/SWADroid-release.apk + skip_cleanup: true + name: SWADroid $TRAVIS_TAG + body: Automated release from Travis CI. + target_commitsh: $TRAVIS_COMMIT + on: + tags: true + repo: Amab/SWADroid + branch: master diff --git a/SWADroid/build.gradle b/SWADroid/build.gradle index 2c8bfbf9a..4fb6433c5 100644 --- a/SWADroid/build.gradle +++ b/SWADroid/build.gradle @@ -44,29 +44,11 @@ android { minSdkVersion 14 targetSdkVersion "P" - android.applicationVariants.all { variant -> - def appName - //Check if an applicationName property is supplied; if not use the name of the parent project. - if (project.hasProperty("applicationName")) { - appName = applicationName - } else { - appName = parent.name - } - - variant.outputs.all { output -> - outputFileName = "${appName}-${output.baseName}-${variant.versionName}.apk" - } - } - testApplicationId "es.ugr.swad.swadroid.test" testInstrumentationRunner "android.test.InstrumentationTestRunner" } buildTypes { - debug { - versionNameSuffix '-DEBUG' - } - buildTypes.each { it.buildConfigField "String", "SWAD_APP_KEY", getBuildConfigField("SWAD_APP_KEY") it.buildConfigField "String", "ANALYTICS_API_KEY", getBuildConfigField("ANALYTICS_API_KEY") @@ -74,7 +56,7 @@ android { } } -//TODO Switch to release versions when Android P is released +// TODO Switch to release versions when Android P is released dependencies { implementation 'com.android.support:support-v4:28.0.0-alpha1' implementation 'com.android.support:appcompat-v7:28.0.0-alpha1' diff --git a/keystore.jks.enc b/keystore.jks.enc new file mode 100644 index 0000000000000000000000000000000000000000..d189e48153e3d7f4372d6d12fd716117a2b16efd GIT binary patch literal 2576 zcmV+r3h(tZlfexVm7e`Vd-{+P_0;F1m79_-FN&-H4A#uKyiZS@y_SN>PRG`rA+UrI zMtt&{`0O_1MXjfL?t|O-3>MWPF>%Q}5e+ z5CP>6(%}kMMk+0-ZwacNaVA>~LDZfB)LRok4^*|`A8IjgbreM_JABuH4L=iE6r=}l zEWV(VOO|0V2w%LDB^Iu#mOf8g(Zo~fOopE7R5r7Ehh+F-`5=Y!Tz6cwjB;uQ2}=wI zfZGkICg%OWT1)Fl}vEUN8eV^SQbw{5*bG*-U-I;zo77q z&JY-uE8-$|U^t7&w*$ALM31CGb_Ki>BW<|c%qj`Sy1UTK>In}vO$6dPORGr~1^UUk z-`mDaV?s#_93m=9BmG}Y7p-2u!$-95NBL_{1;{;2Ex#RF?xWkl6?Q~%RX zJe?pWud3!{#<0Pm5&KLKUt6>;(O0br+6jm``5ox5gJY053H28~%{lb3rx4iB#ue!U zF?GXv*up;4 zlOOW6dGpa+ed4n7Hb%u-NSa9Ei$C_}BNL9=alY*)L&&jybZ;GLFx7pn<(XG50ieFA zyO2(C1@@53Hyihdp??7I_KM__aw;(28xZB1vA2ys_$j|7Fo$o5_$bB=+MXF!lq^ZP zz(yj9udYpI_S85Zu>Q;Sc&1kN6iQ4c9`QSq%vP4K$g9XKc62)ZcXx5wGR2$q6V72V zPmDTx%ZK!>_7>$jrEm4NhP7(}!Q{z24RxNYC&n3eX8~cJ-!7x3v3gI(jNObKYo*F8 z{xST?$}27tVC$NkY8ll#e?8K$$|fq{p;q#LmM%nGCV9@890UG%g#-N4(Q zq{n=xk76Xksm`BBq|4VEFg&L#Rv)e+HCgD**5JGTmQt-y^l7$+ zYtD0#r3?lF^3@lhgQVN%nj6`4ReU&Dvlgr;b3~1IVT&X?JmYnApW7GUj97I}8WJ+$ zQD}^rN|^-u9LXac&>UCN4tE!Q3_6K->iNV}S=#`b)HgMNQM~f`ei;J zf{U+R+m8#upwAmJfP;oSJprM1JSC;@IjOsXE-!<^)enfqVP9$SwGBJ`mt} zp>0qkIj^{_B{Xi9Q9Qhh?Cej>55_!2ZbMzIR_^mYOotkHxN_jjoAQMvt~ivgD4Iy>^v$G~UdxXSALVm#mprb&T6(Jb%pSXAiTdNbL-31Dp zyGWr;9>>*`ktQVFhcoi55#bJe87zBJM;Ied!mS0*$i}Bh_eFxw_AUT0zxneiy6S)o zuxa789Ii7$=bJAaoQMx$&B;&zhnWFjZU5*Ou36ChkNnvp833M_PswlDWAsxF&lJR8 z#C`B=COvRJ>lX&lk&<%1R1vuM-3|a4&TgLHIrd9KW;!ZVQ~>hwU$Vuih4yNJK07^U z-z@%I8u+z_hm`_tz!bvI8gH?byHkQ$rZtoqqXxs#!k_dS=}(7s?T>fRKD!2%F#*+3 zYlTYf`nw@kDX)iq4w}U~a4A_UcTmimdkwUPmq2VG)1LzBC#<*%}~?fynxT=se|6 zrFLm3=k7~0g|z9D#Ra@Bc>9!P#i*lD{JBz0yS zKWgw0md#f~juVE*B=*MIXM>C8WUyD@ie$Iu$AcV)S;#8IBE`;Trl=lNAZg}n-S|C! zNiP$q-qQ)pj#K)N-OK$}oR3>ZS#&=qSdb0k-jtawK*rgU8$M4<{OGuN(t?a`j3{Wy zQ<0B<5|46pF$7*S{WnKCe!l>Og=;fnAW=fr+n_(?KfY7MoD6wOHhj`%%aUcCjP0zj zqeC|Dmt$KxpWH;%pt>t)7Qp`CIb zhgW0@+cu-zU<%x=PQdE1@1jU1h@xO^3lqj**Y4}duE<)7HnXzc4Xk$WMMXRIMzc)x zptSbVzPA%;%-6oLY7Z@!h?uiugUwusBu?zR;qop(n<8m3)_<(C+yM&T!m zgZ7fs0l)9_g(hsst2DP$Lvw0)(_*uL(Z2m9$GvQJfi*Tl;4@9eD?sH0rJiSEHQg2g zH0!&U_RiZ^TtlpmEoh<@$bm}9TU&7p=A zPLrIJhWzNvTwusvFOBk6yz>_TRA=?JKgpm+b#e8OMNX?wTlz!-n;5*7pLOkq_FAu) z-O}4uH6mAb#}bVKVkF#DFsM$wN%blVCy754^@|n*#E39V`5wAI_KV!`gAFETy9-Ev zc)0?N+mB(z%Xz9_I={B*a7;GgjZ6@R>to7PzryWR7>oZuEjp$=0K>PzwAF~gv8=j0 zk*0ocN7uy#3`3tOXXhS8mCF8}`A6-0S~01{Dhkj^@ObgDr`cWit-fR^*;0WF%JO5i mn=&zb{C{kY=T$ud+e`=VpVdMg->;@%iYQH7{nxn+0&KiL%nb?v literal 0 HcmV?d00001 From b641f7de4da4ae20f3b334a992515eb7d963d490 Mon Sep 17 00:00:00 2001 From: Juan Miguel Boyero Corral Date: Fri, 18 May 2018 16:51:24 +0200 Subject: [PATCH 12/23] Add Slack integration with Travis CI (#241) --- .travis.yml | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/.travis.yml b/.travis.yml index a7cc07c02..4cd013369 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,8 +5,8 @@ env: global: - ANDROID_API=P - ANDROID_BUILD_TOOLS=28.0.0-rc2 - - secure: "eY3bGKw4jZ+HHkkMBZHiL2dhcz+RJYHib0WC77SSVHLJcCg63pBvs420i4rjNQHycMs+PhRSlR79jdglDTm8svphhRjSts6VMkHDxObwJIyLF8vAZ0PfjhqfOXO+4+Fx6pRIjwM7cBMOQrDfSimJHRB+z/f2AJfUIsaMSlltGVya7nmrLY/fO4dtl4wPnejslj3mhnBAxr+a2Or978RwI2TMpxBovHZKFT/46wJTcMzKXGdXU64M8nmQmpcKHeIKIBiR4g+A2tahC+Us4tFxxoTDd3R+IAzj7Gvjd5JuMlYmQ3quRv2M08u9OJNiT14LpDXy19fZKdw/QNHg3S8JVis8kJDkv6z4HyZXTIBgISZpCZZti04GP29Lj+1f4ISRFc6uxankDuRgfX8ucsxoEPJVq3PfJlpTdP7wjlQtEGv0HF/3MNNyruNbLHFiCgHOANwEOX44INtw6XylPEftmw4y4ptntFG3VXyV1Zi+732Qe4b2QNTbvLPrsmkCRKzo59vKKAzBBhvYvFVITcWbySqdx9/n1H25SRL2Q96nPGQSQyBF6obzzFcjMKkknPle1PXvAfb171964cdIK6/zo9rh/ZCL3+gAKZibmGWvbeztWYl5ON8B8x8mgLO/qgPIotY+aqwmsY06pKrqi6adYZacMF+UgtbLJlhnird6ugk=" - - secure: "EmcSyXk/5pEJhbRX9DSFzhQGYvGaYdxjDuQwmLuxUGitGpFQZbWexTAK/l0LLcIRsiSmucY7KJgOpL7I6odh2kVUZedarj8/5K1P69ljDDB7bfG8jyOLZvHJ1JTZRuKvUnT846zQwQWTnLXF9N4LaQ86FVqSW2bGHqptIivEjDEVh78V3g4PDsbX5aQ5LjTlSn7bezu9chpVS0fnRlqjAa6U2kUwUt+DDaSHEOs35Z89jT7JoonGFrMsyA7S26CQhOBYE3w76AllIea+MWzPJX3V364ZIzPBnQAkCz02oVI3n+LHZkzUCYHkY8DXWXNy6+/sulFa6L1v6bt8DzF1vwJ+nTNVqmqSDYBe2s1qAUZ+4o8l/THMndxC11LjbbEExG4ekBRFvRsOOf0pBps3Yr4ry27gaj4+9Ap2JCKKOQwm0izh48AJiy0Y8pzIzTO5wB5B7a4czLJmzaNWkPVXw4lKg2ldJ4sd6EBqUZqG2vRmN6VwHb8gHFNaQTH3feBRhYTpkv1wWUuhvclNn5yoZzcSxMT/b8d89e5DahoBYMW48c6jb5wL/EoY3bHp3mjtnTW8oIIjyZK8FjYX+8IqeEoue8bDDqNUN71xmRvp+0CX1iXnfgUeDWnYhXHTewOlJu6i509wGrZPxYjgwAdnpfTyGXPq7Vin9CkNHMw9fbA=" + - secure: eY3bGKw4jZ+HHkkMBZHiL2dhcz+RJYHib0WC77SSVHLJcCg63pBvs420i4rjNQHycMs+PhRSlR79jdglDTm8svphhRjSts6VMkHDxObwJIyLF8vAZ0PfjhqfOXO+4+Fx6pRIjwM7cBMOQrDfSimJHRB+z/f2AJfUIsaMSlltGVya7nmrLY/fO4dtl4wPnejslj3mhnBAxr+a2Or978RwI2TMpxBovHZKFT/46wJTcMzKXGdXU64M8nmQmpcKHeIKIBiR4g+A2tahC+Us4tFxxoTDd3R+IAzj7Gvjd5JuMlYmQ3quRv2M08u9OJNiT14LpDXy19fZKdw/QNHg3S8JVis8kJDkv6z4HyZXTIBgISZpCZZti04GP29Lj+1f4ISRFc6uxankDuRgfX8ucsxoEPJVq3PfJlpTdP7wjlQtEGv0HF/3MNNyruNbLHFiCgHOANwEOX44INtw6XylPEftmw4y4ptntFG3VXyV1Zi+732Qe4b2QNTbvLPrsmkCRKzo59vKKAzBBhvYvFVITcWbySqdx9/n1H25SRL2Q96nPGQSQyBF6obzzFcjMKkknPle1PXvAfb171964cdIK6/zo9rh/ZCL3+gAKZibmGWvbeztWYl5ON8B8x8mgLO/qgPIotY+aqwmsY06pKrqi6adYZacMF+UgtbLJlhnird6ugk= + - secure: EmcSyXk/5pEJhbRX9DSFzhQGYvGaYdxjDuQwmLuxUGitGpFQZbWexTAK/l0LLcIRsiSmucY7KJgOpL7I6odh2kVUZedarj8/5K1P69ljDDB7bfG8jyOLZvHJ1JTZRuKvUnT846zQwQWTnLXF9N4LaQ86FVqSW2bGHqptIivEjDEVh78V3g4PDsbX5aQ5LjTlSn7bezu9chpVS0fnRlqjAa6U2kUwUt+DDaSHEOs35Z89jT7JoonGFrMsyA7S26CQhOBYE3w76AllIea+MWzPJX3V364ZIzPBnQAkCz02oVI3n+LHZkzUCYHkY8DXWXNy6+/sulFa6L1v6bt8DzF1vwJ+nTNVqmqSDYBe2s1qAUZ+4o8l/THMndxC11LjbbEExG4ekBRFvRsOOf0pBps3Yr4ry27gaj4+9Ap2JCKKOQwm0izh48AJiy0Y8pzIzTO5wB5B7a4czLJmzaNWkPVXw4lKg2ldJ4sd6EBqUZqG2vRmN6VwHb8gHFNaQTH3feBRhYTpkv1wWUuhvclNn5yoZzcSxMT/b8d89e5DahoBYMW48c6jb5wL/EoY3bHp3mjtnTW8oIIjyZK8FjYX+8IqeEoue8bDDqNUN71xmRvp+0CX1iXnfgUeDWnYhXHTewOlJu6i509wGrZPxYjgwAdnpfTyGXPq7Vin9CkNHMw9fbA= before_cache: - rm -f $HOME/.gradle/caches/modules-2/modules-2.lock - rm -rf $HOME/.gradle/caches/*/plugin-resolution/ @@ -27,21 +27,27 @@ script: - "./gradlew clean test build connectedCheck" after_failure: cat $TRAVIS_BUILD_DIR/SWADroid/build/reports/lint-results.xml before_deploy: -- openssl aes-256-cbc -K $encrypted_855ad244b8b2_key -iv $encrypted_855ad244b8b2_iv -in keystore.jks.enc -out keystore.jks -d +- openssl aes-256-cbc -K $encrypted_855ad244b8b2_key -iv $encrypted_855ad244b8b2_iv + -in keystore.jks.enc -out keystore.jks -d - cd SWADroid/build/outputs/apk/release -- jarsigner -sigalg SHA1withRSA -digestalg SHA1 -keystore ${TRAVIS_BUILD_DIR}/keystore.jks -storepass $storepass -keypass $keypass SWADroid-release-unsigned.apk amab +- jarsigner -sigalg SHA1withRSA -digestalg SHA1 -keystore ${TRAVIS_BUILD_DIR}/keystore.jks + -storepass $storepass -keypass $keypass SWADroid-release-unsigned.apk amab - jarsigner -verify SWADroid-release-unsigned.apk -- "${ANDROID_HOME}/build-tools/${ANDROID_BUILD_TOOLS}/zipalign -p 4 SWADroid-release-unsigned.apk SWADroid-release.apk" +- "${ANDROID_HOME}/build-tools/${ANDROID_BUILD_TOOLS}/zipalign -p 4 SWADroid-release-unsigned.apk + SWADroid-release.apk" deploy: provider: releases api_key: secure: ePphqb/bHjJC1wwlVfw3DNOZtluX7B/3G8a8uWDkDIBpKHqCykpnXUNmgnWEO9iQ+GUmSdkAHn+z9tKv+MAdBRgSw2Xfc8sEsj6lsWUjJxHk7/eQOdzE0FC8y8WjrKHpwbFEJAi03YId/0ruIBltMzCWyylxMTAXonrL9yAvGn9EL5m1y1Fap58XNUmDwnP+4yoTfTuXOOJrmppFGUKlR22xhI6j/zvVW1LeyA7kpp42X/76rgnSS78Fj4s/O8kN0aa6c9PM38rWg1TqgBRRuV+2PMWmZn3EfjdzBl2d+D5pJ+gPS9e+gSWpKtTkatZ+CKwSBvQSpNE6K7B1FSCSR+Gy9FtnnH0BMyeP71kMFDgU+zagZjuQZnVgRAIDYdaquNq52EwcStXV5LrqpzNpkgAfrNOSVfLZWS1eEkGy6q8WqpvBO8OcnseaiaNl4VNNRZn1e7FziDZHkA/SCr3aLOVYp4FkVK7Z+yiH2EbLJ5SeKuPWv7pEbBmNR7lzsZGZ0Rt6FmVN3yuA1/4oIN0zgdSwNEoqYGRXqG0bNeghwjLPCkpMJ3W8h82fblX40hk/f3bB3aGN9BX/oBa06MEFTSxUtp4pwfhRQVe0/13+oR2G6yei+fuGJSsil6FmaOB0jNoMvtMLI0IhQ47AflRW4QfAHnO+lbfP8ZmWdLgBidk= - file: $TRAVIS_BUILD_DIR/SWADroid/build/outputs/apk/release/SWADroid-release.apk + file: "$TRAVIS_BUILD_DIR/SWADroid/build/outputs/apk/release/SWADroid-release.apk" skip_cleanup: true name: SWADroid $TRAVIS_TAG body: Automated release from Travis CI. - target_commitsh: $TRAVIS_COMMIT + target_commitsh: "$TRAVIS_COMMIT" on: tags: true repo: Amab/SWADroid branch: master +notifications: + slack: + secure: FDRqQsWyWvSg3uXYV1jtxh209yYdE9wqMRx2Jmf9ivRMowSDqAfLaOD8hlAjD/DnBCBhVpSkOzT4+treByU1qpLXcWBpewl1GukK3jD6AoqD4Xtmp3xOAJsG1BvqeYp48Q95lZFgZ8WxV2IXO4/rAi3GcCDKVYGs3fEEwk/aVEfFDyHE7oT+mruZqrFHbwcPbObTucJWjFLu+VdCSdJ6HTN/gm/04TVg5ox0fqeyxqyAxW3QOEu/2EUOZ78ijrab7+Cn32KluoTlTDJY0+iSszYQll08+g2LsJruyzqWJzp8y0jZMs23e63ge16WrnzCHknTFIUXNG8/OVwCb2gsBA+RIchqEWLiKuOPtkSTZoMCqulDPYVOdGBJbv1CdJW4TKNmnLfsA9EMHlcv+50zcz7rq9115i4qPsous0gKw8Bc+tSL3S28YP81J8UmvTeQjAPgC7iQIeXHNvPpM62hP2v/sK9BUhmsfrFopeQGPVY5vLKXvAF+dJHuyUNK1T17iVyxa55D9Et6QeHqLsHgLKUx22RW128a0FuaFwD1EIKNuj0q+Fn8DNcXtyHoKVdGCD/K3nbDPwx+IsIvHTJfPwDL/cX8eXj+ggK32nuJVQwXLDMloz3xFKe+wO19/7kMzyKQD4Brq4xX2qQ3fiE5uRj6BIxJ2q8wuey3uuJMPVA= From 17098684802d0f7c54bb68f143b05456cc81ab19 Mon Sep 17 00:00:00 2001 From: Juan Miguel Boyero Corral Date: Thu, 7 Jun 2018 18:38:35 +0200 Subject: [PATCH 13/23] Update SDK to final release 28 (#242) Update SDK to final release 28 --- .travis.yml | 4 ++-- SWADroid/build.gradle | 11 ++++++----- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/.travis.yml b/.travis.yml index 4cd013369..674aeafa1 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,8 +3,8 @@ language: android jdk: oraclejdk8 env: global: - - ANDROID_API=P - - ANDROID_BUILD_TOOLS=28.0.0-rc2 + - ANDROID_API=28 + - ANDROID_BUILD_TOOLS=28.0.0 - secure: eY3bGKw4jZ+HHkkMBZHiL2dhcz+RJYHib0WC77SSVHLJcCg63pBvs420i4rjNQHycMs+PhRSlR79jdglDTm8svphhRjSts6VMkHDxObwJIyLF8vAZ0PfjhqfOXO+4+Fx6pRIjwM7cBMOQrDfSimJHRB+z/f2AJfUIsaMSlltGVya7nmrLY/fO4dtl4wPnejslj3mhnBAxr+a2Or978RwI2TMpxBovHZKFT/46wJTcMzKXGdXU64M8nmQmpcKHeIKIBiR4g+A2tahC+Us4tFxxoTDd3R+IAzj7Gvjd5JuMlYmQ3quRv2M08u9OJNiT14LpDXy19fZKdw/QNHg3S8JVis8kJDkv6z4HyZXTIBgISZpCZZti04GP29Lj+1f4ISRFc6uxankDuRgfX8ucsxoEPJVq3PfJlpTdP7wjlQtEGv0HF/3MNNyruNbLHFiCgHOANwEOX44INtw6XylPEftmw4y4ptntFG3VXyV1Zi+732Qe4b2QNTbvLPrsmkCRKzo59vKKAzBBhvYvFVITcWbySqdx9/n1H25SRL2Q96nPGQSQyBF6obzzFcjMKkknPle1PXvAfb171964cdIK6/zo9rh/ZCL3+gAKZibmGWvbeztWYl5ON8B8x8mgLO/qgPIotY+aqwmsY06pKrqi6adYZacMF+UgtbLJlhnird6ugk= - secure: EmcSyXk/5pEJhbRX9DSFzhQGYvGaYdxjDuQwmLuxUGitGpFQZbWexTAK/l0LLcIRsiSmucY7KJgOpL7I6odh2kVUZedarj8/5K1P69ljDDB7bfG8jyOLZvHJ1JTZRuKvUnT846zQwQWTnLXF9N4LaQ86FVqSW2bGHqptIivEjDEVh78V3g4PDsbX5aQ5LjTlSn7bezu9chpVS0fnRlqjAa6U2kUwUt+DDaSHEOs35Z89jT7JoonGFrMsyA7S26CQhOBYE3w76AllIea+MWzPJX3V364ZIzPBnQAkCz02oVI3n+LHZkzUCYHkY8DXWXNy6+/sulFa6L1v6bt8DzF1vwJ+nTNVqmqSDYBe2s1qAUZ+4o8l/THMndxC11LjbbEExG4ekBRFvRsOOf0pBps3Yr4ry27gaj4+9Ap2JCKKOQwm0izh48AJiy0Y8pzIzTO5wB5B7a4czLJmzaNWkPVXw4lKg2ldJ4sd6EBqUZqG2vRmN6VwHb8gHFNaQTH3feBRhYTpkv1wWUuhvclNn5yoZzcSxMT/b8d89e5DahoBYMW48c6jb5wL/EoY3bHp3mjtnTW8oIIjyZK8FjYX+8IqeEoue8bDDqNUN71xmRvp+0CX1iXnfgUeDWnYhXHTewOlJu6i509wGrZPxYjgwAdnpfTyGXPq7Vin9CkNHMw9fbA= before_cache: diff --git a/SWADroid/build.gradle b/SWADroid/build.gradle index 4fb6433c5..61ccb0a02 100644 --- a/SWADroid/build.gradle +++ b/SWADroid/build.gradle @@ -25,7 +25,8 @@ def static getBuildConfigField(String property){ } android { - compileSdkVersion "android-P" + compileSdkVersion "android-28" + buildToolsVersion '28.0.0' dexOptions { maxProcessCount=2 @@ -42,7 +43,7 @@ android { versionName gitVersionName minSdkVersion 14 - targetSdkVersion "P" + targetSdkVersion 28 testApplicationId "es.ugr.swad.swadroid.test" testInstrumentationRunner "android.test.InstrumentationTestRunner" @@ -58,9 +59,9 @@ android { // TODO Switch to release versions when Android P is released dependencies { - implementation 'com.android.support:support-v4:28.0.0-alpha1' - implementation 'com.android.support:appcompat-v7:28.0.0-alpha1' - implementation 'com.google.android.gms:play-services-analytics:15.0.2' + implementation 'com.android.support:support-v4:28.0.0-alpha3' + implementation 'com.android.support:appcompat-v7:28.0.0-alpha3' + implementation 'com.google.android.gms:play-services-analytics:16.0.0' implementation 'com.google.code.ksoap2-android:ksoap2-android:3.6.2' implementation 'commons-io:commons-io:2.6' implementation 'com.nostra13.universalimageloader:universal-image-loader:1.9.5' From 8d041061499ca89c860465392842de980f6a712c Mon Sep 17 00:00:00 2001 From: Juan Miguel Boyero Corral Date: Fri, 8 Jun 2018 22:15:59 +0200 Subject: [PATCH 14/23] Update gradle plugin (#243) * Update gradle plugin * Remove ignored file --- SWADroid.iml | 19 ------------------- SWADroid/build.gradle | 2 +- build.gradle | 2 +- 3 files changed, 2 insertions(+), 21 deletions(-) delete mode 100644 SWADroid.iml diff --git a/SWADroid.iml b/SWADroid.iml deleted file mode 100644 index 1f5a327f0..000000000 --- a/SWADroid.iml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/SWADroid/build.gradle b/SWADroid/build.gradle index 61ccb0a02..be7131bdc 100644 --- a/SWADroid/build.gradle +++ b/SWADroid/build.gradle @@ -57,7 +57,7 @@ android { } } -// TODO Switch to release versions when Android P is released +// TODO Switch to release versions dependencies { implementation 'com.android.support:support-v4:28.0.0-alpha3' implementation 'com.android.support:appcompat-v7:28.0.0-alpha3' diff --git a/build.gradle b/build.gradle index d1afe4b4b..261a4d3de 100644 --- a/build.gradle +++ b/build.gradle @@ -5,7 +5,7 @@ buildscript { google() } dependencies { - classpath 'com.android.tools.build:gradle:3.1.2' + classpath 'com.android.tools.build:gradle:3.1.3' classpath 'org.ajoberstar:grgit:2.1.1' } } From 2cb2d05c34a8fc7138d3d1e517a36b8cfc26fc7a Mon Sep 17 00:00:00 2001 From: Juan Miguel Boyero Corral Date: Thu, 6 Sep 2018 19:18:42 +0200 Subject: [PATCH 15/23] Update issue templates (#244) * Update issue templates * Remove old issue template * Refactor templates --- .../CODE_OF_CONDUCT.md | 0 CONTRIBUTING.md => .github/CONTRIBUTING.md | 0 .github/ISSUE_TEMPLATE/bug_report.md | 35 ++++++++++++++++ .github/ISSUE_TEMPLATE/feature_request.md | 17 ++++++++ .../PULL_REQUEST_TEMPLATE.md | 0 ISSUE_TEMPLATE.md | 42 ------------------- 6 files changed, 52 insertions(+), 42 deletions(-) rename CODE_OF_CONDUCT.md => .github/CODE_OF_CONDUCT.md (100%) rename CONTRIBUTING.md => .github/CONTRIBUTING.md (100%) create mode 100644 .github/ISSUE_TEMPLATE/bug_report.md create mode 100644 .github/ISSUE_TEMPLATE/feature_request.md rename PULL_REQUEST_TEMPLATE.md => .github/PULL_REQUEST_TEMPLATE.md (100%) delete mode 100644 ISSUE_TEMPLATE.md diff --git a/CODE_OF_CONDUCT.md b/.github/CODE_OF_CONDUCT.md similarity index 100% rename from CODE_OF_CONDUCT.md rename to .github/CODE_OF_CONDUCT.md diff --git a/CONTRIBUTING.md b/.github/CONTRIBUTING.md similarity index 100% rename from CONTRIBUTING.md rename to .github/CONTRIBUTING.md diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 000000000..b73537336 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,35 @@ +--- +name: Bug report +about: Create a report to help us improve + +--- + +**Describe the bug** +A clear and concise description of what the bug is. + +**To Reproduce** +Steps to reproduce the behavior: +1. Go to '...' +2. Click on '....' +3. Scroll down to '....' +4. See error + +**Expected behavior** +A clear and concise description of what you expected to happen. + +**Screenshots** +If applicable, add screenshots to help explain your problem. + +**Desktop (please complete the following information):** + - OS: [e.g. iOS] + - Browser [e.g. chrome, safari] + - Version [e.g. 22] + +**Smartphone (please complete the following information):** + - Device: [e.g. iPhone6] + - OS: [e.g. iOS8.1] + - Browser [e.g. stock browser, safari] + - Version [e.g. 22] + +**Additional context** +Add any other context about the problem here. diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 000000000..066b2d920 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,17 @@ +--- +name: Feature request +about: Suggest an idea for this project + +--- + +**Is your feature request related to a problem? Please describe.** +A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] + +**Describe the solution you'd like** +A clear and concise description of what you want to happen. + +**Describe alternatives you've considered** +A clear and concise description of any alternative solutions or features you've considered. + +**Additional context** +Add any other context or screenshots about the feature request here. diff --git a/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md similarity index 100% rename from PULL_REQUEST_TEMPLATE.md rename to .github/PULL_REQUEST_TEMPLATE.md diff --git a/ISSUE_TEMPLATE.md b/ISSUE_TEMPLATE.md deleted file mode 100644 index 559ffd1a7..000000000 --- a/ISSUE_TEMPLATE.md +++ /dev/null @@ -1,42 +0,0 @@ - - -## Expected Behavior - - - -## Current Behavior - - - -## Possible Solution - - - -## Steps to Reproduce (for bugs) - - - -1. - -2. - -3. - -4. - -## Context - - - -## Environment data - - -Android version: - -Device model: - -Stock or customized system: - -SWADroid app version: - -SWAD server URL: From ea01cc50576085732830be83cf15c956982cd3f3 Mon Sep 17 00:00:00 2001 From: Juan Miguel Boyero Corral Date: Tue, 25 Sep 2018 20:14:56 +0200 Subject: [PATCH 16/23] Support for Android 9 (#245) * Update Android Build Tools and dependencies * Update Android dependencies --- .travis.yml | 2 +- SWADroid/build.gradle | 9 ++++----- build.gradle | 2 +- gradle/wrapper/gradle-wrapper.properties | 4 ++-- 4 files changed, 8 insertions(+), 9 deletions(-) diff --git a/.travis.yml b/.travis.yml index 674aeafa1..00613b9f1 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,7 +4,7 @@ jdk: oraclejdk8 env: global: - ANDROID_API=28 - - ANDROID_BUILD_TOOLS=28.0.0 + - ANDROID_BUILD_TOOLS=28.0.2 - secure: eY3bGKw4jZ+HHkkMBZHiL2dhcz+RJYHib0WC77SSVHLJcCg63pBvs420i4rjNQHycMs+PhRSlR79jdglDTm8svphhRjSts6VMkHDxObwJIyLF8vAZ0PfjhqfOXO+4+Fx6pRIjwM7cBMOQrDfSimJHRB+z/f2AJfUIsaMSlltGVya7nmrLY/fO4dtl4wPnejslj3mhnBAxr+a2Or978RwI2TMpxBovHZKFT/46wJTcMzKXGdXU64M8nmQmpcKHeIKIBiR4g+A2tahC+Us4tFxxoTDd3R+IAzj7Gvjd5JuMlYmQ3quRv2M08u9OJNiT14LpDXy19fZKdw/QNHg3S8JVis8kJDkv6z4HyZXTIBgISZpCZZti04GP29Lj+1f4ISRFc6uxankDuRgfX8ucsxoEPJVq3PfJlpTdP7wjlQtEGv0HF/3MNNyruNbLHFiCgHOANwEOX44INtw6XylPEftmw4y4ptntFG3VXyV1Zi+732Qe4b2QNTbvLPrsmkCRKzo59vKKAzBBhvYvFVITcWbySqdx9/n1H25SRL2Q96nPGQSQyBF6obzzFcjMKkknPle1PXvAfb171964cdIK6/zo9rh/ZCL3+gAKZibmGWvbeztWYl5ON8B8x8mgLO/qgPIotY+aqwmsY06pKrqi6adYZacMF+UgtbLJlhnird6ugk= - secure: EmcSyXk/5pEJhbRX9DSFzhQGYvGaYdxjDuQwmLuxUGitGpFQZbWexTAK/l0LLcIRsiSmucY7KJgOpL7I6odh2kVUZedarj8/5K1P69ljDDB7bfG8jyOLZvHJ1JTZRuKvUnT846zQwQWTnLXF9N4LaQ86FVqSW2bGHqptIivEjDEVh78V3g4PDsbX5aQ5LjTlSn7bezu9chpVS0fnRlqjAa6U2kUwUt+DDaSHEOs35Z89jT7JoonGFrMsyA7S26CQhOBYE3w76AllIea+MWzPJX3V364ZIzPBnQAkCz02oVI3n+LHZkzUCYHkY8DXWXNy6+/sulFa6L1v6bt8DzF1vwJ+nTNVqmqSDYBe2s1qAUZ+4o8l/THMndxC11LjbbEExG4ekBRFvRsOOf0pBps3Yr4ry27gaj4+9Ap2JCKKOQwm0izh48AJiy0Y8pzIzTO5wB5B7a4czLJmzaNWkPVXw4lKg2ldJ4sd6EBqUZqG2vRmN6VwHb8gHFNaQTH3feBRhYTpkv1wWUuhvclNn5yoZzcSxMT/b8d89e5DahoBYMW48c6jb5wL/EoY3bHp3mjtnTW8oIIjyZK8FjYX+8IqeEoue8bDDqNUN71xmRvp+0CX1iXnfgUeDWnYhXHTewOlJu6i509wGrZPxYjgwAdnpfTyGXPq7Vin9CkNHMw9fbA= before_cache: diff --git a/SWADroid/build.gradle b/SWADroid/build.gradle index be7131bdc..8daea2ab6 100644 --- a/SWADroid/build.gradle +++ b/SWADroid/build.gradle @@ -26,7 +26,7 @@ def static getBuildConfigField(String property){ android { compileSdkVersion "android-28" - buildToolsVersion '28.0.0' + buildToolsVersion '28.0.2' dexOptions { maxProcessCount=2 @@ -57,11 +57,10 @@ android { } } -// TODO Switch to release versions dependencies { - implementation 'com.android.support:support-v4:28.0.0-alpha3' - implementation 'com.android.support:appcompat-v7:28.0.0-alpha3' - implementation 'com.google.android.gms:play-services-analytics:16.0.0' + implementation 'com.android.support:support-v4:28.0.0' + implementation 'com.android.support:appcompat-v7:28.0.0' + implementation 'com.google.android.gms:play-services-analytics:16.0.3' implementation 'com.google.code.ksoap2-android:ksoap2-android:3.6.2' implementation 'commons-io:commons-io:2.6' implementation 'com.nostra13.universalimageloader:universal-image-loader:1.9.5' diff --git a/build.gradle b/build.gradle index 261a4d3de..2d0043652 100644 --- a/build.gradle +++ b/build.gradle @@ -5,7 +5,7 @@ buildscript { google() } dependencies { - classpath 'com.android.tools.build:gradle:3.1.3' + classpath 'com.android.tools.build:gradle:3.2.0' classpath 'org.ajoberstar:grgit:2.1.1' } } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index daa06aa1f..0b8ead1e5 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Tue Apr 03 01:52:04 CEST 2018 +#Tue Sep 25 19:19:50 CEST 2018 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip From 4bee25297cded03d9490eee235544ae3d33be522 Mon Sep 17 00:00:00 2001 From: Juan Miguel Boyero Corral Date: Sun, 31 Mar 2019 16:52:39 +0200 Subject: [PATCH 17/23] Update dependencies (#246) --- .gitignore | 65 ++++++++++++++++++++---- .travis.yml | 2 +- SWADroid/build.gradle | 12 ++--- build.gradle | 2 +- gradle/wrapper/gradle-wrapper.properties | 4 +- 5 files changed, 65 insertions(+), 20 deletions(-) diff --git a/.gitignore b/.gitignore index 56a12b378..dc240ac0a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,12 +1,57 @@ -.idea -.gradle -build -import-summary.txt +# Built application files +*.apk +*.ap_ +*.aab + +# Files for the ART/Dalvik VM +*.dex + +# Java class files +*.class + +# Generated files +bin/ +gen/ +out/ + +# Gradle files +.gradle/ +build/ + +# Local configuration file (sdk path, etc) local.properties -/SWADroid/SWADroid-SWADroid.iml -/SWADroid.iml -app/lint.xml -/SWADroid/google-services.json keystore.properties -/SWADroid/release/ -keystore.jks + +# Proguard folder generated by Eclipse +proguard/ + +# Log Files +*.log + +# Android Studio Navigation editor temp files +.navigation/ + +# Android Studio captures folder +captures/ + +# IntelliJ +*.iml +.idea/ + +# Keystore files +# Uncomment the following lines if you do not want to check your keystore files in. +*.jks +*.keystore + +# External native build folder generated in Android Studio 2.2 and later +.externalNativeBuild + +# Google Services (e.g. APIs or Firebase) +# google-services.json + +# lint +lint/intermediates/ +lint/generated/ +lint/outputs/ +lint/tmp/ +# lint/reports/ diff --git a/.travis.yml b/.travis.yml index 00613b9f1..fbef199d9 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,7 +4,7 @@ jdk: oraclejdk8 env: global: - ANDROID_API=28 - - ANDROID_BUILD_TOOLS=28.0.2 + - ANDROID_BUILD_TOOLS=28.0.3 - secure: eY3bGKw4jZ+HHkkMBZHiL2dhcz+RJYHib0WC77SSVHLJcCg63pBvs420i4rjNQHycMs+PhRSlR79jdglDTm8svphhRjSts6VMkHDxObwJIyLF8vAZ0PfjhqfOXO+4+Fx6pRIjwM7cBMOQrDfSimJHRB+z/f2AJfUIsaMSlltGVya7nmrLY/fO4dtl4wPnejslj3mhnBAxr+a2Or978RwI2TMpxBovHZKFT/46wJTcMzKXGdXU64M8nmQmpcKHeIKIBiR4g+A2tahC+Us4tFxxoTDd3R+IAzj7Gvjd5JuMlYmQ3quRv2M08u9OJNiT14LpDXy19fZKdw/QNHg3S8JVis8kJDkv6z4HyZXTIBgISZpCZZti04GP29Lj+1f4ISRFc6uxankDuRgfX8ucsxoEPJVq3PfJlpTdP7wjlQtEGv0HF/3MNNyruNbLHFiCgHOANwEOX44INtw6XylPEftmw4y4ptntFG3VXyV1Zi+732Qe4b2QNTbvLPrsmkCRKzo59vKKAzBBhvYvFVITcWbySqdx9/n1H25SRL2Q96nPGQSQyBF6obzzFcjMKkknPle1PXvAfb171964cdIK6/zo9rh/ZCL3+gAKZibmGWvbeztWYl5ON8B8x8mgLO/qgPIotY+aqwmsY06pKrqi6adYZacMF+UgtbLJlhnird6ugk= - secure: EmcSyXk/5pEJhbRX9DSFzhQGYvGaYdxjDuQwmLuxUGitGpFQZbWexTAK/l0LLcIRsiSmucY7KJgOpL7I6odh2kVUZedarj8/5K1P69ljDDB7bfG8jyOLZvHJ1JTZRuKvUnT846zQwQWTnLXF9N4LaQ86FVqSW2bGHqptIivEjDEVh78V3g4PDsbX5aQ5LjTlSn7bezu9chpVS0fnRlqjAa6U2kUwUt+DDaSHEOs35Z89jT7JoonGFrMsyA7S26CQhOBYE3w76AllIea+MWzPJX3V364ZIzPBnQAkCz02oVI3n+LHZkzUCYHkY8DXWXNy6+/sulFa6L1v6bt8DzF1vwJ+nTNVqmqSDYBe2s1qAUZ+4o8l/THMndxC11LjbbEExG4ekBRFvRsOOf0pBps3Yr4ry27gaj4+9Ap2JCKKOQwm0izh48AJiy0Y8pzIzTO5wB5B7a4czLJmzaNWkPVXw4lKg2ldJ4sd6EBqUZqG2vRmN6VwHb8gHFNaQTH3feBRhYTpkv1wWUuhvclNn5yoZzcSxMT/b8d89e5DahoBYMW48c6jb5wL/EoY3bHp3mjtnTW8oIIjyZK8FjYX+8IqeEoue8bDDqNUN71xmRvp+0CX1iXnfgUeDWnYhXHTewOlJu6i509wGrZPxYjgwAdnpfTyGXPq7Vin9CkNHMw9fbA= before_cache: diff --git a/SWADroid/build.gradle b/SWADroid/build.gradle index 8daea2ab6..a6314d5f1 100644 --- a/SWADroid/build.gradle +++ b/SWADroid/build.gradle @@ -26,7 +26,7 @@ def static getBuildConfigField(String property){ android { compileSdkVersion "android-28" - buildToolsVersion '28.0.2' + buildToolsVersion '28.0.3' dexOptions { maxProcessCount=2 @@ -60,11 +60,11 @@ android { dependencies { implementation 'com.android.support:support-v4:28.0.0' implementation 'com.android.support:appcompat-v7:28.0.0' - implementation 'com.google.android.gms:play-services-analytics:16.0.3' - implementation 'com.google.code.ksoap2-android:ksoap2-android:3.6.2' + implementation 'com.google.android.gms:play-services-analytics:16.0.8' + implementation 'com.google.code.ksoap2-android:ksoap2-android:3.6.4' implementation 'commons-io:commons-io:2.6' implementation 'com.nostra13.universalimageloader:universal-image-loader:1.9.5' - implementation 'com.journeyapps:zxing-android-embedded:3.5.0@aar' - implementation 'com.google.zxing:core:3.3.2' - implementation 'com.google.code.gson:gson:2.8.2' + implementation 'com.journeyapps:zxing-android-embedded:3.6.0@aar' + implementation 'com.google.zxing:core:3.3.3' + implementation 'com.google.code.gson:gson:2.8.5' } \ No newline at end of file diff --git a/build.gradle b/build.gradle index 2d0043652..a471d87ec 100644 --- a/build.gradle +++ b/build.gradle @@ -5,7 +5,7 @@ buildscript { google() } dependencies { - classpath 'com.android.tools.build:gradle:3.2.0' + classpath 'com.android.tools.build:gradle:3.3.2' classpath 'org.ajoberstar:grgit:2.1.1' } } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 0b8ead1e5..3052942fe 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Tue Sep 25 19:19:50 CEST 2018 +#Mon Jan 14 20:17:20 CET 2019 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.1-all.zip From 80552ce4f3ab9e6a0cc2e9979ab32e12eb4bb112 Mon Sep 17 00:00:00 2001 From: Juan Miguel Boyero Corral Date: Thu, 2 May 2019 18:38:45 +0200 Subject: [PATCH 18/23] Switch from Google Analytics to Firebase (#247) * Switch from Google Analytics to Firebase * Fix google-services.json.enc path * Fix google-services.json.enc path (try 2) * Fix google-services.json.enc path (try 3) * Fix google-services.json.enc path (try 4) * Fix google-services.json.enc path (try 5) * Fix google-services.json.enc path (try 6) * Fix Android Build Tools version * Fix BuildConfigField SWAD_APP_KEY --- .gitignore | 1 + .travis.yml | 5 +- SWADroid/build.gradle | 31 +++- SWADroid/google-services.json | 51 +++++ .../java/es/ugr/swad/swadroid/Config.java | 4 - .../java/es/ugr/swad/swadroid/SWADMain.java | 7 +- .../swadroid/analytics/SWADroidTracker.java | 175 ------------------ .../ugr/swad/swadroid/analytics/package.html | 7 - .../swadroid/database/DataBaseHelper.java | 16 +- .../ugr/swad/swadroid/gui/DialogFactory.java | 10 +- .../ugr/swad/swadroid/gui/MenuActivity.java | 8 +- .../gui/MenuExpandableListActivity.java | 8 +- .../es/ugr/swad/swadroid/modules/Module.java | 13 +- .../modules/account/CreateAccount.java | 6 + .../account/CreateAccountActivity.java | 5 +- .../swadroid/modules/courses/Courses.java | 10 +- .../modules/downloads/DirectoryNavigator.java | 16 +- .../modules/downloads/DownloadsManager.java | 2 - .../downloads/FileDownloaderAsyncTask.java | 4 - .../swadroid/modules/downloads/GetFile.java | 5 +- .../swadroid/modules/groups/GroupTypes.java | 5 +- .../swad/swadroid/modules/groups/Groups.java | 5 +- .../modules/groups/MyGroupsManager.java | 3 - .../swadroid/modules/groups/SendMyGroups.java | 2 +- .../modules/information/Information.java | 4 +- .../swad/swadroid/modules/login/Login.java | 6 + .../swadroid/modules/login/LoginActivity.java | 6 - .../swad/swadroid/modules/marks/GetMarks.java | 3 - .../swad/swadroid/modules/marks/Marks.java | 3 - .../swadroid/modules/messages/Messages.java | 9 +- .../modules/messages/SearchUsers.java | 7 - .../swadroid/modules/notices/Notices.java | 5 +- .../notifications/NotificationItem.java | 2 - .../modules/notifications/Notifications.java | 6 +- .../NotificationsMarkAllAsRead.java | 8 - .../NotificationsSyncAdapterService.java | 16 +- .../swad/swadroid/modules/qr/GenerateQR.java | 5 +- .../modules/rollcall/EventsDownload.java | 2 +- .../swadroid/modules/rollcall/Rollcall.java | 2 - .../modules/rollcall/UsersActivity.java | 4 +- .../modules/rollcall/UsersDownload.java | 2 +- .../swadroid/modules/rollcall/UsersSend.java | 2 +- .../swad/swadroid/modules/tests/Tests.java | 3 - .../modules/tests/TestsConfigDownload.java | 2 +- .../swadroid/modules/tests/TestsMake.java | 16 -- .../swadroid/preferences/Preferences.java | 2 - .../preferences/PreferencesActivity.java | 38 ++-- .../es/ugr/swad/swadroid/utils/Crypto.java | 11 +- .../es/ugr/swad/swadroid/utils/OldCrypto.java | 11 +- SWADroid/src/prod/google-services.json.enc | Bin 0 -> 1056 bytes build.gradle | 3 +- gradle/wrapper/gradle-wrapper.properties | 4 +- 52 files changed, 179 insertions(+), 402 deletions(-) create mode 100644 SWADroid/google-services.json delete mode 100644 SWADroid/src/main/java/es/ugr/swad/swadroid/analytics/SWADroidTracker.java delete mode 100644 SWADroid/src/main/java/es/ugr/swad/swadroid/analytics/package.html create mode 100644 SWADroid/src/prod/google-services.json.enc diff --git a/.gitignore b/.gitignore index dc240ac0a..53808b22b 100644 --- a/.gitignore +++ b/.gitignore @@ -55,3 +55,4 @@ lint/generated/ lint/outputs/ lint/tmp/ # lint/reports/ +/SWADroid/src/debug/ diff --git a/.travis.yml b/.travis.yml index fbef199d9..2a84953bd 100644 --- a/.travis.yml +++ b/.travis.yml @@ -16,6 +16,9 @@ cache: - "$HOME/.gradle/wrapper/" - "$HOME/.android/build-cache" before_install: +- openssl aes-256-cbc -K $encrypted_b7f76037f2f7_key -iv $encrypted_b7f76037f2f7_iv + -in $TRAVIS_BUILD_DIR/SWADroid/src/prod/google-services.json.enc + -out $TRAVIS_BUILD_DIR/SWADroid/src/prod/google-services.json -d - yes | sdkmanager "build-tools;${ANDROID_BUILD_TOOLS}" - yes | sdkmanager "platform-tools" - yes | sdkmanager "tools" @@ -24,7 +27,7 @@ before_install: - yes | sdkmanager --list - chmod +x gradlew script: -- "./gradlew clean test build connectedCheck" +- "./gradlew clean test build connectedCheck -Pbuild=prod" after_failure: cat $TRAVIS_BUILD_DIR/SWADroid/build/reports/lint-results.xml before_deploy: - openssl aes-256-cbc -K $encrypted_855ad244b8b2_key -iv $encrypted_855ad244b8b2_iv diff --git a/SWADroid/build.gradle b/SWADroid/build.gradle index a6314d5f1..6060a7cd1 100644 --- a/SWADroid/build.gradle +++ b/SWADroid/build.gradle @@ -1,4 +1,5 @@ apply plugin: 'com.android.application' +apply plugin: 'com.google.gms.google-services' import org.ajoberstar.grgit.Grgit @@ -24,9 +25,27 @@ def static getBuildConfigField(String property){ return value } +def build_param = "${build}"; + +if (build_param != "prod") { + //exclude development build + android.variantFilter { variant -> + if (variant.buildType.name.equals('prod')) { + variant.setIgnore(true); + } + } +} else { + //exclude all except development build + android.variantFilter { variant -> + if (!variant.buildType.name.equals('prod')) { + variant.setIgnore(true); + } + } +} + android { compileSdkVersion "android-28" - buildToolsVersion '28.0.3' + buildToolsVersion '29.0.0-rc2' dexOptions { maxProcessCount=2 @@ -47,12 +66,14 @@ android { testApplicationId "es.ugr.swad.swadroid.test" testInstrumentationRunner "android.test.InstrumentationTestRunner" + + buildConfigField "String", "SWAD_APP_KEY", getBuildConfigField("SWAD_APP_KEY") } buildTypes { - buildTypes.each { - it.buildConfigField "String", "SWAD_APP_KEY", getBuildConfigField("SWAD_APP_KEY") - it.buildConfigField "String", "ANALYTICS_API_KEY", getBuildConfigField("ANALYTICS_API_KEY") + prod { + minifyEnabled true + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } @@ -60,11 +81,11 @@ android { dependencies { implementation 'com.android.support:support-v4:28.0.0' implementation 'com.android.support:appcompat-v7:28.0.0' - implementation 'com.google.android.gms:play-services-analytics:16.0.8' implementation 'com.google.code.ksoap2-android:ksoap2-android:3.6.4' implementation 'commons-io:commons-io:2.6' implementation 'com.nostra13.universalimageloader:universal-image-loader:1.9.5' implementation 'com.journeyapps:zxing-android-embedded:3.6.0@aar' implementation 'com.google.zxing:core:3.3.3' implementation 'com.google.code.gson:gson:2.8.5' + implementation 'com.google.firebase:firebase-core:16.0.8' } \ No newline at end of file diff --git a/SWADroid/google-services.json b/SWADroid/google-services.json new file mode 100644 index 000000000..2edee4c46 --- /dev/null +++ b/SWADroid/google-services.json @@ -0,0 +1,51 @@ +{ + "project_info": { + "project_number": "", + "project_id": "" + }, + "client": [ + { + "client_info": { + "mobilesdk_app_id": "1:123456789012:android:1234567890123456", + "android_client_info": { + "package_name": "es.ugr.swad.swadroid" + } + }, + "oauth_client": [ + { + "client_id": "", + "client_type": 3 + }, + { + "client_id": "", + "client_type": 1, + "android_info": { + "package_name": "es.ugr.swad.swadroid", + "certificate_hash": "" + } + } + ], + "api_key": [ + { + "current_key": "" + } + ], + "services": { + "analytics_service": { + "status": 2, + "analytics_property": { + "tracking_id": "" + } + }, + "appinvite_service": { + "status": 1, + "other_platform_oauth_client": [] + }, + "ads_service": { + "status": 1 + } + } + } + ], + "configuration_version": "1" +} \ No newline at end of file diff --git a/SWADroid/src/main/java/es/ugr/swad/swadroid/Config.java b/SWADroid/src/main/java/es/ugr/swad/swadroid/Config.java index 5752c00f4..7788c3ac9 100644 --- a/SWADroid/src/main/java/es/ugr/swad/swadroid/Config.java +++ b/SWADroid/src/main/java/es/ugr/swad/swadroid/Config.java @@ -28,8 +28,4 @@ public class Config { * SWAD application key */ public static final String SWAD_APP_KEY = BuildConfig.SWAD_APP_KEY; - /** - * Google Analytics application key - */ - public static final String ANALYTICS_API_KEY = BuildConfig.ANALYTICS_API_KEY; } diff --git a/SWADroid/src/main/java/es/ugr/swad/swadroid/SWADMain.java b/SWADroid/src/main/java/es/ugr/swad/swadroid/SWADMain.java index 98b463370..94b849cc6 100644 --- a/SWADroid/src/main/java/es/ugr/swad/swadroid/SWADMain.java +++ b/SWADroid/src/main/java/es/ugr/swad/swadroid/SWADMain.java @@ -49,7 +49,6 @@ import java.util.List; import java.util.Map; -import es.ugr.swad.swadroid.analytics.SWADroidTracker; import es.ugr.swad.swadroid.database.DataBaseHelper; import es.ugr.swad.swadroid.gui.DialogFactory; import es.ugr.swad.swadroid.gui.MenuExpandableListActivity; @@ -159,8 +158,6 @@ private void showUpgradeDialog(Context context) { public void onCreate(Bundle icicle) { int lastVersion, currentVersion; - SWADroidTracker.initTracker(getApplicationContext()); - //Initialize screen super.onCreate(icicle); @@ -188,7 +185,7 @@ public void onCreate(Bundle icicle) { currentRole = -1; } catch (Exception ex) { - error(ex.getMessage(), ex, true); + error(ex.getMessage(), ex); } } @@ -227,8 +224,6 @@ protected void onResume() { createSpinnerAdapter(); createMenu(); } - - SWADroidTracker.sendScreenView(getApplicationContext(), TAG); } private void showBirthdayMessage() { diff --git a/SWADroid/src/main/java/es/ugr/swad/swadroid/analytics/SWADroidTracker.java b/SWADroid/src/main/java/es/ugr/swad/swadroid/analytics/SWADroidTracker.java deleted file mode 100644 index 5cf079e93..000000000 --- a/SWADroid/src/main/java/es/ugr/swad/swadroid/analytics/SWADroidTracker.java +++ /dev/null @@ -1,175 +0,0 @@ -/* - * - * * This file is part of SWADroid. - * * - * * Copyright (C) 2010 Juan Miguel Boyero Corral - * * - * * SWADroid is free software: you can redistribute it and/or modify - * * it under the terms of the GNU General Public License as published by - * * the Free Software Foundation, either version 3 of the License, or - * * (at your option) any later version. - * * - * * SWADroid is distributed in the hope that it will be useful, - * * but WITHOUT ANY WARRANTY; without even the implied warranty of - * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * * GNU General Public License for more details. - * * - * * You should have received a copy of the GNU General Public License - * * along with SWADroid. If not, see . - * - */ - -package es.ugr.swad.swadroid.analytics; - -import android.content.Context; -import android.util.Log; - -import com.google.android.gms.analytics.ExceptionReporter; -import com.google.android.gms.analytics.GoogleAnalytics; -import com.google.android.gms.analytics.HitBuilders; -import com.google.android.gms.analytics.StandardExceptionParser; -import com.google.android.gms.analytics.Tracker; - -import java.util.HashMap; - -import es.ugr.swad.swadroid.Config; -import es.ugr.swad.swadroid.Constants; - -/** - * Tracker for Google Play - * - * @author Juan Miguel Boyero Corral - */ -public class SWADroidTracker { - /** - * SWADroidTracker tag name for Logcat - */ - private static final String TAG = Constants.APP_TAG + " SWADroidTracker"; - /** - * Enum used to identify the tracker that needs to be used for tracking. - * - * A single tracker is usually enough for most purposes. In case you do need multiple trackers, - * storing them all in Application object helps ensure that they are created only once per - * application instance. - */ - public enum TrackerName { - APP_TRACKER, // Tracker used only in this app. - GLOBAL_TRACKER, // Tracker used by all the apps from a company. eg: roll-up tracking. - ECOMMERCE_TRACKER, // Tracker used by all ecommerce transactions from a company. - } - - private static HashMap mTrackers = new HashMap<>(); - - private static boolean isTrackerEnabled() { - return (!Config.ANALYTICS_API_KEY.isEmpty()); - } - - private static synchronized Tracker getTracker(Context context) { - if (!mTrackers.containsKey(TrackerName.APP_TRACKER)) { - - GoogleAnalytics analytics = GoogleAnalytics.getInstance(context); - Tracker t = analytics.newTracker(Config.ANALYTICS_API_KEY); - t.enableExceptionReporting(true); - t.enableAutoActivityTracking(true); - mTrackers.put(TrackerName.APP_TRACKER, t); - - } - return mTrackers.get(TrackerName.APP_TRACKER); - } - - public static void initTracker(Context context) { - // Initialize a tracker using a Google Analytics property ID. - if(isTrackerEnabled()) { - GoogleAnalytics.getInstance(context).newTracker(Config.ANALYTICS_API_KEY); - - ExceptionReporter exceptionHandler = - new ExceptionReporter( - getTracker(context), - Thread.getDefaultUncaughtExceptionHandler(), - context); - - StandardExceptionParser exceptionParser = - new StandardExceptionParser(context, null) { - @Override - public String getDescription(String threadName, Throwable t) { - return "{" + threadName + "} " + Log.getStackTraceString(t); - } - }; - - exceptionHandler.setExceptionParser(exceptionParser); - - // Make myHandler the new default uncaught exception handler. - Thread.setDefaultUncaughtExceptionHandler(exceptionHandler); - - Log.i(TAG, "Google Play Services available. SWADroidTracker enabled"); - } else { - Log.w(TAG, "Google Play Services not available. SWADroidTracker disabled"); - } - } - - public static void sendScreenView(Context context, String path) { - if(isTrackerEnabled()) { - // Get tracker. - Tracker t = getTracker(context); - - // Set screen name. - // Where path is a String representing the screen name. - t.setScreenName(path); - - // Send a screen view. - t.send(new HitBuilders.ScreenViewBuilder().build()); - - Log.i(TAG, "ScreenView sent for screen " + path); - } - } - - public static void sendScreenView(Context context, String path, String category, String action, String label) { - if(isTrackerEnabled()) { - // Get tracker. - Tracker t = getTracker(context); - - // Set screen name. - // Where path is a String representing the screen name. - t.setScreenName(path); - - // Send a screen view. - t.send(new HitBuilders.ScreenViewBuilder().build()); - - // This event will also be sent with &cd=Home%20Screen. - // Build and send an Event. - t.send(new HitBuilders.EventBuilder() - .setCategory(category) - .setAction(action) - .setLabel(label) - .build()); - - // Clear the screen name field when we're done. - t.setScreenName(null); - - Log.i(TAG, "ScreenView sent for screen " + path); - } - } - - public static void sendException(Context context, Exception e, boolean fatal) { - if(isTrackerEnabled()) { - // Get tracker. - Tracker t = getTracker(context); - - StandardExceptionParser exceptionParser = - new StandardExceptionParser(context, null) { - @Override - public String getDescription(String threadName, Throwable t) { - return "{" + threadName + "} " + Log.getStackTraceString(t); - } - }; - - t.send(new HitBuilders.ExceptionBuilder() - .setDescription(exceptionParser.getDescription(Thread.currentThread().getName(), e)) - .setFatal(fatal) - .build() - ); - - Log.e(TAG, e.getMessage(), e); - } - } -} diff --git a/SWADroid/src/main/java/es/ugr/swad/swadroid/analytics/package.html b/SWADroid/src/main/java/es/ugr/swad/swadroid/analytics/package.html deleted file mode 100644 index 45e129831..000000000 --- a/SWADroid/src/main/java/es/ugr/swad/swadroid/analytics/package.html +++ /dev/null @@ -1,7 +0,0 @@ - - - - -Analytics package. - - diff --git a/SWADroid/src/main/java/es/ugr/swad/swadroid/database/DataBaseHelper.java b/SWADroid/src/main/java/es/ugr/swad/swadroid/database/DataBaseHelper.java index e4ada3463..35fd7dcfd 100644 --- a/SWADroid/src/main/java/es/ugr/swad/swadroid/database/DataBaseHelper.java +++ b/SWADroid/src/main/java/es/ugr/swad/swadroid/database/DataBaseHelper.java @@ -38,7 +38,6 @@ import java.util.List; import es.ugr.swad.swadroid.Constants; -import es.ugr.swad.swadroid.analytics.SWADroidTracker; import es.ugr.swad.swadroid.model.Course; import es.ugr.swad.swadroid.model.Event; import es.ugr.swad.swadroid.model.FrequentUser; @@ -417,8 +416,7 @@ private T createObjectByTable(String table, Entity ent) { null, //userBirthday ent.getInt("userRole")); } catch (ParseException e) { - //Send exception details to Google Analytics - SWADroidTracker.sendException(mCtx, e, false); + Log.e(TAG, e.getMessage(), e); } break; case DataBaseHelper.DB_TABLE_USERS_ATTENDANCES: @@ -618,8 +616,7 @@ public User getUser(String fieldName, Object fieldValue) { null, ent.getInt("userRole")); } catch (ParseException e) { - //Send exception details to Google Analytics - SWADroidTracker.sendException(mCtx, e, false); + Log.e(TAG, e.getMessage(), e); } } @@ -2315,7 +2312,6 @@ public boolean isTableExisting(String tableName) { * Delete all tables from database */ public void clearDB() { - SWADroidTracker.sendScreenView(mCtx, TAG + " clearDB"); db.deleteTables(); Log.i(TAG, "All tables deleted"); } @@ -2324,7 +2320,6 @@ public void clearDB() { * Clean data of all tables from database. Removes users photos from external storage */ public void cleanTables() { - SWADroidTracker.sendScreenView(mCtx, TAG + " cleanTables"); db.emptyTables(); compactDB(); @@ -2340,8 +2335,7 @@ public synchronized void beginTransaction() { try { wait(); } catch (InterruptedException e) { - //Send exception details to Google Analytics - SWADroidTracker.sendException(mCtx, e, false); + Log.e(TAG, e.getMessage(), e); } } @@ -2365,8 +2359,8 @@ public synchronized void endTransaction(boolean successfulTransaction) { notifyAll(); } else { - //Send exception details to Google Analytics - SWADroidTracker.sendException(mCtx, new DataBaseHelperException("No active transactions"), false); + Exception e = new DataBaseHelperException("No active transactions"); + Log.e(TAG, e.getMessage(), e); } } diff --git a/SWADroid/src/main/java/es/ugr/swad/swadroid/gui/DialogFactory.java b/SWADroid/src/main/java/es/ugr/swad/swadroid/gui/DialogFactory.java index ead432794..30e5dd5e9 100644 --- a/SWADroid/src/main/java/es/ugr/swad/swadroid/gui/DialogFactory.java +++ b/SWADroid/src/main/java/es/ugr/swad/swadroid/gui/DialogFactory.java @@ -19,7 +19,6 @@ import java.io.InputStream; import es.ugr.swad.swadroid.R; -import es.ugr.swad.swadroid.analytics.SWADroidTracker; /** * Class for create dialogs. @@ -238,8 +237,6 @@ public static AlertDialog createWarningDialog(Context context, int layoutId, int * @param tag Module tag * @param message Error message string * @param ex Exception thrown - * @param sendException true if the error report has to be sent - * false otherwise * @param isDebuggable true if the application is debuggable (develop mode). Activates Logcat messages * false otherwise * @param onClickListener ClickListener associated to the neutral button @@ -247,7 +244,7 @@ public static AlertDialog createWarningDialog(Context context, int layoutId, int */ @TargetApi(Build.VERSION_CODES.HONEYCOMB) public static AlertDialog createErrorDialog(Context context, String tag, String message, Exception ex, - boolean sendException, boolean isDebuggable, DialogInterface.OnClickListener onClickListener) { + boolean isDebuggable, DialogInterface.OnClickListener onClickListener) { AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(context) .setTitle(R.string.title_error_dialog) @@ -258,11 +255,6 @@ public static AlertDialog createErrorDialog(Context context, String tag, String if (ex != null) { Log.e(tag, ex.getMessage(), ex); - - // Send exception details to Google Analytics - if (!isDebuggable && sendException) { - SWADroidTracker.sendException(context, ex, false); - } } return alertDialogBuilder.create(); diff --git a/SWADroid/src/main/java/es/ugr/swad/swadroid/gui/MenuActivity.java b/SWADroid/src/main/java/es/ugr/swad/swadroid/gui/MenuActivity.java index 3dafd3740..af4e1dc6e 100644 --- a/SWADroid/src/main/java/es/ugr/swad/swadroid/gui/MenuActivity.java +++ b/SWADroid/src/main/java/es/ugr/swad/swadroid/gui/MenuActivity.java @@ -138,14 +138,14 @@ private void cleanDatabase() { * * @param message Error message to show. */ - protected void error(String message, Exception ex, boolean sendException) { + protected void error(String message, Exception ex) { DialogInterface.OnClickListener onClickListener = new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { finish(); } }; - AlertDialog errorDialog = DialogFactory.createErrorDialog(this, TAG, message, ex, sendException, + AlertDialog errorDialog = DialogFactory.createErrorDialog(this, TAG, message, ex, isDebuggable, onClickListener); errorDialog.show(); @@ -208,7 +208,7 @@ protected void onCreate(Bundle savedInstanceState) { getPackageName(), 0); isDebuggable = (ApplicationInfo.FLAG_DEBUGGABLE != 0); } catch (Exception ex) { - error(ex.getMessage(), ex, true); + error(ex.getMessage(), ex); } } @@ -232,7 +232,7 @@ protected void onResume() { try { dbHelper = new DataBaseHelper(this); } catch (Exception ex) { - error(ex.getMessage(), ex, true); + error(ex.getMessage(), ex); } } } diff --git a/SWADroid/src/main/java/es/ugr/swad/swadroid/gui/MenuExpandableListActivity.java b/SWADroid/src/main/java/es/ugr/swad/swadroid/gui/MenuExpandableListActivity.java index 28dcc813a..c0a0ed8d6 100644 --- a/SWADroid/src/main/java/es/ugr/swad/swadroid/gui/MenuExpandableListActivity.java +++ b/SWADroid/src/main/java/es/ugr/swad/swadroid/gui/MenuExpandableListActivity.java @@ -145,14 +145,14 @@ private void cleanDatabase() { * * @param message Error message to show. */ - protected void error(String message, Exception ex, boolean sendException) { + protected void error(String message, Exception ex) { DialogInterface.OnClickListener onClickListener = new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { finish(); } }; - AlertDialog errorDialog = DialogFactory.createErrorDialog(this, TAG, message, ex, sendException, + AlertDialog errorDialog = DialogFactory.createErrorDialog(this, TAG, message, ex, isDebuggable, onClickListener); errorDialog.show(); @@ -224,7 +224,7 @@ protected void onCreate(Bundle savedInstanceState) { isDebuggable = (ApplicationInfo.FLAG_DEBUGGABLE != 0); isSWADMain = this instanceof SWADMain; } catch (Exception ex) { - error(ex.getMessage(), ex, true); + error(ex.getMessage(), ex); } } @@ -248,7 +248,7 @@ protected void onResume() { try { dbHelper = new DataBaseHelper(this); } catch (Exception ex) { - error(ex.getMessage(), ex, true); + error(ex.getMessage(), ex); } } diff --git a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/Module.java b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/Module.java index 1fa3cc258..cb939fc30 100644 --- a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/Module.java +++ b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/Module.java @@ -29,6 +29,8 @@ import android.util.Log; import android.widget.Toast; +import com.google.firebase.analytics.FirebaseAnalytics; + import org.ksoap2.SoapFault; import org.ksoap2.transport.HttpResponseException; import org.kxml2.kdom.Element; @@ -63,6 +65,10 @@ public abstract class Module extends MenuActivity { * Class Module's tag name for Logcat */ private static final String TAG = Constants.APP_TAG + " Module"; + /** + * Obtain Firebase Analytics instance + */ + protected FirebaseAnalytics mFirebaseAnalytics = FirebaseAnalytics.getInstance(this); /** * Async Task for background jobs */ @@ -332,7 +338,6 @@ protected Void doInBackground(String... urls) { protected void onPostExecute(Void unused) { String errorMsg; int httpStatusCode; - boolean sendException = true; if (e != null) { /** @@ -345,11 +350,9 @@ protected void onPostExecute(Void unused) { switch (es.faultstring) { case "Bad log in": errorMsg = getString(R.string.errorBadLoginMsg); - sendException = false; break; case "Bad web service key": errorMsg = getString(R.string.errorBadLoginMsg); - sendException = false; // Force logout and reset password (this will show again // the login screen) @@ -365,7 +368,6 @@ protected void onPostExecute(Void unused) { } } else if ((e.getClass() == TimeoutException.class) || (e.getClass() == SocketTimeoutException.class)) { errorMsg = getString(R.string.errorTimeoutMsg); - sendException = false; } else if ((e.getClass() == CertificateException.class) || (e .getClass() == SSLException.class)) { errorMsg = getString(R.string.errorServerCertificateMsg); } else if (e.getClass() == HttpResponseException.class) { @@ -378,7 +380,6 @@ protected void onPostExecute(Void unused) { break; case 503: errorMsg = getString(R.string.errorServiceUnavailableMsg); - sendException = false; break; default: errorMsg = e.getMessage(); @@ -396,7 +397,7 @@ protected void onPostExecute(Void unused) { } // Request finalized with errors - error(errorMsg, e, sendException); + error(errorMsg, e); setResult(RESULT_CANCELED); // Launch database rollback diff --git a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/account/CreateAccount.java b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/account/CreateAccount.java index 028c86c94..0faec9ba9 100644 --- a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/account/CreateAccount.java +++ b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/account/CreateAccount.java @@ -21,6 +21,8 @@ import android.os.Bundle; +import com.google.firebase.analytics.FirebaseAnalytics; + import org.ksoap2.SoapFault; import org.ksoap2.serialization.SoapObject; @@ -122,6 +124,10 @@ protected void requestService() //Request finalized without errors setResult(RESULT_OK); + + Bundle bundle = new Bundle(); + bundle.putString(FirebaseAnalytics.Param.METHOD, "requestService"); + mFirebaseAnalytics.logEvent(FirebaseAnalytics.Event.SIGN_UP, bundle); } /* (non-Javadoc) diff --git a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/account/CreateAccountActivity.java b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/account/CreateAccountActivity.java index bb70a360d..ae7f19ded 100644 --- a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/account/CreateAccountActivity.java +++ b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/account/CreateAccountActivity.java @@ -44,7 +44,6 @@ import es.ugr.swad.swadroid.gui.ProgressScreen; import es.ugr.swad.swadroid.preferences.Preferences; import es.ugr.swad.swadroid.R; -import es.ugr.swad.swadroid.analytics.SWADroidTracker; import es.ugr.swad.swadroid.gui.DialogFactory; import es.ugr.swad.swadroid.utils.Utils; @@ -196,8 +195,6 @@ public void onClick(View view) { * Creates a new account */ private void createAccount() { - SWADroidTracker.sendScreenView(getApplicationContext(), "SWADroid CreateAccount"); - Intent intent; // Values for text field at the time of the create account attempt. @@ -317,7 +314,7 @@ protected void onActivityResult(int requestCode, int resultCode, Intent data) { } errorDialog = DialogFactory.createErrorDialog(this, TAG, - errorMsg, null, false, false, new DialogInterface.OnClickListener() { + errorMsg, null, false, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { diff --git a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/courses/Courses.java b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/courses/Courses.java index ab2b3c4af..f3286d841 100644 --- a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/courses/Courses.java +++ b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/courses/Courses.java @@ -31,7 +31,6 @@ import java.util.Vector; import es.ugr.swad.swadroid.Constants; -import es.ugr.swad.swadroid.analytics.SWADroidTracker; import es.ugr.swad.swadroid.database.DataBaseHelper; import es.ugr.swad.swadroid.model.Course; import es.ugr.swad.swadroid.model.Model; @@ -90,8 +89,6 @@ protected void onCreate(Bundle savedInstanceState) { @Override protected void onStart() { super.onStart(); - - SWADroidTracker.sendScreenView(getApplicationContext(), TAG); runConnection(); } @@ -210,12 +207,7 @@ public void clearCourses(Context context) { try { dbHelper.emptyTable(DataBaseHelper.DB_TABLE_COURSES); } catch (Exception e) { - e.printStackTrace(); - - //Send exception details to Google Analytics - if (!isDebuggable) { - SWADroidTracker.sendException(context, e, false); - } + Log.e(TAG, e.getMessage(), e); } } diff --git a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/downloads/DirectoryNavigator.java b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/downloads/DirectoryNavigator.java index ba959e9ed..666255d10 100644 --- a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/downloads/DirectoryNavigator.java +++ b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/downloads/DirectoryNavigator.java @@ -19,13 +19,16 @@ package es.ugr.swad.swadroid.modules.downloads; import android.content.Context; +import android.util.Log; import org.w3c.dom.Document; import org.w3c.dom.NamedNodeMap; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.xml.sax.InputSource; +import org.xml.sax.SAXException; +import java.io.IOException; import java.io.StringReader; import java.util.ArrayList; import java.util.Collections; @@ -33,8 +36,9 @@ import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.parsers.ParserConfigurationException; -import es.ugr.swad.swadroid.analytics.SWADroidTracker; +import es.ugr.swad.swadroid.Constants; /** @@ -60,6 +64,11 @@ public class DirectoryNavigator { */ private Context mContext; + /** + * Downloads tag name for Logcat + */ + private static final String TAG = Constants.APP_TAG + " DirectoryNavigator"; + /** * Constructor. * @@ -278,9 +287,8 @@ private Node goToDirectory() throws InvalidPathException { } } } - } catch (Exception e) { - //Send exception details to Google Analytics - SWADroidTracker.sendException(mContext, e, false); + } catch (ParserConfigurationException | IOException | SAXException ex) { + Log.e(TAG, ex.getMessage(), ex); } //If we don't find the entire path, we throw an exception. diff --git a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/downloads/DownloadsManager.java b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/downloads/DownloadsManager.java index 48a1d1ff0..03ee6d8a0 100644 --- a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/downloads/DownloadsManager.java +++ b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/downloads/DownloadsManager.java @@ -56,7 +56,6 @@ import es.ugr.swad.swadroid.Constants; import es.ugr.swad.swadroid.R; -import es.ugr.swad.swadroid.analytics.SWADroidTracker; import es.ugr.swad.swadroid.gui.FontManager; import es.ugr.swad.swadroid.gui.MenuActivity; import es.ugr.swad.swadroid.gui.ProgressScreen; @@ -190,7 +189,6 @@ private void init() { @Override protected void onStart() { super.onStart(); - SWADroidTracker.sendScreenView(getApplicationContext(), TAG); // check Android 6 permission if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) diff --git a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/downloads/FileDownloaderAsyncTask.java b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/downloads/FileDownloaderAsyncTask.java index ed006c6de..97de28c91 100644 --- a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/downloads/FileDownloaderAsyncTask.java +++ b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/downloads/FileDownloaderAsyncTask.java @@ -27,7 +27,6 @@ import es.ugr.swad.swadroid.Constants; import es.ugr.swad.swadroid.R; -import es.ugr.swad.swadroid.analytics.SWADroidTracker; /** * Download the file located at the given URL, save it to a file. @@ -72,9 +71,6 @@ protected Boolean doInBackground(String... params) { } catch (MalformedURLException e) { Log.e(TAG, "Incorrect URL", e); - //Send exception details to Google Analytics - SWADroidTracker.sendException(mContext, e, false); - downloadSuccess = false; } diff --git a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/downloads/GetFile.java b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/downloads/GetFile.java index 8518fd16f..b623b7a98 100644 --- a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/downloads/GetFile.java +++ b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/downloads/GetFile.java @@ -29,7 +29,6 @@ import es.ugr.swad.swadroid.Constants; import es.ugr.swad.swadroid.R; -import es.ugr.swad.swadroid.analytics.SWADroidTracker; import es.ugr.swad.swadroid.model.Group; import es.ugr.swad.swadroid.modules.login.Login; import es.ugr.swad.swadroid.modules.Module; @@ -73,14 +72,12 @@ protected void onCreate(Bundle savedInstanceState) { @Override protected void onStart() { super.onStart(); - - SWADroidTracker.sendScreenView(getApplicationContext(), TAG); try { runConnection(); } catch (Exception e) { String errorMsg = getString(R.string.errorServerResponseMsg); - error(errorMsg, e, true); + error(errorMsg, e); } } diff --git a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/groups/GroupTypes.java b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/groups/GroupTypes.java index 86d580c76..5354a6dc4 100644 --- a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/groups/GroupTypes.java +++ b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/groups/GroupTypes.java @@ -13,7 +13,6 @@ import es.ugr.swad.swadroid.Constants; import es.ugr.swad.swadroid.R; -import es.ugr.swad.swadroid.analytics.SWADroidTracker; import es.ugr.swad.swadroid.database.DataBaseHelper; import es.ugr.swad.swadroid.model.GroupType; import es.ugr.swad.swadroid.model.Model; @@ -59,14 +58,12 @@ protected void onCreate(Bundle savedInstanceState) { @Override protected void onStart() { super.onStart(); - - SWADroidTracker.sendScreenView(getApplicationContext(), TAG); try { runConnection(); } catch (Exception e) { String errorMsg = getString(R.string.errorServerResponseMsg); - error(errorMsg, e, true); + error(errorMsg, e); } } diff --git a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/groups/Groups.java b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/groups/Groups.java index 5ecec3207..4fcacac25 100644 --- a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/groups/Groups.java +++ b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/groups/Groups.java @@ -31,7 +31,6 @@ import es.ugr.swad.swadroid.Constants; import es.ugr.swad.swadroid.R; -import es.ugr.swad.swadroid.analytics.SWADroidTracker; import es.ugr.swad.swadroid.database.DataBaseHelper; import es.ugr.swad.swadroid.model.Group; import es.ugr.swad.swadroid.model.Model; @@ -79,14 +78,12 @@ protected void onCreate(Bundle savedInstanceState) { @Override protected void onStart() { super.onStart(); - - SWADroidTracker.sendScreenView(getApplicationContext(), TAG); try { runConnection(); } catch (Exception e) { String errorMsg = getString(R.string.errorServerResponseMsg); - error(errorMsg, e, true); + error(errorMsg, e); } } diff --git a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/groups/MyGroupsManager.java b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/groups/MyGroupsManager.java index e35e19f0d..c9edeeed5 100644 --- a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/groups/MyGroupsManager.java +++ b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/groups/MyGroupsManager.java @@ -35,7 +35,6 @@ import es.ugr.swad.swadroid.Constants; import es.ugr.swad.swadroid.R; -import es.ugr.swad.swadroid.analytics.SWADroidTracker; import es.ugr.swad.swadroid.database.DataBaseHelper; import es.ugr.swad.swadroid.gui.DialogFactory; import es.ugr.swad.swadroid.gui.MenuExpandableListActivity; @@ -93,8 +92,6 @@ protected void onStart() { showProgressLoading(); - SWADroidTracker.sendScreenView(getApplicationContext(), TAG); - List groupTypes = dbHelper.getAllRows(DataBaseHelper.DB_TABLE_GROUP_TYPES, "courseCode = " + courseCode, "groupTypeName"); List groups = dbHelper.getGroups(courseCode); if ((!groupTypes.isEmpty()) && (!groups.isEmpty())) { diff --git a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/groups/SendMyGroups.java b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/groups/SendMyGroups.java index 0dc0fa51a..4bbacb821 100644 --- a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/groups/SendMyGroups.java +++ b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/groups/SendMyGroups.java @@ -88,7 +88,7 @@ protected void onStart() { runConnection(); } catch (Exception e) { String errorMsg = getString(R.string.errorServerResponseMsg); - error(errorMsg, e, true); + error(errorMsg, e); } } diff --git a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/information/Information.java b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/information/Information.java index fe4b0e20a..2281c85e7 100644 --- a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/information/Information.java +++ b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/information/Information.java @@ -14,7 +14,6 @@ import es.ugr.swad.swadroid.Constants; import es.ugr.swad.swadroid.R; -import es.ugr.swad.swadroid.analytics.SWADroidTracker; import es.ugr.swad.swadroid.gui.ProgressScreen; import es.ugr.swad.swadroid.gui.WebViewFactory; import es.ugr.swad.swadroid.model.User; @@ -149,12 +148,11 @@ protected void onCreate(Bundle savedInstanceState) { protected void onStart() { super.onStart(); - SWADroidTracker.sendScreenView(getApplicationContext(), TAG + " " + infoTypeToAdd); try { runConnection(); } catch (Exception e) { String errorMsg = getString(R.string.errorServerResponseMsg); - error(errorMsg, e, true); + error(errorMsg, e); } } diff --git a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/login/Login.java b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/login/Login.java index b452e100a..e45182791 100644 --- a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/login/Login.java +++ b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/login/Login.java @@ -22,6 +22,8 @@ import android.os.Bundle; import android.util.Log; +import com.google.firebase.analytics.FirebaseAnalytics; + import org.ksoap2.SoapFault; import org.ksoap2.serialization.SoapObject; @@ -173,6 +175,10 @@ protected void requestService() //Request finalized without errors setResult(RESULT_OK); + + Bundle bundle = new Bundle(); + bundle.putString(FirebaseAnalytics.Param.METHOD, "requestService"); + mFirebaseAnalytics.logEvent(FirebaseAnalytics.Event.LOGIN, bundle); } /* (non-Javadoc) diff --git a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/login/LoginActivity.java b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/login/LoginActivity.java index 6ccd7ff65..6d038fec8 100644 --- a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/login/LoginActivity.java +++ b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/login/LoginActivity.java @@ -43,7 +43,6 @@ import es.ugr.swad.swadroid.Constants; import es.ugr.swad.swadroid.R; -import es.ugr.swad.swadroid.analytics.SWADroidTracker; import es.ugr.swad.swadroid.gui.DialogFactory; import es.ugr.swad.swadroid.gui.ProgressScreen; import es.ugr.swad.swadroid.modules.account.CreateAccountActivity; @@ -222,7 +221,6 @@ public void onClick(View view) { * are presented and no actual login attempt is made. */ private void attemptLogin() { - SWADroidTracker.sendScreenView(getApplicationContext(), "SWADroid Login"); // Values for ID and password at the time of the login attempt. String idValue; @@ -353,8 +351,6 @@ protected void onActivityResult(int requestCode, int resultCode, Intent data) { } private void whyMyPasswordNotWorkDialog() { - SWADroidTracker.sendScreenView(getApplicationContext(), "SWADroid WhyMyPasswordNotWork"); - AlertDialog passwordNotWorkDialog = DialogFactory.createNeutralDialog(this, R.layout.dialog_why_password, @@ -373,8 +369,6 @@ public void onClick(DialogInterface dialog, } private void recoverPasswordDialog() { - SWADroidTracker.sendScreenView(getApplicationContext(), "SWADroid RecoverPassword"); - AlertDialog.Builder builder = new AlertDialog.Builder(this); final EditText user = new EditText(getApplicationContext()); diff --git a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/marks/GetMarks.java b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/marks/GetMarks.java index 8de5fdc5a..a40a284fa 100644 --- a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/marks/GetMarks.java +++ b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/marks/GetMarks.java @@ -26,7 +26,6 @@ import org.ksoap2.serialization.SoapObject; import es.ugr.swad.swadroid.Constants; -import es.ugr.swad.swadroid.analytics.SWADroidTracker; import es.ugr.swad.swadroid.model.User; import es.ugr.swad.swadroid.modules.Module; import es.ugr.swad.swadroid.modules.login.Login; @@ -73,8 +72,6 @@ protected void onCreate(Bundle savedInstanceState) { protected void onStart() { super.onStart(); - SWADroidTracker.sendScreenView(getApplicationContext(), TAG); - fileCode = this.getIntent().getLongExtra("fileCode", 0); runConnection(); diff --git a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/marks/Marks.java b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/marks/Marks.java index bac4bbdc3..5c0d4249a 100644 --- a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/marks/Marks.java +++ b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/marks/Marks.java @@ -11,7 +11,6 @@ import es.ugr.swad.swadroid.Constants; import es.ugr.swad.swadroid.R; -import es.ugr.swad.swadroid.analytics.SWADroidTracker; import es.ugr.swad.swadroid.gui.MenuActivity; import es.ugr.swad.swadroid.gui.WebViewFactory; import es.ugr.swad.swadroid.modules.courses.Courses; @@ -49,8 +48,6 @@ protected void onCreate(Bundle savedInstanceState) { protected void onStart() { super.onStart(); - SWADroidTracker.sendScreenView(getApplicationContext(), TAG); - String content = this.getIntent().getStringExtra("content"); content = Utils.fixLinks(content); diff --git a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/messages/Messages.java b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/messages/Messages.java index d82070ca9..5db1db31e 100644 --- a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/messages/Messages.java +++ b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/messages/Messages.java @@ -46,7 +46,6 @@ import es.ugr.swad.swadroid.Constants; import es.ugr.swad.swadroid.R; -import es.ugr.swad.swadroid.analytics.SWADroidTracker; import es.ugr.swad.swadroid.database.DataBaseHelper; import es.ugr.swad.swadroid.gui.ImageFactory; import es.ugr.swad.swadroid.gui.ProgressScreen; @@ -231,12 +230,6 @@ public void onClick(View view) { setMETHOD_NAME("sendMessage"); } - @Override - protected void onStart() { - super.onStart(); - SWADroidTracker.sendScreenView(getApplicationContext(), TAG); - } - /** * Reads user input */ @@ -463,7 +456,7 @@ public boolean onOptionsItemSelected(MenuItem item) { } } catch (Exception e) { String errorMsg = getString(R.string.errorServerResponseMsg); - error(errorMsg, e, true); + error(errorMsg, e); } return true; case android.R.id.home: diff --git a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/messages/SearchUsers.java b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/messages/SearchUsers.java index 7b1ef23b9..ca0b8027c 100644 --- a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/messages/SearchUsers.java +++ b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/messages/SearchUsers.java @@ -28,7 +28,6 @@ import java.util.Vector; import es.ugr.swad.swadroid.Constants; import es.ugr.swad.swadroid.R; -import es.ugr.swad.swadroid.analytics.SWADroidTracker; import es.ugr.swad.swadroid.database.DataBaseHelper; import es.ugr.swad.swadroid.gui.ProgressScreen; import es.ugr.swad.swadroid.model.FrequentUser; @@ -199,12 +198,6 @@ protected void onCreate(Bundle savedInstanceState) { setMETHOD_NAME("findUsers"); } - @Override - protected void onStart() { - super.onStart(); - SWADroidTracker.sendScreenView(getApplicationContext(), TAG); - } - @TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH) @Override public boolean onCreateOptionsMenu(Menu menu) { diff --git a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/notices/Notices.java b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/notices/Notices.java index 8026581a3..609b5e5af 100644 --- a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/notices/Notices.java +++ b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/notices/Notices.java @@ -33,7 +33,6 @@ import es.ugr.swad.swadroid.Constants; import es.ugr.swad.swadroid.R; -import es.ugr.swad.swadroid.analytics.SWADroidTracker; import es.ugr.swad.swadroid.gui.DialogFactory; import es.ugr.swad.swadroid.model.User; import es.ugr.swad.swadroid.modules.courses.Courses; @@ -84,7 +83,7 @@ public void onClick(View view) { } } catch (Exception e) { String errorMsg = getString(R.string.errorServerResponseMsg); - error(errorMsg, e, true); + error(errorMsg, e); } } }; @@ -189,7 +188,7 @@ protected void onPause() { @Override protected void onStart() { super.onStart(); - SWADroidTracker.sendScreenView(getApplicationContext(), TAG); + selectedCourseCode = Courses.getSelectedCourseCode(); launchNoticeDialog(); } diff --git a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/notifications/NotificationItem.java b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/notifications/NotificationItem.java index baf2c2df7..85e65f87e 100644 --- a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/notifications/NotificationItem.java +++ b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/notifications/NotificationItem.java @@ -30,7 +30,6 @@ import es.ugr.swad.swadroid.Constants; import es.ugr.swad.swadroid.R; -import es.ugr.swad.swadroid.analytics.SWADroidTracker; import es.ugr.swad.swadroid.gui.ImageFactory; import es.ugr.swad.swadroid.gui.MenuActivity; import es.ugr.swad.swadroid.gui.WebViewFactory; @@ -122,7 +121,6 @@ protected void onCreate(Bundle savedInstanceState) { Log.w(TAG, "Not connected: Marking the notification " + notifCode + " as read in SWAD was deferred"); } } - SWADroidTracker.sendScreenView(getApplicationContext(), TAG); } /* (non-Javadoc) diff --git a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/notifications/Notifications.java b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/notifications/Notifications.java index e1d68cc01..0b6511878 100644 --- a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/notifications/Notifications.java +++ b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/notifications/Notifications.java @@ -50,7 +50,6 @@ import es.ugr.swad.swadroid.Constants; import es.ugr.swad.swadroid.R; -import es.ugr.swad.swadroid.analytics.SWADroidTracker; import es.ugr.swad.swadroid.database.DataBaseHelper; import es.ugr.swad.swadroid.gui.AlertNotificationFactory; import es.ugr.swad.swadroid.model.Model; @@ -341,7 +340,6 @@ public void onMarkAllReadClick() { @Override protected void onResume() { super.onResume(); - SWADroidTracker.sendScreenView(getApplicationContext(), TAG); IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction(NotificationsSyncAdapterService.START_SYNC); @@ -543,7 +541,7 @@ public void clearNotifications() { try { dbHelper.emptyTable(DataBaseHelper.DB_TABLE_NOTIFICATIONS); } catch (Exception e) { - error(e.getMessage(), e, true); + error(e.getMessage(), e); } } @@ -570,7 +568,7 @@ public void onReceive(Context context, Intent intent) { notifCount = intent.getIntExtra("notifCount", 0); errorMessage = intent.getStringExtra("errorMessage"); if ((errorMessage != null) && !errorMessage.equals("")) { - error(errorMessage, null, true); + error(errorMessage, null); } else if (notifCount == 0) { Toast.makeText(context, R.string.NoNotificationsMsg, Toast.LENGTH_LONG).show(); diff --git a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/notifications/NotificationsMarkAllAsRead.java b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/notifications/NotificationsMarkAllAsRead.java index b595ee04c..12c22d44f 100644 --- a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/notifications/NotificationsMarkAllAsRead.java +++ b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/notifications/NotificationsMarkAllAsRead.java @@ -24,7 +24,6 @@ import org.ksoap2.serialization.SoapPrimitive; import es.ugr.swad.swadroid.Constants; -import es.ugr.swad.swadroid.analytics.SWADroidTracker; import es.ugr.swad.swadroid.modules.Module; import es.ugr.swad.swadroid.modules.login.Login; import es.ugr.swad.swadroid.utils.Utils; @@ -53,13 +52,6 @@ protected void onCreate(Bundle savedInstanceState) { getSupportActionBar().hide(); runConnection(); } - - @Override - protected void onStart() { - super.onStart(); - - SWADroidTracker.sendScreenView(getApplicationContext(), TAG); - } /* (non-Javadoc) * @see es.ugr.swad.swadroid.modules.Module#requestService() diff --git a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/notifications/NotificationsSyncAdapterService.java b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/notifications/NotificationsSyncAdapterService.java index bb9dd1039..862a4ed65 100644 --- a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/notifications/NotificationsSyncAdapterService.java +++ b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/notifications/NotificationsSyncAdapterService.java @@ -52,7 +52,6 @@ import es.ugr.swad.swadroid.Config; import es.ugr.swad.swadroid.Constants; import es.ugr.swad.swadroid.R; -import es.ugr.swad.swadroid.analytics.SWADroidTracker; import es.ugr.swad.swadroid.database.DataBaseHelper; import es.ugr.swad.swadroid.gui.AlertNotificationFactory; import es.ugr.swad.swadroid.model.Model; @@ -106,7 +105,6 @@ public SyncAdapterImpl(Context context) { @Override public void onPerformSync(Account account, Bundle extras, String authority, ContentProviderClient provider, SyncResult syncResult) { - boolean sendException = true; int httpStatusCode; try { @@ -121,11 +119,9 @@ public void onPerformSync(Account account, Bundle extras, String authority, Cont switch (es.faultstring) { case "Bad log in": errorMessage = mContext.getString(R.string.errorBadLoginMsg); - sendException = false; break; case "Bad web service key": errorMessage = mContext.getString(R.string.errorBadLoginMsg); - sendException = false; // Force logout and reset password (this will show again // the login screen) @@ -141,7 +137,6 @@ public void onPerformSync(Account account, Bundle extras, String authority, Cont } } else if ((e.getClass() == TimeoutException.class) || (e.getClass() == SocketTimeoutException.class)) { errorMessage = mContext.getString(R.string.errorTimeoutMsg); - sendException = false; } else if ((e.getClass() == CertificateException.class) || (e .getClass() == SSLException.class)) { errorMessage = mContext.getString(R.string.errorServerCertificateMsg); } else if (e.getClass() == HttpResponseException.class) { @@ -154,7 +149,6 @@ public void onPerformSync(Account account, Bundle extras, String authority, Cont break; case 503: errorMessage = mContext.getString(R.string.errorServiceUnavailableMsg); - sendException = false; break; default: errorMessage = e.getMessage(); @@ -176,12 +170,7 @@ public void onPerformSync(Account account, Bundle extras, String authority, Cont dbHelper.endTransaction(false); } - //Send exception details to Google Analytics - if(sendException) { - SWADroidTracker.sendException(mContext, e, false); - } else { - Log.e(TAG, errorMessage, e); - } + Log.e(TAG, errorMessage, e); //Notify synchronization stop Intent stopIntent = new Intent(); @@ -215,9 +204,6 @@ public void onCreate() { webserviceClient = null; } catch (Exception e) { Log.e(TAG, "Error initializing database and preferences", e); - - //Send exception details to Google Analytics - SWADroidTracker.sendException(mCtx, e, false); } super.onCreate(); diff --git a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/qr/GenerateQR.java b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/qr/GenerateQR.java index 800992b71..41cb18c73 100644 --- a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/qr/GenerateQR.java +++ b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/qr/GenerateQR.java @@ -18,7 +18,6 @@ import es.ugr.swad.swadroid.Constants; import es.ugr.swad.swadroid.R; -import es.ugr.swad.swadroid.analytics.SWADroidTracker; import es.ugr.swad.swadroid.gui.MenuActivity; import es.ugr.swad.swadroid.modules.login.Login; @@ -65,8 +64,6 @@ protected void onCreate(Bundle savedInstanceState) { protected void onStart() { super.onStart(); - SWADroidTracker.sendScreenView(getApplicationContext(), TAG); - if (!Login.isLogged() || (Login.getLoggedUser() == null)) { Intent activity = new Intent(getApplicationContext(), Login.class); startActivityForResult(activity, Constants.LOGIN_REQUEST_CODE); @@ -116,7 +113,7 @@ private void generateQR() { qrCode = barcodeEncoder.encodeBitmap(qrContents, BarcodeFormat.QR_CODE, CODE_WIDTH, CODE_HEIGHT, hintMap); qr_image.setImageBitmap(qrCode); } catch (WriterException e) { - error(e.getMessage(), e, true); + error(e.getMessage(), e); } } } diff --git a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/rollcall/EventsDownload.java b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/rollcall/EventsDownload.java index 00b3bf1ce..4f1af543b 100644 --- a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/rollcall/EventsDownload.java +++ b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/rollcall/EventsDownload.java @@ -80,7 +80,7 @@ protected void onStart() { runConnection(); } catch (Exception e) { String errorMsg = getString(R.string.errorServerResponseMsg); - error(errorMsg, e, true); + error(errorMsg, e); } } diff --git a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/rollcall/Rollcall.java b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/rollcall/Rollcall.java index e020a4909..4686ba7e7 100644 --- a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/rollcall/Rollcall.java +++ b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/rollcall/Rollcall.java @@ -39,7 +39,6 @@ import es.ugr.swad.swadroid.Constants; import es.ugr.swad.swadroid.R; -import es.ugr.swad.swadroid.analytics.SWADroidTracker; import es.ugr.swad.swadroid.gui.DialogFactory; import es.ugr.swad.swadroid.gui.MenuExpandableListActivity; import es.ugr.swad.swadroid.gui.ProgressScreen; @@ -180,7 +179,6 @@ public void onScroll(AbsListView absListView, int firstVisibleItem, @Override protected void onStart() { super.onStart(); - SWADroidTracker.sendScreenView(getApplicationContext(), TAG); //Refresh ListView of events refreshAdapter(); diff --git a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/rollcall/UsersActivity.java b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/rollcall/UsersActivity.java index bcc1656b3..765e5e359 100644 --- a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/rollcall/UsersActivity.java +++ b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/rollcall/UsersActivity.java @@ -49,7 +49,6 @@ import es.ugr.swad.swadroid.Constants; import es.ugr.swad.swadroid.R; -import es.ugr.swad.swadroid.analytics.SWADroidTracker; import es.ugr.swad.swadroid.database.DataBaseHelper; import es.ugr.swad.swadroid.gui.DialogFactory; import es.ugr.swad.swadroid.gui.MenuExpandableListActivity; @@ -158,7 +157,6 @@ public void onScroll(AbsListView absListView, int firstVisibleItem, @Override protected void onStart() { super.onStart(); - SWADroidTracker.sendScreenView(getApplicationContext(), TAG); //Refresh ListView of users refreshAdapter(); @@ -298,7 +296,7 @@ public boolean onOptionsItemSelected(MenuItem item) { } } else { //If the device has no rear camera available show error message - error(getString(R.string.noCameraFound), null, false); + error(getString(R.string.noCameraFound), null); } return true; diff --git a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/rollcall/UsersDownload.java b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/rollcall/UsersDownload.java index 45ceb6b09..5cafc4c5a 100644 --- a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/rollcall/UsersDownload.java +++ b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/rollcall/UsersDownload.java @@ -81,7 +81,7 @@ protected void onStart() { runConnection(); } catch (Exception e) { String errorMsg = getString(R.string.errorServerResponseMsg); - error(errorMsg, e, true); + error(errorMsg, e); } } diff --git a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/rollcall/UsersSend.java b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/rollcall/UsersSend.java index 5d75b8a32..5dcca8c76 100644 --- a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/rollcall/UsersSend.java +++ b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/rollcall/UsersSend.java @@ -91,7 +91,7 @@ protected void onStart() { runConnection(); } catch (Exception e) { String errorMsg = getString(R.string.errorServerResponseMsg); - error(errorMsg, e, true); + error(errorMsg, e); } } diff --git a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/tests/Tests.java b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/tests/Tests.java index 8e9b049b0..e6aa9ffde 100644 --- a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/tests/Tests.java +++ b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/tests/Tests.java @@ -30,7 +30,6 @@ import es.ugr.swad.swadroid.Constants; import es.ugr.swad.swadroid.R; -import es.ugr.swad.swadroid.analytics.SWADroidTracker; import es.ugr.swad.swadroid.gui.ImageListItem; import es.ugr.swad.swadroid.gui.MenuActivity; import es.ugr.swad.swadroid.gui.ProgressScreen; @@ -71,8 +70,6 @@ protected void onCreate(Bundle savedInstanceState) { mProgressScreen = new ProgressScreen(mProgressScreenView, mTestsMenuLayoutView, getString(R.string.syncronizingMsg), this); - SWADroidTracker.sendScreenView(getApplicationContext(), TAG); - for (int i = 0; i < titles.length; i++) { ImageListItem item = new ImageListItem(images[i], titles[i]); imageListItems.add(item); diff --git a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/tests/TestsConfigDownload.java b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/tests/TestsConfigDownload.java index c85c889fe..c9ce4144b 100644 --- a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/tests/TestsConfigDownload.java +++ b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/tests/TestsConfigDownload.java @@ -81,7 +81,7 @@ protected void onStart() { runConnection(); } catch (Exception e) { String errorMsg = getString(R.string.errorServerResponseMsg); - error(errorMsg, e, true); + error(errorMsg, e); } } diff --git a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/tests/TestsMake.java b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/tests/TestsMake.java index b969749a7..84cd2d2d5 100644 --- a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/tests/TestsMake.java +++ b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/tests/TestsMake.java @@ -51,7 +51,6 @@ import es.ugr.swad.swadroid.Constants; import es.ugr.swad.swadroid.R; -import es.ugr.swad.swadroid.analytics.SWADroidTracker; import es.ugr.swad.swadroid.database.DataBaseHelper; import es.ugr.swad.swadroid.gui.MenuActivity; import es.ugr.swad.swadroid.gui.WebViewFactory; @@ -152,8 +151,6 @@ private void selectNumQuestions() { numberPicker.setMinValue(test.getMin()); numberPicker.setValue(test.getDef()); numberPicker.setVisibility(View.VISIBLE); - - SWADroidTracker.sendScreenView(getApplicationContext(), TAG + " NumQuestions"); } /** @@ -214,8 +211,6 @@ private void selectTags() { checkBoxesList.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); checkBoxesList.setOnItemClickListener(tagsAnswersTypeItemClickListener); checkBoxesList.setDividerHeight(0); - - SWADroidTracker.sendScreenView(getApplicationContext(), TAG + " Tags"); } /** @@ -275,8 +270,6 @@ private void selectAnswerTypes() { checkBoxesList.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); checkBoxesList.setOnItemClickListener(tagsAnswersTypeItemClickListener); checkBoxesList.setDividerHeight(0); - - SWADroidTracker.sendScreenView(getApplicationContext(), TAG + " AnswerTypes"); } /** @@ -632,8 +625,6 @@ public void onClick(View v) { }); showQuestion(0); - - SWADroidTracker.sendScreenView(getApplicationContext(), TAG + " Question"); } /** @@ -658,8 +649,6 @@ private void makeTest() { //Shows the test showTest(); } else { - SWADroidTracker.sendScreenView(getApplicationContext(), TAG + " No questions criteria"); - Toast.makeText(this, R.string.testNoQuestionsMeetsSpecifiedCriteriaMsg, Toast.LENGTH_LONG).show(); finish(); } @@ -701,8 +690,6 @@ private void evaluateTest() { } else { textView = (TextView) findViewById(R.id.testResultsText); textView.setText(R.string.testNoResultsMsg); - - SWADroidTracker.sendScreenView(getApplicationContext(), TAG + " Feedback " + Test.FEEDBACK_NONE); } } @@ -794,8 +781,6 @@ public void onItemClick(AdapterView parent, View v, int position, if (test != null) { selectNumQuestions(); } else { - SWADroidTracker.sendScreenView(getApplicationContext(), TAG + " No questions"); - Toast.makeText(this, R.string.testNoQuestionsCourseMsg, Toast.LENGTH_LONG).show(); finish(); } @@ -845,7 +830,6 @@ public boolean onOptionsItemSelected(MenuItem item) { return true; case R.id.action_show_details: if (test.getFeedback().equals(Test.FEEDBACK_MIN)) { - SWADroidTracker.sendScreenView(getApplicationContext(), TAG + " Feedback " + Test.FEEDBACK_MIN); Toast.makeText(this, R.string.testNoDetailsMsg, Toast.LENGTH_LONG).show(); } else { //Show totals button only diff --git a/SWADroid/src/main/java/es/ugr/swad/swadroid/preferences/Preferences.java b/SWADroid/src/main/java/es/ugr/swad/swadroid/preferences/Preferences.java index 50a2fa275..3adf5419c 100644 --- a/SWADroid/src/main/java/es/ugr/swad/swadroid/preferences/Preferences.java +++ b/SWADroid/src/main/java/es/ugr/swad/swadroid/preferences/Preferences.java @@ -32,7 +32,6 @@ import java.util.List; import es.ugr.swad.swadroid.Constants; -import es.ugr.swad.swadroid.analytics.SWADroidTracker; import es.ugr.swad.swadroid.database.DataBaseHelper; import es.ugr.swad.swadroid.model.LoginInfo; import es.ugr.swad.swadroid.modules.courses.Courses; @@ -186,7 +185,6 @@ public Preferences(Context ctx) { dbHelper = new DataBaseHelper(ctx); } catch (Exception e) { Log.e(TAG, e.getMessage()); - SWADroidTracker.sendException(ctx, e, false); } } } diff --git a/SWADroid/src/main/java/es/ugr/swad/swadroid/preferences/PreferencesActivity.java b/SWADroid/src/main/java/es/ugr/swad/swadroid/preferences/PreferencesActivity.java index a25408168..5e3ebd923 100644 --- a/SWADroid/src/main/java/es/ugr/swad/swadroid/preferences/PreferencesActivity.java +++ b/SWADroid/src/main/java/es/ugr/swad/swadroid/preferences/PreferencesActivity.java @@ -24,7 +24,7 @@ import android.content.DialogInterface; import android.content.Intent; import android.content.pm.ApplicationInfo; -import android.content.pm.PackageManager.NameNotFoundException; +import android.content.pm.PackageManager; import android.net.Uri; import android.os.Bundle; import android.preference.CheckBoxPreference; @@ -33,12 +33,11 @@ import android.preference.Preference.OnPreferenceClickListener; import android.preference.PreferenceActivity; import android.preference.PreferenceScreen; -import android.provider.Settings; import android.util.Log; -import android.view.View; -import android.widget.Button; import android.widget.Toast; +import com.google.firebase.analytics.FirebaseAnalytics; + import java.security.NoSuchAlgorithmException; import java.util.Arrays; import java.util.Date; @@ -46,13 +45,11 @@ import es.ugr.swad.swadroid.Constants; import es.ugr.swad.swadroid.R; -import es.ugr.swad.swadroid.analytics.SWADroidTracker; import es.ugr.swad.swadroid.gui.DialogFactory; import es.ugr.swad.swadroid.modules.login.Login; import es.ugr.swad.swadroid.modules.login.LoginActivity; import es.ugr.swad.swadroid.sync.SyncUtils; import es.ugr.swad.swadroid.utils.Crypto; -import es.ugr.swad.swadroid.utils.NotificationUtils; import es.ugr.swad.swadroid.utils.Utils; /** @@ -65,6 +62,10 @@ public class PreferencesActivity extends PreferenceActivity implements OnPrefere * PreferencesActivity tag name for Logcat */ private static final String TAG = Constants.APP_TAG + " PreferencesActivity"; + /** + * Obtain Firebase Analytics instance + */ + protected FirebaseAnalytics mFirebaseAnalytics = FirebaseAnalytics.getInstance(this); /** * Application context */ @@ -130,11 +131,6 @@ public class PreferencesActivity extends PreferenceActivity implements OnPrefere * Synchronization preferences changed flag */ private boolean syncPrefsChanged = false; - - /** - * SWAD server to use - */ - //private String mServer; /** * User password preference changed flag @@ -146,14 +142,14 @@ public class PreferencesActivity extends PreferenceActivity implements OnPrefere * * @param message Error message to show. */ - private void error(String message, Exception ex, boolean sendException) { + private void error(String message, Exception ex) { DialogInterface.OnClickListener onClickListener = new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { finish(); } }; - AlertDialog errorDialog = DialogFactory.createErrorDialog(this, TAG, message, ex, sendException, + AlertDialog errorDialog = DialogFactory.createErrorDialog(this, TAG, message, ex, isDebuggable, onClickListener); errorDialog.show(); @@ -178,7 +174,7 @@ protected void onCreate(Bundle savedInstanceState) { getPackageName(), 0); isDebuggable = (ApplicationInfo.FLAG_DEBUGGABLE != 0); } catch (Exception ex) { - error(ex.getMessage(), ex, true); + error(ex.getMessage(), ex); } logOutPref = findPreference(Preferences.LOGOUTPREF); @@ -304,6 +300,12 @@ public boolean onPreferenceClick(Preference preference) { sharingIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, getString(R.string.app_name)); sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, getString(R.string.shareBodyMsg)); startActivity(Intent.createChooser(sharingIntent, getString(R.string.shareTitle_menu))); + + Bundle bundle = new Bundle(); + bundle.putString(FirebaseAnalytics.Param.ITEM_ID, "1"); + bundle.putString(FirebaseAnalytics.Param.CONTENT_TYPE, "text"); + mFirebaseAnalytics.logEvent(FirebaseAnalytics.Event.SHARE, bundle); + return true; } }); @@ -319,11 +321,11 @@ public boolean onPreferenceClick(Preference preference) { return true; } }); - + try { currentVersionPref.setSummary(getPackageManager().getPackageInfo(getPackageName(), 0).versionName); - } catch (NameNotFoundException e) { - SWADroidTracker.sendException(getApplicationContext(), e, false); + } catch (PackageManager.NameNotFoundException ex) { + error(ex.getMessage(), ex); } } @@ -369,7 +371,7 @@ public boolean onPreferenceChange(Preference preference, Object newValue) { } } catch (NoSuchAlgorithmException ex) { - error(ex.getMessage(), ex, true); + error(ex.getMessage(), ex); } } else if(Preferences.SYNCENABLEPREF.equals(key)) { boolean syncEnabled = (Boolean) newValue; diff --git a/SWADroid/src/main/java/es/ugr/swad/swadroid/utils/Crypto.java b/SWADroid/src/main/java/es/ugr/swad/swadroid/utils/Crypto.java index a60fe8b56..069911a47 100644 --- a/SWADroid/src/main/java/es/ugr/swad/swadroid/utils/Crypto.java +++ b/SWADroid/src/main/java/es/ugr/swad/swadroid/utils/Crypto.java @@ -21,6 +21,7 @@ package es.ugr.swad.swadroid.utils; import android.content.Context; +import android.util.Log; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; @@ -34,7 +35,6 @@ import javax.crypto.spec.PBEParameterSpec; import es.ugr.swad.swadroid.Constants; -import es.ugr.swad.swadroid.analytics.SWADroidTracker; /** * Cryptographic class for encryption purposes. @@ -80,8 +80,7 @@ public Crypto(Context ctx, String passPhrase) { ecipher.init(Cipher.ENCRYPT_MODE, key, paramSpec); dcipher.init(Cipher.DECRYPT_MODE, key, paramSpec); } catch (Exception e) { - //Send exception details to Google Analytics - SWADroidTracker.sendException(mContext, e, false); + Log.e(TAG, e.getMessage()); } } @@ -99,8 +98,7 @@ public String encrypt(String str) { } catch (Exception e) { rVal = "Error encrypting: " + e.getMessage(); - //Send exception details to Google Analytics - SWADroidTracker.sendException(mContext, e, false); + Log.e(TAG, e.getMessage()); } return rVal; } @@ -119,8 +117,7 @@ public String decrypt(String str) { } catch (Exception e) { rVal = "Error encrypting: " + e.getMessage(); - //Send exception details to Google Analytics - SWADroidTracker.sendException(mContext, e, false); + Log.e(TAG, e.getMessage()); } return rVal; } diff --git a/SWADroid/src/main/java/es/ugr/swad/swadroid/utils/OldCrypto.java b/SWADroid/src/main/java/es/ugr/swad/swadroid/utils/OldCrypto.java index 5a4103a4b..c58235930 100644 --- a/SWADroid/src/main/java/es/ugr/swad/swadroid/utils/OldCrypto.java +++ b/SWADroid/src/main/java/es/ugr/swad/swadroid/utils/OldCrypto.java @@ -20,6 +20,7 @@ package es.ugr.swad.swadroid.utils; import android.content.Context; +import android.util.Log; import java.security.MessageDigest; import java.security.SecureRandom; @@ -30,7 +31,6 @@ import javax.crypto.spec.SecretKeySpec; import es.ugr.swad.swadroid.Constants; -import es.ugr.swad.swadroid.analytics.SWADroidTracker; /** * Cryptographic class for encryption purposes. @@ -49,8 +49,7 @@ public static String encrypt(Context ctx, String seed, String cleartext) { byte[] result = encrypt(rawKey, cleartext.getBytes("UTF-8")); return Base64.encodeBytes(result); } catch (Exception e) { - //Send exception details to Google Analytics - SWADroidTracker.sendException(ctx, e, false); + Log.e(TAG, e.getMessage()); } return "error"; } @@ -62,8 +61,7 @@ public static String decrypt(Context ctx, String seed, String encrypted) { byte[] result = decrypt(rawKey, enc); return new String(result, "UTF-8"); } catch (Exception e) { - //Send exception details to Google Analytics - SWADroidTracker.sendException(ctx, e, false); + Log.e(TAG, e.getMessage()); } return "error"; } @@ -107,8 +105,7 @@ public static String md5(Context ctx, final String s) { } return hexString.toString(); } catch (Exception e) { - //Send exception details to Google Analytics - SWADroidTracker.sendException(ctx, e, false); + Log.e(TAG, e.getMessage()); } return "error"; } diff --git a/SWADroid/src/prod/google-services.json.enc b/SWADroid/src/prod/google-services.json.enc new file mode 100644 index 0000000000000000000000000000000000000000..35544164af2634ed626588cf56a607bd48f4e6a7 GIT binary patch literal 1056 zcmV+*1mF8?WVBQL4r9HcS>itoF(yLs{tR-moGYrmWQ>Qb8nW8A!aRB;2}q<%N7kn- zQgyO?T&7ovt@sYEDe1VuoU{5YiBpM(;ifIA5V*l1Haynv#oJJGXD^4A`2U9|YOwo@rd&(nDCf%ITQ)!G0o8zlhWM&By+$i$Uvb$MO75&^V2 zJM1(ztX&2qMxt$dnF&+6R%xLivw=bV!k+mA0QkqYENLyXm3KdMG&I1uxl@xoRDQ;6 zWw+7->U#_xHp(TO(j2zdb@xcuL zaH`j`F(3H|h==Mw+gm85l&rW~u0BgQ;_0V?3$ljm!qAywxu#MY`d$(d_Yqtm92g7OYqI z`*ltr6r2_1PXX>|=Moa1tP4ws3EUMo7>%@jf(a&q(OR|2XG6|tuzzcBK@UgLkyR&c z^HP7}24Q$DH>CP5@j$L&mBID?N(zrl)eN0=!($U*y(jvgKUYDqyqnFA%Dv%px$I%b zXHQ{{y`&5iJdcGd;H|dVGt$hZ0);SnPe>KLAIj{S=)QOj)?I7P>n`#{YkK?M3XCab z|N1P_E~f;P4&7K1xWUw8oG*cebG#=HG!kV}H4-JCG+ob(4|LJbuwq6M^~f{ew*_r~ zL_e(W9DT&oHPU6sb^6W1YxDJqdb<==`(cwqGXK_KE-!5>IrxHDvlYP`d+_hr<$K4YAy zTTKdTLPKy){Y^WP16*1{IZj`zA{uebYnW*~XyiC+4FOvaE>+cLSJmfOOJ^|1JnUYl zMHc-!b_int literal 0 HcmV?d00001 diff --git a/build.gradle b/build.gradle index a471d87ec..6ddc4a0ac 100644 --- a/build.gradle +++ b/build.gradle @@ -5,8 +5,9 @@ buildscript { google() } dependencies { - classpath 'com.android.tools.build:gradle:3.3.2' + classpath 'com.android.tools.build:gradle:3.4.0' classpath 'org.ajoberstar:grgit:2.1.1' + classpath 'com.google.gms:google-services:4.2.0' } } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 3052942fe..434b58781 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Mon Jan 14 20:17:20 CET 2019 +#Fri Apr 19 12:17:14 CEST 2019 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-5.1.1-all.zip From f493255aa04ce5c718dd888471acc2593cd44615 Mon Sep 17 00:00:00 2001 From: Juan Miguel Boyero Corral Date: Thu, 6 Jun 2019 20:54:01 +0200 Subject: [PATCH 19/23] Migrate to android-Q (#248) --- .travis.yml | 4 ++-- SWADroid/build.gradle | 22 +++++++++---------- SWADroid/src/main/AndroidManifest.xml | 2 +- .../gui/AlertNotificationFactory.java | 2 +- .../ugr/swad/swadroid/gui/MenuActivity.java | 2 +- .../gui/MenuExpandableListActivity.java | 2 +- .../gui/SwipeListViewTouchListener.java | 2 +- .../account/CreateAccountActivity.java | 2 +- .../modules/downloads/DownloadsManager.java | 8 +++---- .../EnrollmentExpandableListAdapter.java | 4 ++-- .../modules/groups/MyGroupsManager.java | 2 +- .../swadroid/modules/login/LoginActivity.java | 2 +- .../swadroid/modules/messages/Messages.java | 2 +- .../modules/messages/SearchUsers.java | 6 ++--- .../modules/notifications/Notifications.java | 2 +- .../NotificationsExpandableListAdapter.java | 2 +- .../rollcall/ContinuousCaptureActivity.java | 2 +- .../modules/rollcall/EventsCursorAdapter.java | 2 +- .../swadroid/modules/rollcall/Rollcall.java | 2 +- .../modules/rollcall/UsersActivity.java | 8 +++---- .../tests/CheckedAnswersArrayAdapter.java | 2 +- .../swadroid/modules/tests/TestsMake.java | 4 ++-- .../expandablelist_items_pulltorefresh.xml | 4 ++-- .../res/layout/list_items_pulltorefresh.xml | 4 ++-- .../src/main/res/menu/search_users_bar.xml | 2 +- build.gradle | 2 +- gradle.properties | 2 ++ 27 files changed, 51 insertions(+), 49 deletions(-) diff --git a/.travis.yml b/.travis.yml index 2a84953bd..36ae65a06 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,8 +3,8 @@ language: android jdk: oraclejdk8 env: global: - - ANDROID_API=28 - - ANDROID_BUILD_TOOLS=28.0.3 + - ANDROID_API=29 + - ANDROID_BUILD_TOOLS=29.0.0 - secure: eY3bGKw4jZ+HHkkMBZHiL2dhcz+RJYHib0WC77SSVHLJcCg63pBvs420i4rjNQHycMs+PhRSlR79jdglDTm8svphhRjSts6VMkHDxObwJIyLF8vAZ0PfjhqfOXO+4+Fx6pRIjwM7cBMOQrDfSimJHRB+z/f2AJfUIsaMSlltGVya7nmrLY/fO4dtl4wPnejslj3mhnBAxr+a2Or978RwI2TMpxBovHZKFT/46wJTcMzKXGdXU64M8nmQmpcKHeIKIBiR4g+A2tahC+Us4tFxxoTDd3R+IAzj7Gvjd5JuMlYmQ3quRv2M08u9OJNiT14LpDXy19fZKdw/QNHg3S8JVis8kJDkv6z4HyZXTIBgISZpCZZti04GP29Lj+1f4ISRFc6uxankDuRgfX8ucsxoEPJVq3PfJlpTdP7wjlQtEGv0HF/3MNNyruNbLHFiCgHOANwEOX44INtw6XylPEftmw4y4ptntFG3VXyV1Zi+732Qe4b2QNTbvLPrsmkCRKzo59vKKAzBBhvYvFVITcWbySqdx9/n1H25SRL2Q96nPGQSQyBF6obzzFcjMKkknPle1PXvAfb171964cdIK6/zo9rh/ZCL3+gAKZibmGWvbeztWYl5ON8B8x8mgLO/qgPIotY+aqwmsY06pKrqi6adYZacMF+UgtbLJlhnird6ugk= - secure: EmcSyXk/5pEJhbRX9DSFzhQGYvGaYdxjDuQwmLuxUGitGpFQZbWexTAK/l0LLcIRsiSmucY7KJgOpL7I6odh2kVUZedarj8/5K1P69ljDDB7bfG8jyOLZvHJ1JTZRuKvUnT846zQwQWTnLXF9N4LaQ86FVqSW2bGHqptIivEjDEVh78V3g4PDsbX5aQ5LjTlSn7bezu9chpVS0fnRlqjAa6U2kUwUt+DDaSHEOs35Z89jT7JoonGFrMsyA7S26CQhOBYE3w76AllIea+MWzPJX3V364ZIzPBnQAkCz02oVI3n+LHZkzUCYHkY8DXWXNy6+/sulFa6L1v6bt8DzF1vwJ+nTNVqmqSDYBe2s1qAUZ+4o8l/THMndxC11LjbbEExG4ekBRFvRsOOf0pBps3Yr4ry27gaj4+9Ap2JCKKOQwm0izh48AJiy0Y8pzIzTO5wB5B7a4czLJmzaNWkPVXw4lKg2ldJ4sd6EBqUZqG2vRmN6VwHb8gHFNaQTH3feBRhYTpkv1wWUuhvclNn5yoZzcSxMT/b8d89e5DahoBYMW48c6jb5wL/EoY3bHp3mjtnTW8oIIjyZK8FjYX+8IqeEoue8bDDqNUN71xmRvp+0CX1iXnfgUeDWnYhXHTewOlJu6i509wGrZPxYjgwAdnpfTyGXPq7Vin9CkNHMw9fbA= before_cache: diff --git a/SWADroid/build.gradle b/SWADroid/build.gradle index 6060a7cd1..a439b73e6 100644 --- a/SWADroid/build.gradle +++ b/SWADroid/build.gradle @@ -25,27 +25,27 @@ def static getBuildConfigField(String property){ return value } -def build_param = "${build}"; +def build_param = "${build}" if (build_param != "prod") { //exclude development build android.variantFilter { variant -> - if (variant.buildType.name.equals('prod')) { - variant.setIgnore(true); + if (variant.buildType.name == 'prod') { + variant.setIgnore(true) } } } else { //exclude all except development build android.variantFilter { variant -> - if (!variant.buildType.name.equals('prod')) { - variant.setIgnore(true); + if (variant.buildType.name != 'prod') { + variant.setIgnore(true) } } } android { - compileSdkVersion "android-28" - buildToolsVersion '29.0.0-rc2' + compileSdkVersion "android-29" + buildToolsVersion '29.0.0' dexOptions { maxProcessCount=2 @@ -62,7 +62,7 @@ android { versionName gitVersionName minSdkVersion 14 - targetSdkVersion 28 + targetSdkVersion 29 testApplicationId "es.ugr.swad.swadroid.test" testInstrumentationRunner "android.test.InstrumentationTestRunner" @@ -79,13 +79,13 @@ android { } dependencies { - implementation 'com.android.support:support-v4:28.0.0' - implementation 'com.android.support:appcompat-v7:28.0.0' + implementation 'androidx.legacy:legacy-support-v4:1.0.0' + implementation 'androidx.appcompat:appcompat:1.0.2' implementation 'com.google.code.ksoap2-android:ksoap2-android:3.6.4' implementation 'commons-io:commons-io:2.6' implementation 'com.nostra13.universalimageloader:universal-image-loader:1.9.5' implementation 'com.journeyapps:zxing-android-embedded:3.6.0@aar' implementation 'com.google.zxing:core:3.3.3' implementation 'com.google.code.gson:gson:2.8.5' - implementation 'com.google.firebase:firebase-core:16.0.8' + implementation 'com.google.firebase:firebase-core:16.0.9' } \ No newline at end of file diff --git a/SWADroid/src/main/AndroidManifest.xml b/SWADroid/src/main/AndroidManifest.xml index a477ee362..1572ed681 100644 --- a/SWADroid/src/main/AndroidManifest.xml +++ b/SWADroid/src/main/AndroidManifest.xml @@ -342,7 +342,7 @@ diff --git a/SWADroid/src/main/java/es/ugr/swad/swadroid/gui/AlertNotificationFactory.java b/SWADroid/src/main/java/es/ugr/swad/swadroid/gui/AlertNotificationFactory.java index 8da8a359d..73d524deb 100644 --- a/SWADroid/src/main/java/es/ugr/swad/swadroid/gui/AlertNotificationFactory.java +++ b/SWADroid/src/main/java/es/ugr/swad/swadroid/gui/AlertNotificationFactory.java @@ -24,7 +24,7 @@ import android.app.PendingIntent; import android.content.Context; import android.graphics.BitmapFactory; -import android.support.v4.app.NotificationCompat; +import androidx.core.app.NotificationCompat; import es.ugr.swad.swadroid.utils.NotificationUtils; diff --git a/SWADroid/src/main/java/es/ugr/swad/swadroid/gui/MenuActivity.java b/SWADroid/src/main/java/es/ugr/swad/swadroid/gui/MenuActivity.java index af4e1dc6e..3dc40b030 100644 --- a/SWADroid/src/main/java/es/ugr/swad/swadroid/gui/MenuActivity.java +++ b/SWADroid/src/main/java/es/ugr/swad/swadroid/gui/MenuActivity.java @@ -26,7 +26,7 @@ import android.content.pm.ApplicationInfo; import android.net.Uri; import android.os.Bundle; -import android.support.v7.app.AppCompatActivity; +import androidx.appcompat.app.AppCompatActivity; import android.util.Log; import android.view.Menu; import android.view.MenuItem; diff --git a/SWADroid/src/main/java/es/ugr/swad/swadroid/gui/MenuExpandableListActivity.java b/SWADroid/src/main/java/es/ugr/swad/swadroid/gui/MenuExpandableListActivity.java index c0a0ed8d6..d8653bb5f 100644 --- a/SWADroid/src/main/java/es/ugr/swad/swadroid/gui/MenuExpandableListActivity.java +++ b/SWADroid/src/main/java/es/ugr/swad/swadroid/gui/MenuExpandableListActivity.java @@ -26,7 +26,7 @@ import android.content.pm.ApplicationInfo; import android.net.Uri; import android.os.Bundle; -import android.support.v7.app.AppCompatActivity; +import androidx.appcompat.app.AppCompatActivity; import android.util.Log; import android.view.Menu; import android.view.MenuItem; diff --git a/SWADroid/src/main/java/es/ugr/swad/swadroid/gui/SwipeListViewTouchListener.java b/SWADroid/src/main/java/es/ugr/swad/swadroid/gui/SwipeListViewTouchListener.java index 1dcee4783..1801deab5 100644 --- a/SWADroid/src/main/java/es/ugr/swad/swadroid/gui/SwipeListViewTouchListener.java +++ b/SWADroid/src/main/java/es/ugr/swad/swadroid/gui/SwipeListViewTouchListener.java @@ -24,7 +24,7 @@ import android.annotation.TargetApi; import android.graphics.Rect; import android.os.Build; -import android.support.v4.widget.SwipeRefreshLayout; +import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; import android.view.MotionEvent; import android.view.VelocityTracker; import android.view.View; diff --git a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/account/CreateAccountActivity.java b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/account/CreateAccountActivity.java index ae7f19ded..fc8971a09 100644 --- a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/account/CreateAccountActivity.java +++ b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/account/CreateAccountActivity.java @@ -22,7 +22,7 @@ import android.graphics.Color; import android.os.Build; import android.os.Bundle; -import android.support.v7.app.AppCompatActivity; +import androidx.appcompat.app.AppCompatActivity; import android.text.TextUtils; import android.util.Log; import android.view.KeyEvent; diff --git a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/downloads/DownloadsManager.java b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/downloads/DownloadsManager.java index 03ee6d8a0..71ab858c6 100644 --- a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/downloads/DownloadsManager.java +++ b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/downloads/DownloadsManager.java @@ -31,10 +31,10 @@ import android.os.Build; import android.os.Bundle; import android.os.Environment; -import android.support.annotation.NonNull; -import android.support.v4.app.ActivityCompat; -import android.support.v4.content.ContextCompat; -import android.support.v4.content.FileProvider; +import androidx.annotation.NonNull; +import androidx.core.app.ActivityCompat; +import androidx.core.content.ContextCompat; +import androidx.core.content.FileProvider; import android.util.Log; import android.view.KeyEvent; import android.view.View; diff --git a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/groups/EnrollmentExpandableListAdapter.java b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/groups/EnrollmentExpandableListAdapter.java index 51d476231..e18edab5c 100644 --- a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/groups/EnrollmentExpandableListAdapter.java +++ b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/groups/EnrollmentExpandableListAdapter.java @@ -21,8 +21,8 @@ import android.content.Context; import android.graphics.Color; import android.graphics.Typeface; -import android.support.v4.content.ContextCompat; -import android.support.v4.util.LongSparseArray; +import androidx.core.content.ContextCompat; +import androidx.collection.LongSparseArray; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; diff --git a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/groups/MyGroupsManager.java b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/groups/MyGroupsManager.java index c9edeeed5..9665f737e 100644 --- a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/groups/MyGroupsManager.java +++ b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/groups/MyGroupsManager.java @@ -24,7 +24,7 @@ import android.content.DialogInterface.OnClickListener; import android.content.Intent; import android.os.Bundle; -import android.support.v4.util.LongSparseArray; +import androidx.collection.LongSparseArray; import android.view.Menu; import android.view.MenuItem; import android.view.View; diff --git a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/login/LoginActivity.java b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/login/LoginActivity.java index 6d038fec8..58b3ed631 100644 --- a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/login/LoginActivity.java +++ b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/login/LoginActivity.java @@ -21,7 +21,7 @@ import android.content.Intent; import android.graphics.Color; import android.os.Bundle; -import android.support.v7.app.AppCompatActivity; +import androidx.appcompat.app.AppCompatActivity; import android.text.InputType; import android.text.TextUtils; import android.util.Log; diff --git a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/messages/Messages.java b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/messages/Messages.java index 5db1db31e..c36081c1b 100644 --- a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/messages/Messages.java +++ b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/messages/Messages.java @@ -22,7 +22,7 @@ import android.content.Intent; import android.graphics.Paint; import android.os.Bundle; -import android.support.v7.app.AlertDialog; +import androidx.appcompat.app.AlertDialog; import android.util.Log; import android.view.LayoutInflater; import android.view.Menu; diff --git a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/messages/SearchUsers.java b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/messages/SearchUsers.java index ca0b8027c..d9de75cd5 100644 --- a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/messages/SearchUsers.java +++ b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/messages/SearchUsers.java @@ -7,9 +7,9 @@ import android.graphics.Typeface; import android.os.Build; import android.os.Bundle; -import android.support.v4.view.MenuItemCompat; -import android.support.v7.app.AlertDialog; -import android.support.v7.widget.SearchView; +import androidx.core.view.MenuItemCompat; +import androidx.appcompat.app.AlertDialog; +import androidx.appcompat.widget.SearchView; import android.text.SpannableString; import android.text.style.StyleSpan; import android.util.Log; diff --git a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/notifications/Notifications.java b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/notifications/Notifications.java index 0b6511878..10bd52e6b 100644 --- a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/notifications/Notifications.java +++ b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/notifications/Notifications.java @@ -30,7 +30,7 @@ import android.content.IntentFilter; import android.os.Build; import android.os.Bundle; -import android.support.v4.widget.SwipeRefreshLayout; +import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; import android.util.Log; import android.view.Menu; import android.view.MenuItem; diff --git a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/notifications/NotificationsExpandableListAdapter.java b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/notifications/NotificationsExpandableListAdapter.java index 08fd4b290..744fc11df 100644 --- a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/notifications/NotificationsExpandableListAdapter.java +++ b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/notifications/NotificationsExpandableListAdapter.java @@ -20,7 +20,7 @@ import android.app.Activity; import android.graphics.Typeface; -import android.support.v4.content.ContextCompat; +import androidx.core.content.ContextCompat; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; diff --git a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/rollcall/ContinuousCaptureActivity.java b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/rollcall/ContinuousCaptureActivity.java index fa80af081..75bd4471b 100644 --- a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/rollcall/ContinuousCaptureActivity.java +++ b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/rollcall/ContinuousCaptureActivity.java @@ -3,7 +3,7 @@ import android.media.MediaPlayer; import android.os.Bundle; import android.os.Handler; -import android.support.v7.app.AppCompatActivity; +import androidx.appcompat.app.AppCompatActivity; import android.util.Log; import android.view.Gravity; import android.view.KeyEvent; diff --git a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/rollcall/EventsCursorAdapter.java b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/rollcall/EventsCursorAdapter.java index 3a8ad9f3c..c86f3c0c4 100644 --- a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/rollcall/EventsCursorAdapter.java +++ b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/rollcall/EventsCursorAdapter.java @@ -23,7 +23,7 @@ import android.content.Context; import android.database.Cursor; import android.graphics.Typeface; -import android.support.v4.content.ContextCompat; +import androidx.core.content.ContextCompat; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; diff --git a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/rollcall/Rollcall.java b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/rollcall/Rollcall.java index 4686ba7e7..ba15feb59 100644 --- a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/rollcall/Rollcall.java +++ b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/rollcall/Rollcall.java @@ -27,7 +27,7 @@ import android.os.Build; import android.os.Bundle; import android.os.Handler; -import android.support.v4.widget.SwipeRefreshLayout; +import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; import android.util.Log; import android.view.View; import android.widget.AbsListView; diff --git a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/rollcall/UsersActivity.java b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/rollcall/UsersActivity.java index 765e5e359..276f43dd5 100644 --- a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/rollcall/UsersActivity.java +++ b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/rollcall/UsersActivity.java @@ -31,10 +31,10 @@ import android.os.Build; import android.os.Bundle; import android.os.Handler; -import android.support.annotation.NonNull; -import android.support.v4.app.ActivityCompat; -import android.support.v4.content.ContextCompat; -import android.support.v4.widget.SwipeRefreshLayout; +import androidx.annotation.NonNull; +import androidx.core.app.ActivityCompat; +import androidx.core.content.ContextCompat; +import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; import android.util.Log; import android.view.Menu; import android.view.MenuItem; diff --git a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/tests/CheckedAnswersArrayAdapter.java b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/tests/CheckedAnswersArrayAdapter.java index 6e1ce4f41..051d25d40 100644 --- a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/tests/CheckedAnswersArrayAdapter.java +++ b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/tests/CheckedAnswersArrayAdapter.java @@ -20,7 +20,7 @@ import android.content.Context; import android.graphics.Color; -import android.support.v4.content.ContextCompat; +import androidx.core.content.ContextCompat; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; diff --git a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/tests/TestsMake.java b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/tests/TestsMake.java index 84cd2d2d5..a963b9c30 100644 --- a/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/tests/TestsMake.java +++ b/SWADroid/src/main/java/es/ugr/swad/swadroid/modules/tests/TestsMake.java @@ -23,8 +23,8 @@ import android.graphics.Color; import android.os.Build; import android.os.Bundle; -import android.support.v4.content.ContextCompat; -import android.support.v4.view.MenuItemCompat; +import androidx.core.content.ContextCompat; +import androidx.core.view.MenuItemCompat; import android.text.InputType; import android.util.Log; import android.util.SparseBooleanArray; diff --git a/SWADroid/src/main/res/layout/expandablelist_items_pulltorefresh.xml b/SWADroid/src/main/res/layout/expandablelist_items_pulltorefresh.xml index efae9c314..e7976b175 100644 --- a/SWADroid/src/main/res/layout/expandablelist_items_pulltorefresh.xml +++ b/SWADroid/src/main/res/layout/expandablelist_items_pulltorefresh.xml @@ -9,7 +9,7 @@ android:id="@+id/courseNameLayout" layout="@layout/course_or_group_name" /> - @@ -30,6 +30,6 @@ android:layout_height="match_parent" android:cacheColorHint="@color/background" /> - + \ No newline at end of file diff --git a/SWADroid/src/main/res/layout/list_items_pulltorefresh.xml b/SWADroid/src/main/res/layout/list_items_pulltorefresh.xml index 1caf689c8..591d04dcd 100644 --- a/SWADroid/src/main/res/layout/list_items_pulltorefresh.xml +++ b/SWADroid/src/main/res/layout/list_items_pulltorefresh.xml @@ -7,7 +7,7 @@ - @@ -29,6 +29,6 @@ android:cacheColorHint="@color/background" > - + \ No newline at end of file diff --git a/SWADroid/src/main/res/menu/search_users_bar.xml b/SWADroid/src/main/res/menu/search_users_bar.xml index d22182ecd..938d5f3b6 100644 --- a/SWADroid/src/main/res/menu/search_users_bar.xml +++ b/SWADroid/src/main/res/menu/search_users_bar.xml @@ -6,7 +6,7 @@ android:id="@+id/action_search_field" android:icon="@drawable/ic_search_user" swadroid:showAsAction="ifRoom|collapseActionView" - swadroid:actionViewClass="android.support.v7.widget.SearchView" + swadroid:actionViewClass="androidx.appcompat.widget.SearchView" android:title="@string/search" /> Date: Mon, 8 Jul 2019 18:05:57 +0200 Subject: [PATCH 20/23] Update Firebase dependency (#249) --- SWADroid/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/SWADroid/build.gradle b/SWADroid/build.gradle index a439b73e6..da0b9eebd 100644 --- a/SWADroid/build.gradle +++ b/SWADroid/build.gradle @@ -61,7 +61,7 @@ android { versionCode gitVersionCode versionName gitVersionName - minSdkVersion 14 + minSdkVersion 16 targetSdkVersion 29 testApplicationId "es.ugr.swad.swadroid.test" @@ -87,5 +87,5 @@ dependencies { implementation 'com.journeyapps:zxing-android-embedded:3.6.0@aar' implementation 'com.google.zxing:core:3.3.3' implementation 'com.google.code.gson:gson:2.8.5' - implementation 'com.google.firebase:firebase-core:16.0.9' + implementation 'com.google.firebase:firebase-core:17.0.0' } \ No newline at end of file From c98bef57219ac5286a0614ba52b539414e669517 Mon Sep 17 00:00:00 2001 From: Juan Miguel Boyero Corral Date: Mon, 8 Jul 2019 18:44:37 +0200 Subject: [PATCH 21/23] Disable CHANGELOG popup on application upgrade (#250) --- .../src/main/java/es/ugr/swad/swadroid/SWADMain.java | 10 +++++++++- .../es/ugr/swad/swadroid/database/DataBaseHelper.java | 5 +++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/SWADroid/src/main/java/es/ugr/swad/swadroid/SWADMain.java b/SWADroid/src/main/java/es/ugr/swad/swadroid/SWADMain.java index 94b849cc6..36107337e 100644 --- a/SWADroid/src/main/java/es/ugr/swad/swadroid/SWADMain.java +++ b/SWADroid/src/main/java/es/ugr/swad/swadroid/SWADMain.java @@ -178,6 +178,7 @@ public void onCreate(Bundle icicle) { //If this is an upgrade, show upgrade dialog } else if (lastVersion < currentVersion) { + //showUpgradeDialog(this); upgradeApp(lastVersion, currentVersion); } @@ -239,6 +240,8 @@ private void showBirthdayMessage() { * @param currentVersion Current version of application */ private void firstRun(int currentVersion) { + Log.i(TAG, "Running application for first time. Setting current version to " + currentVersion); + Intent activity = new Intent(this, AccountAuthenticator.class); //Configure automatic synchronization @@ -249,6 +252,8 @@ private void firstRun(int currentVersion) { firstRun = true; Preferences.initializeSelectedCourse(); + + Log.i(TAG, "First initialization completed successfully"); } /** @@ -257,7 +262,8 @@ private void firstRun(int currentVersion) { * @param currentVersion Version to which the application is updated */ private void upgradeApp(int lastVersion, int currentVersion) throws NoSuchAlgorithmException { - showUpgradeDialog(this); + Log.i(TAG, "Upgrading application from version " + lastVersion + " to version " + currentVersion); + dbHelper.upgradeDB(); if(lastVersion < 52) { @@ -280,6 +286,8 @@ private void upgradeApp(int lastVersion, int currentVersion) throws NoSuchAlgori } Preferences.setLastVersion(currentVersion); + + Log.i(TAG, "Application upgraded from version " + lastVersion + " to version " + currentVersion); } @Override diff --git a/SWADroid/src/main/java/es/ugr/swad/swadroid/database/DataBaseHelper.java b/SWADroid/src/main/java/es/ugr/swad/swadroid/database/DataBaseHelper.java index 35fd7dcfd..d917201db 100644 --- a/SWADroid/src/main/java/es/ugr/swad/swadroid/database/DataBaseHelper.java +++ b/SWADroid/src/main/java/es/ugr/swad/swadroid/database/DataBaseHelper.java @@ -2320,6 +2320,7 @@ public void clearDB() { * Clean data of all tables from database. Removes users photos from external storage */ public void cleanTables() { + Log.i(TAG, "Emptying all tables"); db.emptyTables(); compactDB(); @@ -2372,6 +2373,7 @@ public boolean isDbInTransaction() { * Compact the database */ private void compactDB() { + Log.i(TAG, "Compacting database"); db.getDB().execSQL("VACUUM;"); Log.i(TAG, "Database compacted"); } @@ -2390,6 +2392,9 @@ public void initializeDB() { */ public void upgradeDB() { int dbVersion = db.getDB().getVersion(); + + Log.i(TAG, "Upgrading database"); + /* * Modify database keeping data: * 1. Create temporary table __DB_TABLE_GROUPS (with the new model) From a90f540b0f86c788272281eb766e58a6dc08cbe9 Mon Sep 17 00:00:00 2001 From: Juan Miguel Boyero Corral Date: Mon, 8 Jul 2019 19:39:19 +0200 Subject: [PATCH 22/23] Fix CHANGELOG typos (#251) --- SWADroid/src/main/res/raw-es/changes.html | 16 ++++++++-------- SWADroid/src/main/res/raw/changes.html | 16 ++++++++-------- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/SWADroid/src/main/res/raw-es/changes.html b/SWADroid/src/main/res/raw-es/changes.html index 1b693af55..d696478f2 100644 --- a/SWADroid/src/main/res/raw-es/changes.html +++ b/SWADroid/src/main/res/raw-es/changes.html @@ -18,7 +18,7 @@

1.5.4 (2018-02-25)

    [CORRECCIONES] -
  • Grupos: Corregida visualización del nombre de los grupos de selección única
  • +
  • Grupos: Corregida visualización del nombre de los grupos de selección única
@@ -46,27 +46,27 @@

1.5.1 (2017-01-21)

1.5.0 (2016-09-01)

    [NOVEDADES] -
  • Mensajes: Añadida búsqueda de destinatarios
  • +
  • Mensajes: Añadida búsqueda de destinatarios

1.4.0 (2016-07-25)

    [NOVEDADES] -
  • Menú principal: Añadido menú para +
  • Menú principal: Añadido menú para usuarios que no tienen ninguna asignatura
    [CORRECCIONES] -
  • Calificaciones: Corregida consulta de calificaciones desde el rol estudiante
  • +
  • Calificaciones: Corregida consulta de calificaciones desde el rol estudiante

1.3.4 (2016-07-17)

    [ACTUALIZACIONES] -
  • Login: Ahora es obligatorio seleccionar el servidor correcto
  • -
  • Pasar lista: Ahora se pueden escanear códigos en cualquier orientación +
  • Login: Ahora es obligatorio seleccionar el servidor correcto
  • +
  • Pasar lista: Ahora se pueden escanear códigos en cualquier orientación del dispositivo
  • -
  • Calificaciones: Ahora se muestra un aviso si el ID (DNI/Cédula) del estudiante +
  • Calificaciones: Ahora se muestra un aviso si el ID (DNI-Cédula) del estudiante no ha sido verificado por el profesor o si no existen calificaciones disponibles
  • -
  • Interfaz: Mejoras menores
  • +
  • Interfaz: Mejoras menores

1.3.3 (2016-01-31)

    diff --git a/SWADroid/src/main/res/raw/changes.html b/SWADroid/src/main/res/raw/changes.html index 0b3b60c4d..b580e9dd2 100644 --- a/SWADroid/src/main/res/raw/changes.html +++ b/SWADroid/src/main/res/raw/changes.html @@ -18,7 +18,7 @@

    1.5.4 (2018-02-25)

      [FIXES] -
    • Groups: Fixed display of the name of single choice groups
    • +
    • Groups: Fixed display of the name of single choice groups
    @@ -46,25 +46,25 @@

    1.5.1 (2017-01-21)

    1.5.0 (2016-09-01)

      [NEW] -
    • Messages: Added search of recipients
    • +
    • Messages: Added search of recipients

    1.4.0 (2016-07-25)

      [NEW] -
    • Main menu: Added menu for users who have no course
    • +
    • Main menu: Added menu for users who have no course
      [FIXES] -
    • Marks: Fixed consultation of marks from the student role
    • +
    • Marks: Fixed consultation of marks from the student role

    1.3.4 (2016-07-17)

      [UPDATES] -
    • Login: Now it is mandatory to select a server
    • -
    • Rollcall: Now you can scan codes in any orientation of the device
    • -
    • Marks: Now a warning is showed if the student ID has not yet been verified +
    • Login: Now it is mandatory to select a server
    • +
    • Rollcall: Now you can scan codes in any orientation of the device
    • +
    • Marks: Now a warning is showed if the student ID has not yet been verified by the teacher or there are no marks currently available
    • -
    • UI: Minor improvements
    • +
    • UI: Minor improvements

    1.3.3 (2016-01-31)

      From 43ff17b45a14e87eacfb259e4045472342f4fdaa Mon Sep 17 00:00:00 2001 From: Amab Date: Mon, 8 Jul 2019 19:51:05 +0200 Subject: [PATCH 23/23] Updated CHANGELOG --- SWADroid/src/main/res/raw-es/changes.html | 7 +++++++ SWADroid/src/main/res/raw/changes.html | 7 +++++++ 2 files changed, 14 insertions(+) diff --git a/SWADroid/src/main/res/raw-es/changes.html b/SWADroid/src/main/res/raw-es/changes.html index d696478f2..1814b9a6e 100644 --- a/SWADroid/src/main/res/raw-es/changes.html +++ b/SWADroid/src/main/res/raw-es/changes.html @@ -14,6 +14,13 @@ + +

      1.5.5 (2019-07-08)

      +
        +
      • Añadido soporte para Android-Q
      • +
      • Corregidas erratas en el historial de cambios
      • +
      +

      1.5.4 (2018-02-25)

        diff --git a/SWADroid/src/main/res/raw/changes.html b/SWADroid/src/main/res/raw/changes.html index b580e9dd2..47ea3ef9a 100644 --- a/SWADroid/src/main/res/raw/changes.html +++ b/SWADroid/src/main/res/raw/changes.html @@ -14,6 +14,13 @@ + +

        1.5.5 (2019-07-08)

        +
          +
        • Added support for Android-Q
        • +
        • Fixed CHANGELOG typos
        • +
        +

        1.5.4 (2018-02-25)