diff --git a/bolts-tasks/build.gradle b/bolts-tasks/build.gradle
index 22bcb8bdb..6e7db14c3 100644
--- a/bolts-tasks/build.gradle
+++ b/bolts-tasks/build.gradle
@@ -4,7 +4,6 @@
// LICENSE file in the root directory of this source tree.
apply plugin: 'java'
-apply plugin: 'maven'
configurations {
provided
@@ -18,7 +17,7 @@ sourceSets {
dependencies {
provided 'com.google.android:android:4.1.1.4'
- testImplementation 'junit:junit:4.12'
+ testImplementation 'junit:junit:4.13.2'
}
diff --git a/build.gradle b/build.gradle
index 586f69f2c..7af27442f 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,25 +1,24 @@
buildscript {
- ext.kotlin_version = "1.4.10"
+ ext.kotlin_version = "1.4.32"
repositories {
google()
- jcenter()
+ mavenCentral()
}
dependencies {
- classpath "com.android.tools.build:gradle:3.6.2"
+ classpath "com.android.tools.build:gradle:4.1.3"
classpath "org.kt3k.gradle.plugin:coveralls-gradle-plugin:2.8.3"
- classpath "com.github.dcendents:android-maven-gradle-plugin:2.1"
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
plugins {
- id "com.github.ben-manes.versions" version "0.28.0"
+ id "com.github.ben-manes.versions" version "0.38.0"
}
allprojects {
repositories {
google()
- jcenter()
+ mavenCentral()
}
}
diff --git a/coroutines/build.gradle b/coroutines/build.gradle
index 00e93ae2a..c32c42fca 100644
--- a/coroutines/build.gradle
+++ b/coroutines/build.gradle
@@ -29,7 +29,7 @@ android {
}
ext {
- coroutinesVersion = "1.3.9"
+ coroutinesVersion = "1.4.3"
}
dependencies {
@@ -38,5 +38,3 @@ dependencies {
api "org.jetbrains.kotlinx:kotlinx-coroutines-android:$coroutinesVersion"
implementation project(":parse")
}
-
-apply from: "https://raw.githubusercontent.com/Commit451/gradle-android-javadocs/1.1.0/gradle-android-javadocs.gradle"
diff --git a/facebook/build.gradle b/facebook/build.gradle
index 08627f308..18b60096b 100644
--- a/facebook/build.gradle
+++ b/facebook/build.gradle
@@ -20,12 +20,10 @@ android {
}
dependencies {
- api "com.facebook.android:facebook-login:6.3.0"
+ api "com.facebook.android:facebook-login:9.1.0"
implementation project(":parse")
- testImplementation "junit:junit:4.13"
+ testImplementation "junit:junit:4.13.2"
testImplementation "org.mockito:mockito-core:1.10.19"
testImplementation "org.robolectric:robolectric:3.8"
}
-
-apply from: "https://raw.githubusercontent.com/Commit451/gradle-android-javadocs/1.1.0/gradle-android-javadocs.gradle"
diff --git a/fcm/build.gradle b/fcm/build.gradle
index 48b8ff812..673b7fc13 100644
--- a/fcm/build.gradle
+++ b/fcm/build.gradle
@@ -28,8 +28,6 @@ android {
}
dependencies {
- api "com.google.firebase:firebase-messaging:20.1.5"
+ api "com.google.firebase:firebase-messaging:21.1.0"
implementation project(":parse")
}
-
-apply from: "https://raw.githubusercontent.com/Commit451/gradle-android-javadocs/1.1.0/gradle-android-javadocs.gradle"
diff --git a/fcm/src/main/java/com/parse/fcm/ParseFCM.java b/fcm/src/main/java/com/parse/fcm/ParseFCM.java
index 5efd90bad..fcea28400 100644
--- a/fcm/src/main/java/com/parse/fcm/ParseFCM.java
+++ b/fcm/src/main/java/com/parse/fcm/ParseFCM.java
@@ -17,7 +17,7 @@ public class ParseFCM {
static final String TAG = "ParseFCM";
- private static final String PUSH_TYPE = "gcm"; // Backwards compatability with Parse servers
+ private static final String PUSH_TYPE = "gcm"; // Backwards compatibility with Parse servers
/**
* You can call this manually if you are overriding the {@link com.google.firebase.messaging.FirebaseMessagingService}
diff --git a/gcm/.gitignore b/gcm/.gitignore
deleted file mode 100644
index 796b96d1c..000000000
--- a/gcm/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/build
diff --git a/gcm/README.md b/gcm/README.md
deleted file mode 100644
index 825f97307..000000000
--- a/gcm/README.md
+++ /dev/null
@@ -1,85 +0,0 @@
-# Parse SDK Android GCM
-GCM support for Parse Android apps
-
-## Deprecated
-Please note that GCM is deprecated in favor of FCM. This module exists as a backwards compatible solution for projects already using GCM. New apps should instead use FCM. Note that if your app targets Android Q or later, [GCM will not function](https://developers.google.com/cloud-messaging/faq)
-
-## Dependency
-
-After including JitPack:
-```gradle
-dependencies {
- implementation "com.github.parse-community.Parse-SDK-Android:gcm:latest.version.here"
-}
-```
-
-You will then need to register some things in your manifest, firstly, the GCM sender ID:
-```xml
-
-```
-The sender ID should be all numbers. Make sure you are keeping the `id:` in the front.
-
-Next you will register the GcmReceiver:
-```xml
-
-
-
-
-
-
-```
-And to listen for the pushes from GCM:
-```xml
-
-
-
-
-
-```
-And finally, to register the device for GCM pushes:
-```xml
-
-
-
-
-
-```
-
-After these services are registered in the Manifest, you then need to register your push broadcast receiver:
-```xml
-
-
-
-
-
-
-
-```
-
-After this, you are all set. Adding the `parse-gcm-android` package will include a [ParseGCMJobService](https://github.com/parse-community/Parse-SDK-Android/blob/master/gcm/src/main/java/com/parse/gcm/ParseGCMJobService.java) in the `AndroidManifest.xml` file that will register for a GCM token when the app starts. You should see `ParseGCM: GCM registration success` messages assuming you have enabled logging:
-
-```java
-Parse.setLogLevel(Parse.LOG_LEVEL_DEBUG);
-```
-
-## Custom Notifications
-If you need to customize the notification that is sent out from a push, you can do so easily by extending `ParsePushBroadcastReceiver` with your own class and registering it instead in the Manifest.
-
-## License
- Copyright (c) 2015-present, Parse, LLC.
- All rights reserved.
-
- This source code is licensed under the BSD-style license found in the
- LICENSE file in the root directory of this source tree. An additional grant
- of patent rights can be found in the PATENTS file in the same directory.
diff --git a/gcm/build.gradle b/gcm/build.gradle
deleted file mode 100644
index 4da70e8f2..000000000
--- a/gcm/build.gradle
+++ /dev/null
@@ -1,40 +0,0 @@
-apply plugin: "com.android.library"
-
-android {
- compileSdkVersion rootProject.ext.compileSdkVersion
-
- defaultConfig {
- minSdkVersion rootProject.ext.minSdkVersion
- targetSdkVersion rootProject.ext.targetSdkVersion
- versionCode 1
- versionName "1.0"
-
- testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
-
- }
-
- packagingOptions {
- exclude "**/BuildConfig.class"
- }
-
- lintOptions {
- abortOnError false
- }
-
- buildTypes {
- release {
- minifyEnabled false
- proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
- }
- }
-
-}
-
-dependencies {
- // last version for GCM to be supported
- api "com.google.android.gms:play-services-gcm:12.0.1"
- api "com.firebase:firebase-jobdispatcher:0.8.6"
- implementation project(":parse")
-}
-
-apply from: "https://raw.githubusercontent.com/Commit451/gradle-android-javadocs/1.1.0/gradle-android-javadocs.gradle"
diff --git a/gcm/proguard-rules.pro b/gcm/proguard-rules.pro
deleted file mode 100644
index f1b424510..000000000
--- a/gcm/proguard-rules.pro
+++ /dev/null
@@ -1,21 +0,0 @@
-# Add project specific ProGuard rules here.
-# You can control the set of applied configuration files using the
-# proguardFiles setting in build.gradle.
-#
-# For more details, see
-# http://developer.android.com/guide/developing/tools/proguard.html
-
-# If your project uses WebView with JS, uncomment the following
-# and specify the fully qualified class name to the JavaScript interface
-# class:
-#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
-# public *;
-#}
-
-# Uncomment this to preserve the line number information for
-# debugging stack traces.
-#-keepattributes SourceFile,LineNumberTable
-
-# If you keep the line number information, uncomment this to
-# hide the original source file name.
-#-renamesourcefileattribute SourceFile
diff --git a/gcm/src/main/AndroidManifest.xml b/gcm/src/main/AndroidManifest.xml
deleted file mode 100644
index 2c9bcc51c..000000000
--- a/gcm/src/main/AndroidManifest.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/gcm/src/main/java/com/parse/gcm/ParseGCM.java b/gcm/src/main/java/com/parse/gcm/ParseGCM.java
deleted file mode 100644
index 699e5015c..000000000
--- a/gcm/src/main/java/com/parse/gcm/ParseGCM.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * Copyright (c) 2015-present, Parse, LLC.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- */
-package com.parse.gcm;
-
-import android.content.Context;
-import android.os.Bundle;
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-
-import com.firebase.jobdispatcher.FirebaseJobDispatcher;
-import com.firebase.jobdispatcher.GooglePlayDriver;
-import com.firebase.jobdispatcher.Job;
-import com.parse.ManifestInfo;
-import com.parse.PLog;
-
-/**
- * Entry point into setting up Parse GCM Push
- */
-public class ParseGCM {
-
- static final String TAG = "ParseGCM";
-
- private static final String SENDER_ID_EXTRA = "com.parse.push.gcm_sender_id";
-
- /**
- * Register your app to start receiving GCM pushes
- *
- * @param context context
- */
- public static void register(@NonNull Context context) {
- //kicks off the background job
- PLog.d(TAG, "Scheduling job to register Parse GCM");
- FirebaseJobDispatcher dispatcher = new FirebaseJobDispatcher(new GooglePlayDriver(context.getApplicationContext()));
- Job job = ParseGCMJobService.createJob(dispatcher, gcmSenderFromManifest(context));
- dispatcher.mustSchedule(job);
- }
-
- @Nullable
- private static String gcmSenderFromManifest(Context context) {
- // Look for an element like this as a child of the element:
- //
- //
- //
- // The reason why the "id:" prefix is necessary is because Android treats any metadata value
- // that is a string of digits as an integer. So the call to Bundle.getString() will actually
- // return null for `android:value="567327206255"`. Additionally, Bundle.getInteger() returns
- // a 32-bit integer. For `android:value="567327206255"`, this returns a truncated integer
- // because 567327206255 is larger than the largest 32-bit integer.
- Bundle metaData = ManifestInfo.getApplicationMetadata(context);
- String senderID = null;
-
- if (metaData != null) {
- Object senderIDExtra = metaData.get(SENDER_ID_EXTRA);
-
- if (senderIDExtra != null) {
- senderID = actualSenderIDFromExtra(senderIDExtra);
-
- if (senderID == null) {
- PLog.e(TAG, "Found " + SENDER_ID_EXTRA + " element with value \"" +
- senderIDExtra.toString() + "\", but the value is missing the expected \"id:\" " +
- "prefix.");
- return null;
- }
- }
- }
-
- if (senderID == null) {
- PLog.e(TAG, "You must provide " + SENDER_ID_EXTRA + " in your AndroidManifest.xml\n" +
- "Make sure to prefix with the value with id:\n\n" +
- "\" />");
- return null;
- }
- return senderID;
- }
-
- private static String actualSenderIDFromExtra(Object senderIDExtra) {
- if (!(senderIDExtra instanceof String)) {
- return null;
- }
-
- String senderID = (String) senderIDExtra;
- if (!senderID.startsWith("id:")) {
- return null;
- }
-
- return senderID.substring(3);
- }
-}
diff --git a/gcm/src/main/java/com/parse/gcm/ParseGCMInstanceIDListenerService.java b/gcm/src/main/java/com/parse/gcm/ParseGCMInstanceIDListenerService.java
deleted file mode 100644
index fe371a989..000000000
--- a/gcm/src/main/java/com/parse/gcm/ParseGCMInstanceIDListenerService.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package com.parse.gcm;
-
-import com.google.android.gms.iid.InstanceIDListenerService;
-
-/**
- * Listens for GCM token refreshes and kicks off a background job to save the token
- */
-public class ParseGCMInstanceIDListenerService extends InstanceIDListenerService {
-
- @Override
- public void onTokenRefresh() {
- super.onTokenRefresh();
- ParseGCM.register(getApplicationContext());
- }
-}
diff --git a/gcm/src/main/java/com/parse/gcm/ParseGCMJobService.java b/gcm/src/main/java/com/parse/gcm/ParseGCMJobService.java
deleted file mode 100644
index 113d935f7..000000000
--- a/gcm/src/main/java/com/parse/gcm/ParseGCMJobService.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Copyright (c) 2015-present, Parse, LLC.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- */
-package com.parse.gcm;
-
-import android.os.Bundle;
-
-import com.firebase.jobdispatcher.Constraint;
-import com.firebase.jobdispatcher.FirebaseJobDispatcher;
-import com.firebase.jobdispatcher.Job;
-import com.firebase.jobdispatcher.JobParameters;
-import com.firebase.jobdispatcher.JobService;
-import com.firebase.jobdispatcher.RetryStrategy;
-import com.google.android.gms.gcm.GoogleCloudMessaging;
-import com.google.android.gms.iid.InstanceID;
-import com.parse.PLog;
-import com.parse.ParseInstallation;
-
-import java.util.concurrent.Callable;
-
-import com.parse.boltsinternal.Task;
-
-/**
- * Handles saving the GCM token to the Parse Installation
- */
-public class ParseGCMJobService extends JobService {
-
- private static final String JOB_TAG_REGISTER = "register";
- private static final String KEY_GCM_SENDER_ID = "gcm_sender_id";
- private static final String PUSH_TYPE = "gcm";
-
- static Job createJob(FirebaseJobDispatcher dispatcher, String gcmSenderId) {
- Bundle extras = new Bundle();
- extras.putString(KEY_GCM_SENDER_ID, gcmSenderId);
- return dispatcher.newJobBuilder()
- .setExtras(extras)
- .setRecurring(false)
- .setReplaceCurrent(true)
- // retry with exponential backoff
- .setRetryStrategy(RetryStrategy.DEFAULT_EXPONENTIAL)
- .setConstraints(
- // only run on a network
- Constraint.ON_ANY_NETWORK
- )
- .setService(ParseGCMJobService.class) // the JobService that will be called
- .setTag(JOB_TAG_REGISTER) // uniquely identifies the job
- .build();
- }
-
- @Override
- public boolean onStartJob(final JobParameters job) {
- PLog.d(ParseGCM.TAG, "Updating GCM token");
-
- Task.callInBackground(new Callable() {
- @Override
- public Void call() {
- try {
- InstanceID instanceID = InstanceID.getInstance(getApplicationContext());
- String senderId = job.getExtras().getString(KEY_GCM_SENDER_ID);
- String token = instanceID.getToken(senderId,
- GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);
- ParseInstallation installation = ParseInstallation.getCurrentInstallation();
- installation.setDeviceToken(token);
- //even though this is FCM, calling it gcm will work on the backend
- installation.setPushType(PUSH_TYPE);
- installation.save();
- PLog.d(ParseGCM.TAG, "GCM registration success");
- } catch (Exception e) {
- PLog.e(ParseGCM.TAG, "GCM registration failed", e);
- jobFinished(job, true);
- }
- return null;
- }
- });
- return true; // Answers the question: "Is there still work going on?"
- }
-
- @Override
- public boolean onStopJob(JobParameters job) {
- return true; // Answers the question: "Should this job be retried?"
- }
-}
diff --git a/gcm/src/main/java/com/parse/gcm/ParseGCMListenerService.java b/gcm/src/main/java/com/parse/gcm/ParseGCMListenerService.java
deleted file mode 100644
index e379a531e..000000000
--- a/gcm/src/main/java/com/parse/gcm/ParseGCMListenerService.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package com.parse.gcm;
-
-import android.os.Bundle;
-
-import com.google.android.gms.gcm.GcmListenerService;
-import com.parse.PLog;
-import com.parse.PushRouter;
-
-import org.json.JSONException;
-import org.json.JSONObject;
-
-public class ParseGCMListenerService extends GcmListenerService {
-
- @Override
- public void onMessageReceived(String s, Bundle bundle) {
- super.onMessageReceived(s, bundle);
- String pushId = bundle.getString("push_id");
- String timestamp = bundle.getString("time");
- String dataString = bundle.getString("data");
- String channel = bundle.getString("channel");
-
- JSONObject data = null;
- if (dataString != null) {
- try {
- data = new JSONObject(dataString);
- } catch (JSONException e) {
- PLog.e(ParseGCM.TAG, "Ignoring push because of JSON exception while processing: " + dataString, e);
- return;
- }
- }
-
- PushRouter.getInstance().handlePush(pushId, timestamp, channel, data);
- }
-}
diff --git a/google/build.gradle b/google/build.gradle
index 32a100232..d163ebf0f 100644
--- a/google/build.gradle
+++ b/google/build.gradle
@@ -22,8 +22,6 @@ android {
dependencies {
api "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
- api "com.google.android.gms:play-services-auth:18.0.0"
+ api "com.google.android.gms:play-services-auth:19.0.0"
implementation project(":parse")
}
-
-apply from: "https://raw.githubusercontent.com/Commit451/gradle-android-javadocs/1.1.0/gradle-android-javadocs.gradle"
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 0ebb3108e..3c4101c3e 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-7.0-all.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
diff --git a/ktx/build.gradle b/ktx/build.gradle
index b60b1fcd1..b1e17de5d 100644
--- a/ktx/build.gradle
+++ b/ktx/build.gradle
@@ -36,5 +36,3 @@ dependencies {
api "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation project(":parse")
}
-
-apply from: "https://raw.githubusercontent.com/Commit451/gradle-android-javadocs/1.1.0/gradle-android-javadocs.gradle"
diff --git a/parse/build.gradle b/parse/build.gradle
index 303f7a27a..33a24486e 100644
--- a/parse/build.gradle
+++ b/parse/build.gradle
@@ -33,8 +33,8 @@ ext {
}
dependencies {
- api "androidx.annotation:annotation:1.1.0"
- api "androidx.core:core:1.2.0"
+ api "androidx.annotation:annotation:1.2.0"
+ api "androidx.core:core:1.3.2"
api "com.squareup.okhttp3:okhttp:$okhttpVersion"
api project(':bolts-tasks')
@@ -56,21 +56,25 @@ task jacocoTestReport(type: JacocoReport, dependsOn: "testDebugUnitTest") {
group = "Reporting"
description = "Generate Jacoco coverage reports"
- classDirectories = fileTree(
- dir: "${buildDir}/intermediates/classes/debug",
- excludes: ['**/R.class',
- '**/R$*.class',
- '**/*$ViewInjector*.*',
- '**/BuildConfig.*',
- '**/Manifest*.*']
+ getClassDirectories().setFrom(
+ fileTree(
+ dir: "${buildDir}/intermediates/classes/debug",
+ excludes: ['**/R.class',
+ '**/R$*.class',
+ '**/*$ViewInjector*.*',
+ '**/BuildConfig.*',
+ '**/Manifest*.*']
+ )
)
- sourceDirectories = files("${buildDir.parent}/src/main/java")
- additionalSourceDirs = files([
- "${buildDir}/generated/source/buildConfig/debug",
- "${buildDir}/generated/source/r/debug"
- ])
- executionData = files("${buildDir}/jacoco/testDebugUnitTest.exec")
+ sourceDirectories.setFrom(files("${buildDir.parent}/src/main/java"))
+ additionalSourceDirs.setFrom(
+ files([
+ "${buildDir}/generated/source/buildConfig/debug",
+ "${buildDir}/generated/source/r/debug"
+ ])
+ )
+ executionData.setFrom(files("${buildDir}/jacoco/testDebugUnitTest.exec"))
reports {
xml.enabled = true
@@ -85,5 +89,3 @@ task jacocoTestReport(type: JacocoReport, dependsOn: "testDebugUnitTest") {
coveralls.jacocoReportPath = "${buildDir}/reports/jacoco/jacocoTestReport/jacocoTestReport.xml"
//endregion
-
-apply from: "https://raw.githubusercontent.com/Commit451/gradle-android-javadocs/1.1.0/gradle-android-javadocs.gradle"
diff --git a/rxjava/build.gradle b/rxjava/build.gradle
index e1c160fc3..271d0fde4 100644
--- a/rxjava/build.gradle
+++ b/rxjava/build.gradle
@@ -30,8 +30,6 @@ android {
dependencies {
api "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
- api "io.reactivex.rxjava3:rxjava:3.0.4"
+ api "io.reactivex.rxjava3:rxjava:3.0.11"
implementation project(":parse")
}
-
-apply from: "https://raw.githubusercontent.com/Commit451/gradle-android-javadocs/1.1.0/gradle-android-javadocs.gradle"
diff --git a/settings.gradle b/settings.gradle
index 93b9b130f..9a8336c06 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -1,2 +1,2 @@
-include ':parse', ':fcm', ':gcm', ':ktx', ':coroutines', 'rxjava', ':google', ':facebook', ':twitter', ':bolts-tasks'
+include ':parse', ':fcm', ':ktx', ':coroutines', 'rxjava', ':google', ':facebook', ':twitter', ':bolts-tasks'
diff --git a/twitter/build.gradle b/twitter/build.gradle
index 76e3a3404..746c57516 100644
--- a/twitter/build.gradle
+++ b/twitter/build.gradle
@@ -20,13 +20,11 @@ android {
}
dependencies {
- api "androidx.appcompat:appcompat:1.1.0"
+ api "androidx.appcompat:appcompat:1.2.0"
api "oauth.signpost:signpost-core:1.2.1.2"
api "se.akerfeldt:okhttp-signpost:1.1.0"
implementation project(":parse")
- testImplementation "junit:junit:4.13"
+ testImplementation "junit:junit:4.13.2"
testImplementation "org.mockito:mockito-core:1.10.19"
}
-
-apply from: "https://raw.githubusercontent.com/Commit451/gradle-android-javadocs/1.1.0/gradle-android-javadocs.gradle"