From c1e544616af88c3172c13db731526ec0e2ab9157 Mon Sep 17 00:00:00 2001 From: Denis Chilik Date: Tue, 10 Mar 2026 15:57:17 -0400 Subject: [PATCH 1/3] feat: migrate singular-kit from submodule to regular directory --- .gitmodules | 3 - kits/singular-kit | 1 - kits/singular-kit/README.md | 32 ++ kits/singular-kit/build.gradle | 77 +++ kits/singular-kit/consumer-proguard.pro | 1 + kits/singular-kit/gradle.properties | 4 + .../gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 59821 bytes .../gradle/wrapper/gradle-wrapper.properties | 5 + kits/singular-kit/gradlew | 234 ++++++++ kits/singular-kit/gradlew.bat | 89 +++ kits/singular-kit/libs/java-json.jar | Bin 0 -> 84697 bytes kits/singular-kit/libs/testutils.aar | Bin 0 -> 47713 bytes kits/singular-kit/settings.gradle.kts | 2 + .../singular-kit/src/main/AndroidManifest.xml | 1 + .../kotlin/com/mparticle/kits/SingularKit.kt | 507 ++++++++++++++++++ .../kotlin/com/mparticle/kits/KitTests.kt | 208 +++++++ .../com/mparticle/kits/MockSingularKit.kt | 43 ++ .../test/kotlin/com/singular/sdk/Singular.kt | 6 + 18 files changed, 1209 insertions(+), 4 deletions(-) delete mode 160000 kits/singular-kit create mode 100644 kits/singular-kit/README.md create mode 100644 kits/singular-kit/build.gradle create mode 100644 kits/singular-kit/consumer-proguard.pro create mode 100644 kits/singular-kit/gradle.properties create mode 100644 kits/singular-kit/gradle/wrapper/gradle-wrapper.jar create mode 100644 kits/singular-kit/gradle/wrapper/gradle-wrapper.properties create mode 100755 kits/singular-kit/gradlew create mode 100644 kits/singular-kit/gradlew.bat create mode 100755 kits/singular-kit/libs/java-json.jar create mode 100644 kits/singular-kit/libs/testutils.aar create mode 100644 kits/singular-kit/settings.gradle.kts create mode 100644 kits/singular-kit/src/main/AndroidManifest.xml create mode 100644 kits/singular-kit/src/main/kotlin/com/mparticle/kits/SingularKit.kt create mode 100644 kits/singular-kit/src/test/kotlin/com/mparticle/kits/KitTests.kt create mode 100644 kits/singular-kit/src/test/kotlin/com/mparticle/kits/MockSingularKit.kt create mode 100644 kits/singular-kit/src/test/kotlin/com/singular/sdk/Singular.kt diff --git a/.gitmodules b/.gitmodules index a132b3d23..9fb7d2421 100644 --- a/.gitmodules +++ b/.gitmodules @@ -34,9 +34,6 @@ [submodule "kits/revealmobile-kit"] path = kits/revealmobile-kit url = git@github.com:mparticle-integrations/mparticle-android-integration-revealmobile.git -[submodule "kits/singular-kit"] - path = kits/singular-kit - url = git@github.com:mparticle-integrations/mparticle-android-integration-singular.git [submodule "kits/skyhook-kit"] path = kits/skyhook-kit url = git@github.com:mparticle-integrations/mparticle-android-integration-skyhook.git diff --git a/kits/singular-kit b/kits/singular-kit deleted file mode 160000 index 64b3434b1..000000000 --- a/kits/singular-kit +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 64b3434b173692283e6ac5616b1e4584deeff19e diff --git a/kits/singular-kit/README.md b/kits/singular-kit/README.md new file mode 100644 index 000000000..18649d6a8 --- /dev/null +++ b/kits/singular-kit/README.md @@ -0,0 +1,32 @@ +## Singular Kit Integration + +This repository contains the [Singular](https://www.singular.net/) integration for the [mParticle Android SDK](https://github.com/mParticle/mparticle-android-sdk). + +### Adding the integration + +1. The singular Kit requires that you add singular's Maven server to your buildscript: + + ``` + repositories { + maven { url "https://maven.singular.net"} + ... + } + ``` + +1. Add the kit dependency to your app's build.gradle: + + ```groovy + dependencies { + implementation 'com.mparticle:android-singular-kit:5+' + } + ``` +2. Follow the mParticle Android SDK [quick-start](https://github.com/mParticle/mparticle-android-sdk), then rebuild and launch your app, and verify that you see `"Singular detected"` in the output of `adb logcat`. +3. Reference mParticle's integration docs below to enable the integration. + +### Documentation + +[Singular integration](https://docs.mparticle.com/integrations/singular/event/) + +### License + +[Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0) diff --git a/kits/singular-kit/build.gradle b/kits/singular-kit/build.gradle new file mode 100644 index 000000000..d9431f556 --- /dev/null +++ b/kits/singular-kit/build.gradle @@ -0,0 +1,77 @@ +buildscript { + ext.kotlin_version = '2.0.20' + if (!project.hasProperty('version') || project.version.equals('unspecified')) { + project.version = '+' + } + + repositories { + google() + mavenLocal() + mavenCentral() + } + + dependencies { + classpath 'com.android.tools.build:gradle:8.1.4' + classpath 'com.mparticle:android-kit-plugin:' + project.version + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" + } +} + +plugins { + id "org.sonarqube" version "3.5.0.2730" + id "org.jlleitschuh.gradle.ktlint" version "13.0.0" +} + +sonarqube { + properties { + property "sonar.projectKey", "mparticle-android-integration-singular" + property "sonar.organization", "mparticle" + property "sonar.host.url", "https://sonarcloud.io" + } +} + +apply plugin: 'org.jlleitschuh.gradle.ktlint' +apply plugin: 'kotlin-android' +apply plugin: 'com.mparticle.kit' + +repositories { + maven { + url 'https://maven.singular.net' + } + mavenCentral() +} + +android { + namespace 'com.mparticle.kits.singular' + buildFeatures { + buildConfig = true + } + defaultConfig { + minSdkVersion 16 + } + compileOptions { + sourceCompatibility JavaVersion.VERSION_17 + targetCompatibility JavaVersion.VERSION_17 + } + kotlinOptions { + jvmTarget = '17' + } + testOptions { + unitTests.all { + jvmArgs += ['--add-opens', 'java.base/java.lang=ALL-UNNAMED'] + } + } +} + +dependencies { + api 'com.singular.sdk:singular_sdk:12.5.4' + + androidTestImplementation 'androidx.test:runner:1.5.2' + testImplementation 'org.powermock:powermock-core:2.0.9' + testImplementation 'org.powermock:powermock-api-mockito2:2.0.2' + testImplementation 'org.powermock:powermock-module-junit4-rule:2.0.9' + testImplementation 'org.powermock:powermock-module-junit4:2.0.9' + testImplementation 'org.powermock:powermock-classloading-xstream:2.0.2' + testImplementation "org.robolectric:robolectric:4.3.1" + testImplementation 'org.json:json:20220320' +} diff --git a/kits/singular-kit/consumer-proguard.pro b/kits/singular-kit/consumer-proguard.pro new file mode 100644 index 000000000..2a90e0f4c --- /dev/null +++ b/kits/singular-kit/consumer-proguard.pro @@ -0,0 +1 @@ +# TODO: Add rules to exclude your SDK classes from proguard in implementing apps \ No newline at end of file diff --git a/kits/singular-kit/gradle.properties b/kits/singular-kit/gradle.properties new file mode 100644 index 000000000..edb1202c3 --- /dev/null +++ b/kits/singular-kit/gradle.properties @@ -0,0 +1,4 @@ +android.enableJetifier=true +android.useAndroidX=true +org.gradle.daemon=true +org.gradle.jvmargs=-Xmx2560m \ No newline at end of file diff --git a/kits/singular-kit/gradle/wrapper/gradle-wrapper.jar b/kits/singular-kit/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..41d9927a4d4fb3f96a785543079b8df6723c946b GIT binary patch literal 59821 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 literal 0 HcmV?d00001 diff --git a/kits/singular-kit/gradle/wrapper/gradle-wrapper.properties b/kits/singular-kit/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 000000000..e1bef7e87 --- /dev/null +++ b/kits/singular-kit/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.0.2-bin.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/kits/singular-kit/gradlew b/kits/singular-kit/gradlew new file mode 100755 index 000000000..1b6c78733 --- /dev/null +++ b/kits/singular-kit/gradlew @@ -0,0 +1,234 @@ +#!/bin/sh + +# +# Copyright © 2015-2021 the original authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +############################################################################## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# +############################################################################## + +# Attempt to set APP_HOME + +# Resolve links: $0 may be a link +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac +done + +APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit + +APP_NAME="Gradle" +APP_BASE_NAME=${0##*/} + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD=maximum + +warn () { + echo "$*" +} >&2 + +die () { + echo + echo "$*" + echo + exit 1 +} >&2 + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD=$JAVA_HOME/jre/sh/java + else + JAVACMD=$JAVA_HOME/bin/java + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD=java + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac +fi + +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + + # Now convert the arguments - kludge to limit ourselves to /bin/sh + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) + fi + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg + done +fi + +# Collect all arguments for the java command; +# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of +# shell script including quotes and variable substitutions, so put them in +# double quotes to make sure that they get re-expanded; and +# * put everything else in single quotes, so that it's not re-expanded. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + +exec "$JAVACMD" "$@" diff --git a/kits/singular-kit/gradlew.bat b/kits/singular-kit/gradlew.bat new file mode 100644 index 000000000..107acd32c --- /dev/null +++ b/kits/singular-kit/gradlew.bat @@ -0,0 +1,89 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/kits/singular-kit/libs/java-json.jar b/kits/singular-kit/libs/java-json.jar new file mode 100755 index 0000000000000000000000000000000000000000..2f211e3660a0f7637cd055e3dfb011fcc5b4f167 GIT binary patch literal 84697 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%0A^eARL~vZq+#%}VrSrx_m=pVc%a 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

8NQ;9Ans?P}n^>gcO>e>oYyAlbCB*-T|9&C$M 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%0A{lnE||A9G*TwwATGQ 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 CY#!SH literal 0 HcmV?d00001 diff --git a/kits/singular-kit/libs/testutils.aar b/kits/singular-kit/libs/testutils.aar new file mode 100644 index 0000000000000000000000000000000000000000..cf49b418969034bad0f13e3bee536d9b7ba56833 GIT binary patch literal 47713 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 le<@PWyj%{{x-|yYK)2 literal 0 HcmV?d00001 diff --git a/kits/singular-kit/settings.gradle.kts b/kits/singular-kit/settings.gradle.kts new file mode 100644 index 000000000..bfecd119f --- /dev/null +++ b/kits/singular-kit/settings.gradle.kts @@ -0,0 +1,2 @@ +rootProject.name = "android-singular-kit" +include(":") diff --git a/kits/singular-kit/src/main/AndroidManifest.xml b/kits/singular-kit/src/main/AndroidManifest.xml new file mode 100644 index 000000000..c4e6c98d7 --- /dev/null +++ b/kits/singular-kit/src/main/AndroidManifest.xml @@ -0,0 +1 @@ + diff --git a/kits/singular-kit/src/main/kotlin/com/mparticle/kits/SingularKit.kt b/kits/singular-kit/src/main/kotlin/com/mparticle/kits/SingularKit.kt new file mode 100644 index 000000000..280fd6aa3 --- /dev/null +++ b/kits/singular-kit/src/main/kotlin/com/mparticle/kits/SingularKit.kt @@ -0,0 +1,507 @@ +package com.mparticle.kits + +import android.app.Activity +import android.content.Context +import android.content.Intent +import android.os.Bundle +import android.util.Log +import com.mparticle.AttributionResult +import com.mparticle.MPEvent +import com.mparticle.MParticle +import com.mparticle.MParticle.IdentityType +import com.mparticle.commerce.CommerceEvent +import com.mparticle.commerce.Product +import com.mparticle.consent.ConsentState +import com.mparticle.internal.Logger +import com.mparticle.internal.MPUtility +import com.mparticle.kits.KitIntegration.ActivityListener +import com.mparticle.kits.KitIntegration.ApplicationStateListener +import com.mparticle.kits.KitIntegration.AttributeListener +import com.mparticle.kits.KitIntegration.CommerceListener +import com.mparticle.kits.KitIntegration.EventListener +import com.mparticle.kits.KitIntegration.PushListener +import com.mparticle.kits.KitIntegration.UserAttributeListener +import com.singular.sdk.SDIDAccessorHandler +import com.singular.sdk.Singular +import com.singular.sdk.SingularConfig +import com.singular.sdk.SingularDeviceAttributionHandler +import com.singular.sdk.internal.SingularLog +import org.json.JSONException +import org.json.JSONObject +import java.math.BigDecimal + +open class SingularKit : + KitIntegration(), + ActivityListener, + EventListener, + PushListener, + CommerceListener, + ApplicationStateListener, + UserAttributeListener, + AttributeListener { + interface DeviceAttributionCallback : SingularDeviceAttributionHandler + + interface SdidAccessorHandler : SDIDAccessorHandler + + private val logger = SingularLog.getLogger(Singular::class.java.simpleName) + private var isInitialized = false + private var deviceToken: String? = null + + //endregion + //region Kit Integration Implementation + override fun onKitCreate( + settings: Map, + context: Context, + ): List { + // Returning the reporting message to state that the method was successful and + // Preventing from the mParticle Kit to retry to activate to method. + val messages: MutableList = ArrayList() + messages.add( + ReportingMessage( + this, + ReportingMessage.MessageType.APP_STATE_TRANSITION, + System.currentTimeMillis(), + null, + ), + ) + return messages + } + + fun buildSingularConfig(settings: Map?): SingularConfig? = + try { + val singularKey = settings?.get(API_KEY) + val singularSecret = settings?.get(API_SECRET) + + // Getting the DDL timeout from the settings. If does not exist, use 60(S) as default. + val ddlTimeout = settings?.get(DDL_TIMEOUT) + var ddlHandlerTimeoutSec = 60L + if (!KitUtils.isEmpty(ddlTimeout)) { + try { + if (ddlTimeout != null) { + ddlHandlerTimeoutSec = ddlTimeout.toLong() + } + } catch (unableToGetDDLTimeout: Exception) { + } + } + val config = SingularConfig(singularKey, singularSecret) + config.withDDLTimeoutInSec(ddlHandlerTimeoutSec) + val activity = currentActivity.get() + if (activity != null) { + val intent = activity.intent + config.withSingularLink(intent) { singularLinkParams -> + val attributionResult = AttributionResult() + attributionResult.serviceProviderId = MParticle.ServiceProviders.SINGULAR + attributionResult.link = singularLinkParams.deeplink + try { + val linkParams = JSONObject() + linkParams.put(PASSTHROUGH, singularLinkParams.passthrough) + linkParams.put(IS_DEFERRED, singularLinkParams.isDeferred) + if (singularLinkParams.urlParameters != null) { + linkParams.put( + QUERY_PARAMS, + (singularLinkParams.urlParameters as Map<*, *>?)?.let { + JSONObject( + it, + ) + }, + ) + } + attributionResult.parameters = linkParams + } catch (e: JSONException) { + e.printStackTrace() + } + kitManager.onResult(attributionResult) + } + } + + // If the environment is in development mode, enable logging. + if (MPUtility.isDevEnv()) { + config.withLoggingEnabled() + config.withLogLevel(Log.DEBUG) + } + + config.deviceAttributionHandler = deviceAttributionCallback + + config.withCustomSdid(customSdid, sdidAccessorHandler) + + Singular.setWrapperNameAndVersion(MPARTICLE_WRAPPER_NAME, MPARTICLE_WRAPPER_VERSION) + config + } catch (ex: Exception) { + logger.error(CANT_BUILD_SINGULAR_CONFIG_MESSAGE, ex) + null + } + + override fun setOptOut(b: Boolean): List = emptyList() + + override fun getName(): String = KIT_NAME + + override fun setInstallReferrer(intent: Intent) {} + + //endregion + //region Activity Listener Implementation + override fun onActivityResumed(activity: Activity): List { + Singular.onActivityResumed() + return emptyList() + } + + override fun onActivityPaused(activity: Activity): List { + Singular.onActivityPaused() + return emptyList() + } + + //region Unimplemented (Empty Methods) + override fun onActivityCreated( + activity: Activity, + bundle: Bundle?, + ): List { + initializeSingular() + return emptyList() + } + + override fun onActivityStarted(activity: Activity): List = emptyList() + + override fun onActivityStopped(activity: Activity): List = emptyList() + + override fun onActivitySaveInstanceState( + activity: Activity, + bundle: Bundle?, + ): List = emptyList() + + override fun onActivityDestroyed(activity: Activity): List = emptyList() + + //endregion + //endregion + //region Event Listener Implementation + override fun logEvent(mpEvent: MPEvent): List? { + val messages: MutableList = ArrayList() + executeIfSingularInitialized({ + val eventName = mpEvent.eventName + val eventInfo = mpEvent.customAttributes + + // Logging the event with the Singular API + val eventStatus: Boolean = + if (!eventInfo.isNullOrEmpty()) { + Singular.eventJSON(eventName, JSONObject(eventInfo)) + } else { + Singular.event(eventName) + } + + // If the Singular event logging was successful, return the message to the mParticle Kit + // So it won't retry the event + if (eventStatus) { + messages.add(ReportingMessage.fromEvent(this, mpEvent)) + } + }, forceInitSingular = true, "logEvent") + return messages + } + + //region Unimplemented (Empty Methods) + override fun leaveBreadcrumb(s: String): List = emptyList() + + override fun logError( + s: String, + map: Map, + ): List = emptyList() + + override fun logException( + e: Exception, + map: Map, + s: String, + ): List = emptyList() + + override fun logScreen( + s: String, + map: Map, + ): List = emptyList() + + //endregion + //endregion + //region Push Listener Implementation + override fun onPushRegistration( + deviceToken: String, + senderId: String, + ): Boolean { + // Saving the registration token to determine when the user uninstalls the app. + this.deviceToken = deviceToken + executeIfSingularInitialized({ + if (MPUtility.isFirebaseAvailable()) { + Singular.setFCMDeviceToken(deviceToken) + } + }, forceInitSingular = false, "onPushRegistration") + return true + } + + private fun executeIfSingularInitialized( + operation: () -> Unit, + forceInitSingular: Boolean = false, + operationName: String, + ) { + if (isInitialized) { + operation.invoke() + Logger.debug("$operationName executed") + } else { + if (forceInitSingular) { + initializeSingular() + executeIfSingularInitialized(operation, false, operationName) + } else { + Logger.debug("$operationName can't be executed, Singular not initialized") + } + } + } + + private fun initializeSingular() { + if (!isInitialized) { + if (Singular.init(context, buildSingularConfig(settings))) { + currentUser?.id?.toString()?.let { Singular.setCustomUserId(it) } + isInitialized = true + singularSettings = settings + deviceToken?.let { deviceToken -> + if (MPUtility.isFirebaseAvailable()) { + Singular.setFCMDeviceToken(deviceToken) + } + } + } + } + } + + //region Unimplemented (Empty Methods) + override fun willHandlePushMessage(intent: Intent): Boolean = false + + override fun onPushMessageReceived( + context: Context, + intent: Intent, + ) {} + + //endregion + //endregion + //region Commerce Listener Implementation + override fun logEvent(commerceEvent: CommerceEvent): List { + var list = emptyList() + executeIfSingularInitialized(operation = { + if (commerceEvent.productAction == Product.PURCHASE) { + list = handlePurchaseEvents(commerceEvent) + } else { + list = handleNonPurchaseEvents(commerceEvent) + } + }, forceInitSingular = true, "logEvent") + return list + } + + private fun handlePurchaseEvents(commerceEvent: CommerceEvent): List { + val messages: MutableList = ArrayList() + commerceEvent.products?.let { + for (product in it) { + Singular.revenue( + commerceEvent.currency, + product.totalAmount, + product.sku, + product.name, + product.category, + product.quantity.toInt(), + product.unitPrice, + ) + } + } + messages.add(ReportingMessage.fromEvent(this, commerceEvent)) + return messages + } + + private fun handleNonPurchaseEvents(commerceEvent: CommerceEvent): List { + val messages: MutableList = ArrayList() + + // Getting the mParticle events from the commerce event + val eventList = CommerceEventUtils.expand(commerceEvent) + if (eventList != null) { + for (event in eventList) { + try { + logEvent(event)?.let { + for (message in it) { + messages.add(message) + } + } + } catch (e: Exception) { + Logger.warning("Failed to call logCustomEvent to Singular kit: $e") + } + } + } + return messages + } + + //region Unimplemented (Empty Methods) + override fun logLtvIncrease( + bigDecimal: BigDecimal, + bigDecimal1: BigDecimal, + s: String, + map: Map, + ): List = emptyList() + + //endregion + //endregion + //region Deprecated Attribute Listener + override fun setUserAttribute( + key: String, + value: String, + ) { + // TODO: Debug these lines to understand the code + val map = HashMap() + if (MParticle.UserAttributes.AGE == key) { + map[USER_AGE_KEY] = value + } else if (MParticle.UserAttributes.GENDER == key) { + if (value.contains("fe")) { + map[USER_GENDER_KEY] = "f" + } else { + map[USER_GENDER_KEY] = "m" + } + } + if (map.isNotEmpty()) { + executeIfSingularInitialized( + { + Singular.eventJSON("UserAttribute", (map as Map<*, *>?)?.let { JSONObject(it) }) + }, + forceInitSingular = false, + "setUserAttribute", + ) + } + } + + override fun setUserAttributeList( + s: String, + list: List, + ) {} + + override fun onIncrementUserAttribute( + key: String?, + incrementedBy: Number?, + value: String?, + user: FilteredMParticleUser?, + ) { + } + + override fun onRemoveUserAttribute( + s: String, + filteredMParticleUser: FilteredMParticleUser, + ) {} + + override fun onSetUserAttribute( + s: String, + o: Any, + filteredMParticleUser: FilteredMParticleUser, + ) { + } + + override fun onSetUserTag( + s: String, + filteredMParticleUser: FilteredMParticleUser, + ) {} + + override fun onSetUserAttributeList( + s: String, + list: List, + filteredMParticleUser: FilteredMParticleUser, + ) { + } + + override fun onSetAllUserAttributes( + map: Map, + map1: Map>, + filteredMParticleUser: FilteredMParticleUser, + ) { + } + + override fun supportsAttributeLists(): Boolean = false + + override fun onConsentStateUpdated( + consentState: ConsentState, + consentState1: ConsentState, + filteredMParticleUser: FilteredMParticleUser, + ) { + executeIfSingularInitialized({ + consentState.ccpaConsentState?.let { Singular.limitDataSharing(it.isConsented) } + }, forceInitSingular = false, "onConsentStateUpdated") + } + + override fun setAllUserAttributes( + map: Map, + map1: Map>, + ) {} + + override fun removeUserAttribute(s: String) {} + + override fun setUserIdentity( + identityType: IdentityType, + s: String, + ) { + if (identityType == IdentityType.CustomerId) { + executeIfSingularInitialized({ + Singular.setCustomUserId(s) + }, forceInitSingular = false, "setUserIdentity") + } + } + + override fun removeUserIdentity(identityType: IdentityType) { + if (identityType == IdentityType.CustomerId) { + executeIfSingularInitialized({ + Singular.unsetCustomUserId() + isInitialized = false + }, forceInitSingular = false, "removeUserIdentity") + } + } + + override fun logout(): List { + val messageList: MutableList = ArrayList() + executeIfSingularInitialized({ + Singular.unsetCustomUserId() + isInitialized = false + messageList.add(ReportingMessage.logoutMessage(this)) + }, forceInitSingular = false, "logout") + return messageList + } + + override fun onApplicationForeground() { + // Handling deeplinks when the application resumes from background + initializeSingular() + } + + override fun onApplicationBackground() {} //endregion + + companion object { + //region Members + // Config Consts + private const val API_KEY = "apiKey" + private const val API_SECRET = "secret" + private const val DDL_TIMEOUT = "ddlTimeout" + private const val KIT_NAME = "Singular" + + // User Attribute Consts + private const val USER_AGE_KEY = "age" + private const val USER_GENDER_KEY = "gender" + + // Singular Link Consts + private const val PASSTHROUGH = "passthrough" + private const val IS_DEFERRED = "is_deferred" + private const val QUERY_PARAMS = "query_params" + + // Wrapper Consts + private const val MPARTICLE_WRAPPER_NAME = "mParticle" + private const val MPARTICLE_WRAPPER_VERSION = "1.0.1" + private const val CANT_BUILD_SINGULAR_CONFIG_MESSAGE = + "Can't build Singular Config in the mParticle Kit" + private var singularSettings: Map? = null + + private var deviceAttributionCallback: DeviceAttributionCallback? = null + private var customSdid: String? = null + private var sdidAccessorHandler: SdidAccessorHandler? = null + + @JvmStatic fun setDeviceAttributionCallback(deviceAttributionCallback: DeviceAttributionCallback?) { + this.deviceAttributionCallback = deviceAttributionCallback + } + + @JvmStatic fun setCustomSDID( + customSDID: String?, + sdidAccessorHandler: SdidAccessorHandler?, + ) { + this.customSdid = customSDID + this.sdidAccessorHandler = sdidAccessorHandler + } + } +} diff --git a/kits/singular-kit/src/test/kotlin/com/mparticle/kits/KitTests.kt b/kits/singular-kit/src/test/kotlin/com/mparticle/kits/KitTests.kt new file mode 100644 index 000000000..880425c0c --- /dev/null +++ b/kits/singular-kit/src/test/kotlin/com/mparticle/kits/KitTests.kt @@ -0,0 +1,208 @@ +package com.mparticle.kits + +import com.mparticle.MPEvent +import com.mparticle.MParticleOptions +import com.mparticle.commerce.CommerceEvent +import com.mparticle.commerce.Product +import com.singular.sdk.Singular +import com.singular.sdk.SingularConfig +import org.json.JSONObject +import org.junit.Assert +import org.junit.Before +import org.junit.Rule +import org.junit.Test +import org.junit.rules.ExpectedException +import org.mockito.Mock +import org.mockito.Mockito +import org.powermock.core.classloader.annotations.PowerMockIgnore +import org.powermock.modules.junit4.rule.PowerMockRule + +@PowerMockIgnore("org.mockito.*", "org.robolectric.*", "android.*") +class KitTests { + //region Tests Setup + private var kit: MockSingularKit? = null + private lateinit var settings: HashMap + private val config: SingularConfig? = null + + @get:Rule + var rule = PowerMockRule() + + @get:Rule + var exception: ExpectedException = ExpectedException.none() + + @Mock + private val reportingMessage: ReportingMessage? = null + + @Before + fun setUp() { + // MockitoAnnotations.initMocks(this); + kit = MockSingularKit() + settings = HashMap() + settings[API_KEY] = "Test" + settings[API_SECRET] = "Test" + } + + //endregion + //region Config Tests + @Test + fun buildConfigWithoutSettings() { + val testConfig = kit?.buildSingularConfig(null) + Assert.assertNull(testConfig) + } + + @Test + fun buildConfigWithEmptySettings() { + val testConfig = kit?.buildSingularConfig(HashMap()) + Assert.assertNull(testConfig) + } + + //endregion + //region Log MPEvent Tests + @Test + fun logEventWithInfo() { + var result: List? = null + try { + // Creating the event + val eventJson = JSONObject() + eventJson.put("eventName", "Testing") + eventJson.put("eventType", "Unknown") + val event = MPEvent.Builder.parseString(eventJson.toString())?.build() + + // Mocking the Kit Methods + Singular.acceptEvent = true + result = event?.let { kit?.logEvent(it) } + } catch (e: Exception) { + e.printStackTrace() + Assert.fail( + String.format( + "logEventWithInfo failed with exception message:%s", + e.message, + ), + ) + } finally { + Assert.assertTrue(!result.isNullOrEmpty()) + } + } + + @Test + fun logEventWithoutInfo() { + var result: List? = null + try { + // Creating the event + val eventJson = JSONObject() + eventJson.put("eventName", "Testing") + eventJson.put("eventType", "Unknown") + val event = MPEvent.Builder.parseString(eventJson.toString())?.build() + if (event != null) { + event.customAttributes?.clear() + + // Mocking the kit Methods + Singular.acceptEvent = true + result = kit?.logEvent(event) + } + } catch (e: Exception) { + e.printStackTrace() + Assert.fail( + String.format( + "logEventWithInfo failed with exception message:%s", + e.message, + ), + ) + } finally { + Assert.assertTrue(!result.isNullOrEmpty()) + } + } + + @Test + fun logEventWithInvalidData() { + val event: MPEvent? = null + val result = event?.let { kit?.logEvent(it) } + if (result != null) { + Assert.assertTrue(result.isEmpty()) + } + } + + //endregion + //region Log CommerceEvent Tests + @Test + fun logCommercePurchaseEvents() { + var result: List? = null + try { + val commerceEvent = + CommerceEvent + .Builder( + Product.PURCHASE, + Product + .Builder("Testing", "Unknown", 2.0) + .quantity(1.0) + .category("Category") + .build(), + ).addProduct(Product.Builder("Unknown", "b", 1.0).build()) + .build() + result = kit?.logEvent(commerceEvent) + } catch (e: Exception) { + e.printStackTrace() + Assert.fail( + String.format( + "logCommercePurchaseEvents failed with exception message:%s", + e.message, + ), + ) + } finally { + Assert.assertTrue(!result.isNullOrEmpty()) + } + } + + @Test + fun logCommerceNonPurchaseEvents() { + var result: List? = null + try { + val commerceEvent = + CommerceEvent + .Builder( + Product.DETAIL, + Product + .Builder("Testing", "Unknown", 2.0) + .quantity(1.0) + .category("Category") + .build(), + ).addProduct(Product.Builder("Unknown", "b", 1.0).build()) + .build() + result = kit?.logEvent(commerceEvent) + } catch (e: Exception) { + e.printStackTrace() + Assert.fail( + String.format( + "logCommerceNonPurchaseEvents failed with exception message:%s", + e.message, + ), + ) + } finally { + Assert.assertTrue(!result.isNullOrEmpty()) + } + } + + //endregion + //region MParticle Kit Factory Tests + //endregion + @Throws(Exception::class) + @Test + fun isSingularIntegrationInFactory() { + val options = Mockito.mock(MParticleOptions::class.java) + val factory = KitIntegrationFactory(options) + val integrations = factory.supportedKits.values + val className = kit?.javaClass?.name.orEmpty() + for (integration in integrations) { + if (integration.name.replace("SingularKit", "MockSingularKit") == className) { + return + } + } + Assert.fail("$className not found as a known integration.") + } + + companion object { + private const val API_KEY = "apiKey" + private const val API_SECRET = "secret" + private const val DDL_TIME_OUT = "ddlTimeout" + } +} diff --git a/kits/singular-kit/src/test/kotlin/com/mparticle/kits/MockSingularKit.kt b/kits/singular-kit/src/test/kotlin/com/mparticle/kits/MockSingularKit.kt new file mode 100644 index 000000000..d96f8d58a --- /dev/null +++ b/kits/singular-kit/src/test/kotlin/com/mparticle/kits/MockSingularKit.kt @@ -0,0 +1,43 @@ +package com.mparticle.kits + +import com.mparticle.MPEvent +import com.mparticle.MParticle +import com.mparticle.commerce.CommerceEvent +import org.json.JSONException +import org.json.JSONObject + +class MockSingularKit : SingularKit() { + override fun logEvent(commerceEvent: CommerceEvent): List = + mutableListOf( + ReportingMessage( + this, + commerceEvent.eventName, + System.currentTimeMillis(), + HashMap(), + ), + ) + + override fun logEvent(mpEvent: MPEvent): List = + mutableListOf( + ReportingMessage( + this, + mpEvent.eventType.toString(), + System.currentTimeMillis(), + HashMap(), + ), + ) + + override fun getConfiguration(): KitConfiguration? { + try { + return KitConfiguration.createKitConfiguration( + JSONObject().put( + "id", + MParticle.ServiceProviders.SINGULAR, + ), + ) + } catch (e: JSONException) { + e.printStackTrace() + } + return null + } +} diff --git a/kits/singular-kit/src/test/kotlin/com/singular/sdk/Singular.kt b/kits/singular-kit/src/test/kotlin/com/singular/sdk/Singular.kt new file mode 100644 index 000000000..ce69bede8 --- /dev/null +++ b/kits/singular-kit/src/test/kotlin/com/singular/sdk/Singular.kt @@ -0,0 +1,6 @@ +package com.singular.sdk + +object Singular { + var acceptEventJson = false + var acceptEvent = false +} From b800efb027b48a768eb65e5f6091842cc8c915b4 Mon Sep 17 00:00:00 2001 From: Denis Chilik Date: Tue, 10 Mar 2026 15:57:24 -0400 Subject: [PATCH 2/3] feat: relocate singular-kit to kits/singular/singular-12 Made-with: Cursor --- .trunk/trunk.yaml | 4 ++-- .../singular-12}/README.md | 0 .../singular-12}/build.gradle | 0 .../singular-12}/consumer-proguard.pro | 0 .../singular-12}/gradle.properties | 0 .../singular-12}/gradle/wrapper/gradle-wrapper.jar | Bin .../gradle/wrapper/gradle-wrapper.properties | 0 kits/{singular-kit => singular/singular-12}/gradlew | 0 .../singular-12}/gradlew.bat | 0 .../singular-12}/libs/java-json.jar | Bin .../singular-12}/libs/testutils.aar | Bin .../singular-12}/settings.gradle.kts | 0 .../singular-12}/src/main/AndroidManifest.xml | 0 .../main/kotlin/com/mparticle/kits/SingularKit.kt | 0 .../src/test/kotlin/com/mparticle/kits/KitTests.kt | 0 .../kotlin/com/mparticle/kits/MockSingularKit.kt | 0 .../src/test/kotlin/com/singular/sdk/Singular.kt | 0 17 files changed, 2 insertions(+), 2 deletions(-) rename kits/{singular-kit => singular/singular-12}/README.md (100%) rename kits/{singular-kit => singular/singular-12}/build.gradle (100%) rename kits/{singular-kit => singular/singular-12}/consumer-proguard.pro (100%) rename kits/{singular-kit => singular/singular-12}/gradle.properties (100%) rename kits/{singular-kit => singular/singular-12}/gradle/wrapper/gradle-wrapper.jar (100%) rename kits/{singular-kit => singular/singular-12}/gradle/wrapper/gradle-wrapper.properties (100%) rename kits/{singular-kit => singular/singular-12}/gradlew (100%) rename kits/{singular-kit => singular/singular-12}/gradlew.bat (100%) rename kits/{singular-kit => singular/singular-12}/libs/java-json.jar (100%) rename kits/{singular-kit => singular/singular-12}/libs/testutils.aar (100%) rename kits/{singular-kit => singular/singular-12}/settings.gradle.kts (100%) rename kits/{singular-kit => singular/singular-12}/src/main/AndroidManifest.xml (100%) rename kits/{singular-kit => singular/singular-12}/src/main/kotlin/com/mparticle/kits/SingularKit.kt (100%) rename kits/{singular-kit => singular/singular-12}/src/test/kotlin/com/mparticle/kits/KitTests.kt (100%) rename kits/{singular-kit => singular/singular-12}/src/test/kotlin/com/mparticle/kits/MockSingularKit.kt (100%) rename kits/{singular-kit => singular/singular-12}/src/test/kotlin/com/singular/sdk/Singular.kt (100%) diff --git a/.trunk/trunk.yaml b/.trunk/trunk.yaml index ec773bef2..110ec1474 100644 --- a/.trunk/trunk.yaml +++ b/.trunk/trunk.yaml @@ -75,15 +75,15 @@ lint: - kits/apptimize/apptimize-3/** - kits/braze/braze-38/** - kits/clevertap/clevertap-7/** + - kits/comscore/comscore-6/** - kits/iterable/iterable-3/** - kits/ga/ga-23/** - kits/ga4/ga4-23/** - kits/kochava/kochava-5/** - kits/leanplum/leanplum-7/** - - kits/rokt/rokt/** - kits/localytics/localytics-6/** - kits/rokt/rokt/** - - kits/comscore/comscore-6/** + - kits/singular/singular-12/** actions: enabled: - trunk-announce diff --git a/kits/singular-kit/README.md b/kits/singular/singular-12/README.md similarity index 100% rename from kits/singular-kit/README.md rename to kits/singular/singular-12/README.md diff --git a/kits/singular-kit/build.gradle b/kits/singular/singular-12/build.gradle similarity index 100% rename from kits/singular-kit/build.gradle rename to kits/singular/singular-12/build.gradle diff --git a/kits/singular-kit/consumer-proguard.pro b/kits/singular/singular-12/consumer-proguard.pro similarity index 100% rename from kits/singular-kit/consumer-proguard.pro rename to kits/singular/singular-12/consumer-proguard.pro diff --git a/kits/singular-kit/gradle.properties b/kits/singular/singular-12/gradle.properties similarity index 100% rename from kits/singular-kit/gradle.properties rename to kits/singular/singular-12/gradle.properties diff --git a/kits/singular-kit/gradle/wrapper/gradle-wrapper.jar b/kits/singular/singular-12/gradle/wrapper/gradle-wrapper.jar similarity index 100% rename from kits/singular-kit/gradle/wrapper/gradle-wrapper.jar rename to kits/singular/singular-12/gradle/wrapper/gradle-wrapper.jar diff --git a/kits/singular-kit/gradle/wrapper/gradle-wrapper.properties b/kits/singular/singular-12/gradle/wrapper/gradle-wrapper.properties similarity index 100% rename from kits/singular-kit/gradle/wrapper/gradle-wrapper.properties rename to kits/singular/singular-12/gradle/wrapper/gradle-wrapper.properties diff --git a/kits/singular-kit/gradlew b/kits/singular/singular-12/gradlew similarity index 100% rename from kits/singular-kit/gradlew rename to kits/singular/singular-12/gradlew diff --git a/kits/singular-kit/gradlew.bat b/kits/singular/singular-12/gradlew.bat similarity index 100% rename from kits/singular-kit/gradlew.bat rename to kits/singular/singular-12/gradlew.bat diff --git a/kits/singular-kit/libs/java-json.jar b/kits/singular/singular-12/libs/java-json.jar similarity index 100% rename from kits/singular-kit/libs/java-json.jar rename to kits/singular/singular-12/libs/java-json.jar diff --git a/kits/singular-kit/libs/testutils.aar b/kits/singular/singular-12/libs/testutils.aar similarity index 100% rename from kits/singular-kit/libs/testutils.aar rename to kits/singular/singular-12/libs/testutils.aar diff --git a/kits/singular-kit/settings.gradle.kts b/kits/singular/singular-12/settings.gradle.kts similarity index 100% rename from kits/singular-kit/settings.gradle.kts rename to kits/singular/singular-12/settings.gradle.kts diff --git a/kits/singular-kit/src/main/AndroidManifest.xml b/kits/singular/singular-12/src/main/AndroidManifest.xml similarity index 100% rename from kits/singular-kit/src/main/AndroidManifest.xml rename to kits/singular/singular-12/src/main/AndroidManifest.xml diff --git a/kits/singular-kit/src/main/kotlin/com/mparticle/kits/SingularKit.kt b/kits/singular/singular-12/src/main/kotlin/com/mparticle/kits/SingularKit.kt similarity index 100% rename from kits/singular-kit/src/main/kotlin/com/mparticle/kits/SingularKit.kt rename to kits/singular/singular-12/src/main/kotlin/com/mparticle/kits/SingularKit.kt diff --git a/kits/singular-kit/src/test/kotlin/com/mparticle/kits/KitTests.kt b/kits/singular/singular-12/src/test/kotlin/com/mparticle/kits/KitTests.kt similarity index 100% rename from kits/singular-kit/src/test/kotlin/com/mparticle/kits/KitTests.kt rename to kits/singular/singular-12/src/test/kotlin/com/mparticle/kits/KitTests.kt diff --git a/kits/singular-kit/src/test/kotlin/com/mparticle/kits/MockSingularKit.kt b/kits/singular/singular-12/src/test/kotlin/com/mparticle/kits/MockSingularKit.kt similarity index 100% rename from kits/singular-kit/src/test/kotlin/com/mparticle/kits/MockSingularKit.kt rename to kits/singular/singular-12/src/test/kotlin/com/mparticle/kits/MockSingularKit.kt diff --git a/kits/singular-kit/src/test/kotlin/com/singular/sdk/Singular.kt b/kits/singular/singular-12/src/test/kotlin/com/singular/sdk/Singular.kt similarity index 100% rename from kits/singular-kit/src/test/kotlin/com/singular/sdk/Singular.kt rename to kits/singular/singular-12/src/test/kotlin/com/singular/sdk/Singular.kt From 3e9095c8a4079b9d666e16b0fc1101cca3cb2618 Mon Sep 17 00:00:00 2001 From: Denis Chilik Date: Tue, 10 Mar 2026 15:57:28 -0400 Subject: [PATCH 3/3] feat: add singular-12 to settings-kits.gradle Made-with: Cursor --- settings-kits.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/settings-kits.gradle b/settings-kits.gradle index 55963e9af..313f5bc96 100644 --- a/settings-kits.gradle +++ b/settings-kits.gradle @@ -30,7 +30,7 @@ include ( ':kits:responsys-kit', ':kits:revealmobile-kit', ':kits:rokt:rokt', - ':kits:singular-kit', + ':kits:singular:singular-12', ':kits:skyhook-kit', //Swrve hosts kit ':kits:taplytics-kit',