diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/androidclientdiffuse.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/androidclientdiffuse.yaml
index c9b8111cd..a258c7306 100644
--- a/.harness/orgs/PROD/projects/Harness_Split/pipelines/androidclientdiffuse.yaml
+++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/androidclientdiffuse.yaml
@@ -139,9 +139,23 @@ pipeline:
# Fetch all branches from remote so diffuse.sh can access them
echo "Fetching branches from remote..."
git fetch origin --prune > /dev/null 2>&1
- git fetch origin "$SOURCE_BRANCH:$SOURCE_BRANCH" > /dev/null 2>&1 || true
- git fetch origin "$TARGET_BRANCH:$TARGET_BRANCH" > /dev/null 2>&1 || true
+ git fetch origin "$SOURCE_BRANCH" > /dev/null 2>&1 || true
+ git fetch origin "$TARGET_BRANCH" > /dev/null 2>&1 || true
+
+ # Debug: Show what branches/refs exist
+ echo "=== Available branches and refs ==="
+ git branch -r | grep -E "(${SOURCE_BRANCH}|${TARGET_BRANCH})" || true
+ echo "Current HEAD: $(git rev-parse HEAD)"
+ echo "origin/${SOURCE_BRANCH}: $(git rev-parse origin/${SOURCE_BRANCH} 2>/dev/null || echo 'NOT FOUND')"
+ echo "origin/${TARGET_BRANCH}: $(git rev-parse origin/${TARGET_BRANCH} 2>/dev/null || echo 'NOT FOUND')"
+
+ # Use remote branch references (origin/branch-name) for the diffuse script
+ # This ensures we compare the actual remote branches, not local refs
+ SOURCE_REF="origin/${SOURCE_BRANCH}"
+ TARGET_REF="origin/${TARGET_BRANCH}"
+
echo "✓ Branches fetched"
+ echo "Will compare: $SOURCE_REF (source) vs $TARGET_REF (target)"
# Verify the script exists
if [ ! -f "scripts/diffuse.sh" ]; then
@@ -154,17 +168,22 @@ pipeline:
# Make the script executable
chmod +x scripts/diffuse.sh
- # Run the diffuse script with branch parameters
- echo "Executing: ./scripts/diffuse.sh --source '$SOURCE_BRANCH' --target '$TARGET_BRANCH'"
+ # Run the diffuse script with remote branch references in verbose mode for debugging
+ echo "Executing: ./scripts/diffuse.sh --source '$SOURCE_REF' --target '$TARGET_REF' --verbose"
# Run and capture output
set +e # Don't exit on error
- ./scripts/diffuse.sh --source "$SOURCE_BRANCH" --target "$TARGET_BRANCH" > diffuse_output_full.txt 2>&1
+ ./scripts/diffuse.sh --source "$SOURCE_REF" --target "$TARGET_REF" --verbose > diffuse_output_full.txt 2>&1
DIFFUSE_EXIT_CODE=$?
set -e
echo ""
echo "=== Diffuse Script Exit Code: $DIFFUSE_EXIT_CODE ==="
+
+ # Show the full verbose output for debugging
+ echo "=== Full Diffuse Output (for debugging) ==="
+ cat diffuse_output_full.txt
+ echo "=== End Full Output ==="
# Extract only the comparison tables from the output
sed 's/\x1b\[[0-9;]*m//g' diffuse_output_full.txt | \
diff --git a/build.gradle b/build.gradle
index 5a398e16b..d36e81704 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,3 +1,6 @@
+import com.vanniktech.maven.publish.AndroidFusedLibrary
+import org.gradle.api.publish.maven.MavenPublication
+
buildscript {
repositories {
google()
@@ -5,24 +8,32 @@ buildscript {
}
dependencies {
- classpath 'com.android.tools.build:gradle:8.7.3'
+ classpath 'com.android.tools.build:gradle:9.0.0-alpha13'
classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:1.8.0'
- classpath "com.vanniktech:gradle-maven-publish-plugin:0.33.0"
+ classpath "com.vanniktech:gradle-maven-publish-plugin:0.34.0"
}
}
-apply plugin: 'com.android.library'
-apply plugin: 'signing'
-apply plugin: 'kotlin-android'
+apply plugin: 'com.android.fused-library'
apply plugin: 'com.vanniktech.maven.publish'
-apply from: 'spec.gradle'
-apply from: 'jacoco.gradle'
ext {
- splitVersion = '5.4.2'
+ splitVersion = '5.4.3-rc4'
jacocoVersion = '0.8.8'
}
+group = 'io.split.client'
+version = splitVersion
+
+// Centralize repositories and coordinates for all subprojects
+allprojects {
+ repositories {
+ google()
+ mavenCentral()
+ }
+}
+
+
// Define exclusions for JaCoCo coverage
def coverageExclusions = [
'**/R.class',
@@ -33,85 +44,58 @@ def coverageExclusions = [
'android/**/*.*'
]
-android {
- compileSdk 33
- targetCompatibility = '1.8'
- sourceCompatibility = '1.8'
-
- buildFeatures {
- buildConfig true
- }
-
- compileOptions {
- sourceCompatibility JavaVersion.VERSION_1_8
- targetCompatibility JavaVersion.VERSION_1_8
- }
-
- defaultConfig {
-
- minSdk 19
- targetSdk 31
- multiDexEnabled true
-
- consumerProguardFiles 'split-proguard-rules.pro'
-
- testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
- testInstrumentationRunnerArguments clearPackageData: 'true'
-
- javaCompileOptions {
- annotationProcessorOptions {
- arguments = ["room.schemaLocation": "$projectDir/schemas".toString()]
- }
- }
-
- testOptions {
- execution 'ANDROIDX_TEST_ORCHESTRATOR'
- }
- }
+androidFusedLibrary {
+ namespace = 'io.split.android.android_client'
+ minSdk { version = release(19) }
+}
- configurations {
- javadocDeps
+tasks.configureEach { task ->
+ if (task.name == 'packageLintJar' ||
+ task.name.contains('LintJar') ||
+ task.name.contains('LintModel')) {
+ task.enabled = false
}
+}
-
- testOptions {
- unitTests.returnDefaultValues = true
-
- // Configure JaCoCo for all test tasks
- unitTests.all {
- jacoco {
- includeNoLocationClasses = true
- excludes = ['jdk.internal.*']
+// Manually copy the merged consumer proguard file into the AAR
+afterEvaluate {
+ tasks.named('bundle').configure {
+ doLast {
+ def aarFile = file("${buildDir}/outputs/aar/android-client.aar")
+ def proguardFile = file("${buildDir}/intermediates/merged_consumer_proguard_file/release/mergeReleaseConsumerProguardFiles/proguard.txt")
+
+ if (aarFile.exists() && proguardFile.exists()) {
+ // Create temp directory to extract AAR
+ def tempDir = file("${buildDir}/tmp/aar-repack")
+ tempDir.deleteDir()
+ tempDir.mkdirs()
+
+ // Extract AAR
+ copy {
+ from zipTree(aarFile)
+ into tempDir
+ }
+
+ // Copy proguard.txt
+ copy {
+ from proguardFile
+ into tempDir
+ }
+
+ // Remove lint.jar if it exists (we don't have custom lint rules)
+ def lintJar = new File(tempDir, 'lint.jar')
+ if (lintJar.exists()) {
+ lintJar.delete()
+ println "Removed empty lint.jar from AAR"
+ }
+
+ // Repack AAR
+ ant.zip(destfile: aarFile, basedir: tempDir)
+
+ println "Added consumer ProGuard rules to ${aarFile.name}"
}
}
}
-
- sourceSets {
- String sharedTestDir = 'src/sharedTest/java'
- test {
- java.srcDirs += 'src/test/kotlin'
- java.srcDirs += sharedTestDir
- }
- androidTest {
- java.srcDirs += sharedTestDir
- }
- }
-
- buildTypes {
- debug {
- buildConfigField("String", "SPLIT_VERSION_NAME", "\"${splitVersion}\"")
- buildConfigField("String", "FLAGS_SPEC", "\"${flagsSpec}\"")
- }
- release {
- buildConfigField("String", "SPLIT_VERSION_NAME", "\"${splitVersion}\"")
- buildConfigField("String", "FLAGS_SPEC", "\"${flagsSpec}\"")
- }
- }
- namespace 'io.split.android.android_client'
- lint {
- abortOnError false
- disable 'InvalidPackage'
- }
}
repositories {
@@ -119,78 +103,9 @@ repositories {
mavenCentral()
}
-tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach {
- kotlinOptions {
- jvmTarget = "1.8"
- }
-}
-
dependencies {
-
- def roomVersion = '2.4.3'
- def workVersion = '2.7.1'
- def lifecycleVersion = '2.5.1'
- def annotationVersion = '1.2.0'
- def gsonVersion = '2.10.1'
- def guavaVersion = '32.1.3-android'
- def snakeYamlVersion = '2.2'
- def playServicesVersion = '18.2.0'
- def multidexVersion = '2.0.1'
-
- def jUnitVersion = '4.13.2'
- def mockitoVersion = '4.8.0'
- def hamcrestVersion = '1.3'
- def apacheCommonsVersion = '3.12.0'
- def kotlinVer = '1.5.31'
- def mockWebServerVersion = '4.12.0'
-
- def testRulesVersion = '1.4.0'
- def jUnitExtVersion = '1.1.3'
- def testRunnerVersion = '1.5.1'
- def orchestratorVersion = '1.4.2'
-
- implementation fileTree(include: ['*.jar'], dir: 'libs')
-
- implementation "androidx.room:room-runtime:$roomVersion"
- annotationProcessor "androidx.room:room-compiler:$roomVersion"
-
- implementation "androidx.work:work-runtime:$workVersion"
-
- implementation "androidx.lifecycle:lifecycle-process:$lifecycleVersion"
-
- implementation "androidx.annotation:annotation:$annotationVersion"
-
- implementation "com.google.code.gson:gson:$gsonVersion"
-
- implementation "org.yaml:snakeyaml:$snakeYamlVersion"
- implementation "com.google.android.gms:play-services-base:$playServicesVersion"
- implementation "androidx.multidex:multidex:$multidexVersion"
-
- // Test
- testImplementation "junit:junit:$jUnitVersion"
- testImplementation "org.mockito:mockito-core:$mockitoVersion"
- testImplementation "org.mockito:mockito-inline:$mockitoVersion"
- testImplementation "org.hamcrest:hamcrest-all:$hamcrestVersion"
- testImplementation "org.apache.commons:commons-lang3:$apacheCommonsVersion"
- testImplementation "com.squareup.okhttp3:mockwebserver:$mockWebServerVersion"
- testImplementation "com.squareup.okhttp3:okhttp-tls:$mockWebServerVersion"
- testImplementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlinVer"
- testImplementation "org.jetbrains.kotlin:kotlin-test-junit:$kotlinVer"
- testImplementation "com.google.guava:guava:$guavaVersion"
-
- androidTestImplementation "androidx.test:rules:$testRulesVersion"
- androidTestImplementation "androidx.test.ext:junit:$jUnitExtVersion"
- androidTestImplementation "androidx.test:runner:$testRunnerVersion"
- androidTestUtil "androidx.test:orchestrator:$orchestratorVersion"
-
- androidTestImplementation "com.squareup.okhttp3:mockwebserver:$mockWebServerVersion"
- androidTestImplementation "com.squareup.okhttp3:okhttp-tls:$mockWebServerVersion"
- androidTestImplementation "androidx.room:room-testing:$roomVersion"
- androidTestImplementation "androidx.work:work-testing:$workVersion"
- androidTestImplementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlinVer"
- androidTestImplementation "org.jetbrains.kotlin:kotlin-test-junit:$kotlinVer"
- androidTestImplementation "com.google.guava:guava:$guavaVersion"
- androidTestImplementation "org.mockito:mockito-android:$mockitoVersion"
+ include project(':main')
+ include project(':logger')
}
def splitPOM = {
@@ -222,64 +137,240 @@ def splitPOM = {
mavenPublishing {
coordinates("io.split.client", "android-client", splitVersion)
pom(splitPOM)
-
publishToMavenCentral(false)
- signAllPublications()
-}
-
-task sourcesJar(type: Jar) {
- archiveClassifier.set("sources")
- from android.sourceSets.main.java.srcDirs
-}
-
-task javadoc(type: Javadoc) {
- failOnError false
- source = android.sourceSets.main.java.srcDirs
- classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
- classpath += configurations.javadocDeps
}
-task javadocJar(type: Jar, dependsOn: javadoc) {
-// archiveClassifier = 'javadoc'
- archiveClassifier.set("javadoc")
- from javadoc.destinationDir
+// GPG signing task
+tasks.register('signArtifacts') {
+ description = 'Signs all Maven artifacts with GPG'
+ group = 'publishing'
+
+ doLast {
+ def groupPath = project.group.toString().replace('.', '/')
+ def artifactId = 'android-client'
+ def versionStr = project.version.toString()
+ def artifactDir = file("${buildDir}/publishing/mavenCentral/${groupPath}/${artifactId}/${versionStr}")
+
+ println "Signing artifacts in: ${artifactDir}"
+
+ if (!artifactDir.exists()) {
+ println "WARNING: Artifact directory does not exist: ${artifactDir}"
+ println "Skipping signing. Run publishAllPublicationsToMavenCentralRepository first."
+ return
+ }
+
+ def keyId = project.findProperty('signing.keyId')
+ def password = project.findProperty('signing.password')
+
+ if (!keyId) {
+ throw new GradleException("signing.keyId property is not set in gradle.properties")
+ }
+ if (!password) {
+ throw new GradleException("signing.password property is not set in gradle.properties")
+ }
+
+ println "Using GPG key ID: ${keyId}"
+ println "Using default GPG keyring"
+
+ def artifactsToSign = []
+ artifactDir.eachFile { file ->
+ def name = file.name
+ // Sign .aar, .jar, .pom, and .module files
+ if ((name.endsWith('.aar') || name.endsWith('.jar') || name.endsWith('.pom') || name.endsWith('.module')) && !name.endsWith('.asc')) {
+ artifactsToSign << file
+ }
+ }
+
+ if (artifactsToSign.isEmpty()) {
+ println "WARNING: No artifacts found to sign in ${artifactDir}"
+ return
+ }
+
+ println "Found ${artifactsToSign.size()} artifact(s) to sign:"
+ artifactsToSign.each { println " - ${it.name}" }
+
+ def gpgCommand = null
+ def gpgPaths = [
+ '/opt/homebrew/bin/gpg', // macOS Homebrew on Apple Silicon - try first
+ '/usr/local/bin/gpg',
+ '/usr/bin/gpg',
+ '/opt/local/bin/gpg' // MacPorts
+ ]
+
+ for (path in gpgPaths) {
+ def gpgFile = new File(path)
+ if (gpgFile.exists() && gpgFile.canExecute()) {
+ gpgCommand = path
+ println "Found GPG at: ${gpgCommand}"
+ break
+ }
+ }
+
+ if (gpgCommand == null) {
+ try {
+ def process = new ProcessBuilder(['gpg', '--version'])
+ .redirectErrorStream(true)
+ .start()
+ def exitCode = process.waitFor()
+ if (exitCode == 0) {
+ gpgCommand = 'gpg'
+ println "Found GPG in PATH"
+ }
+ } catch (Exception e) {
+ // GPG not in PATH
+ }
+ }
+
+ if (gpgCommand == null) {
+ throw new GradleException("GPG is not installed or not found in common locations.\n" +
+ "Please install GPG:\n" +
+ " macOS: brew install gnupg\n" +
+ " Linux: apt-get install gnupg or yum install gnupg\n" +
+ "Searched in: ${gpgPaths.join(', ')}\n" +
+ "If GPG is installed elsewhere, you can configure the path in the task.")
+ }
+
+ println "Using GPG: ${gpgCommand}"
+
+ artifactsToSign.each { artifact ->
+ def ascFile = new File(artifact.parentFile, "${artifact.name}.asc")
+
+ // Skip if already signed
+ if (ascFile.exists()) {
+ println "Signature already exists for ${artifact.name}, skipping"
+ return
+ }
+
+ println "Signing: ${artifact.name}"
+
+ try {
+ def cmd = [
+ gpgCommand,
+ '--batch',
+ '--yes',
+ '--no-tty',
+ '--passphrase', password,
+ '--pinentry-mode', 'loopback',
+ '--local-user', keyId,
+ '--detach-sign',
+ '--armor',
+ artifact.absolutePath
+ ]
+
+ // Set GPG_TTY to avoid agent issues
+ def processEnv = new ProcessBuilder().environment()
+ processEnv.put('GPG_TTY', '')
+
+ def process = new ProcessBuilder(cmd)
+ .redirectErrorStream(true)
+ .start()
+
+ def exitCode = process.waitFor()
+
+ if (exitCode != 0) {
+ def output = process.inputStream.text
+ throw new GradleException("Failed to sign ${artifact.name}. Exit code: ${exitCode}\nOutput: ${output}")
+ }
+
+ // Verify the signature was created
+ if (!ascFile.exists()) {
+ throw new GradleException("Signature file was not created for ${artifact.name}")
+ }
+
+ println " ✓ Created signature: ${ascFile.name}"
+
+ // Verify the signature
+ def verifyCmd = [
+ gpgCommand,
+ '--verify',
+ ascFile.absolutePath,
+ artifact.absolutePath
+ ]
+
+ def verifyProcess = new ProcessBuilder(verifyCmd)
+ .redirectErrorStream(true)
+ .start()
+
+ def verifyExitCode = verifyProcess.waitFor()
+
+ if (verifyExitCode == 0) {
+ println " ✓ Signature verified successfully"
+ } else {
+ println " ⚠ Warning: Could not verify signature"
+ }
+
+ } catch (Exception e) {
+ throw new GradleException("Failed to sign artifact ${artifact.name}: ${e.message}", e)
+ }
+ }
+
+ println "Successfully signed ${artifactsToSign.size()} artifact(s)"
+ }
}
-artifacts {
- archives sourcesJar
- archives javadocJar
+// Make signArtifacts run after artifacts are published but before upload
+afterEvaluate {
+ def signTask = tasks.findByName('signArtifacts')
+ def publishTask = tasks.findByName('publishAllPublicationsToMavenCentralRepository')
+
+ if (signTask && publishTask) {
+ // signArtifacts depends on publishing (so artifacts exist)
+ signTask.dependsOn(publishTask)
+
+ // Make publish task finalize with signing
+ publishTask.finalizedBy(signTask)
+
+ println "Configured signArtifacts task to run after publishAllPublicationsToMavenCentralRepository"
+ }
}
-task printReleaseDependenciesToFile {
- doLast {
- def outputFile = new File("$projectDir/deps.txt")
- def processBuilder = new ProcessBuilder("./gradlew", ":android-client:dependencies", "--configuration", "releaseRuntimeClasspath", "-q")
-
- outputFile.parentFile.mkdirs()
- outputFile.text = '' // Clear the file before writing
- processBuilder.redirectOutput(outputFile)
- processBuilder.directory(project.rootDir)
-
- try {
- Process process = processBuilder.start()
- process.waitFor()
-
- def filteredLines = outputFile.readLines().findAll { !it.contains("BUILD SUCCESSFUL") }
-
- // Write the filtered content back to the file
- outputFile.withPrintWriter { writer ->
- filteredLines.each(writer.&println)
+afterEvaluate {
+ def emptySourcesJarTask = tasks.findByName("emptySourcesJar")
+ if (emptySourcesJarTask != null) {
+ // Ensure only one sources artifact is published
+ publishing.publications.withType(MavenPublication) { publication ->
+ if (publication.name == "maven") {
+ // Keep only the sources from fusedLibraryComponent
+ publication.artifacts.removeAll { artifact ->
+ // Remove artifacts that match the emptySourcesJar task output
+ try {
+ def artifactFile = artifact.file
+ if (artifactFile != null && artifactFile.exists()) {
+ def emptySourcesFile = emptySourcesJarTask.archiveFile.get().asFile
+ artifactFile == emptySourcesFile
+ } else {
+ artifact.classifier == "sources" && artifact.extension == "jar" &&
+ !publication.artifacts.any {
+ it != artifact && it.classifier == "sources" &&
+ it.buildDependencies != null
+ }
+ }
+ } catch (Exception e) {
+ false
+ }
+ }
}
- } catch (Exception e) {
- e.printStackTrace()
}
}
-}
-
-preBuild.dependsOn printReleaseDependenciesToFile
-tasks.withType(Test) {
- maxParallelForks = Runtime.runtime.availableProcessors().intdiv(2) ?: 1
- forkEvery = 100
- maxHeapSize = "1024m"
+ // Disable Gradle Module Metadata (.module file) to avoid variant ambiguity
+ tasks.configureEach { task ->
+ // Match tasks related to module metadata generation
+ if (task.name.startsWith('generateMetadataFileFor') ||
+ task.name == 'generateModuleMetadata' ||
+ task.class.name.endsWith('GenerateModuleMetadata')) {
+ task.enabled = false
+ }
+ }
+
+ // Remove empty lint.jar from publication to prevent consumer lint crashes
+ // The fused library plugin generates an empty lint.jar without proper Lint-Registry-v2 manifest
+ // This causes lint to crash when consumers use checkDependencies: true
+ publishing.publications.withType(MavenPublication) { publication ->
+ if (publication.name == "maven") {
+ publication.artifacts.removeAll { artifact ->
+ artifact.file?.name?.endsWith('lint.jar') ?: false
+ }
+ }
+ }
}
diff --git a/deps.txt b/deps.txt
deleted file mode 100644
index a680eefb8..000000000
--- a/deps.txt
+++ /dev/null
@@ -1,128 +0,0 @@
-
-------------------------------------------------------------
-Project ':android-client'
-------------------------------------------------------------
-
-releaseRuntimeClasspath - Runtime classpath of compilation 'release' (target (androidJvm)).
-+--- androidx.room:room-runtime:2.4.3
-| +--- androidx.room:room-common:2.4.3
-| | \--- androidx.annotation:annotation:1.1.0 -> 1.2.0
-| +--- androidx.sqlite:sqlite-framework:2.2.0
-| | +--- androidx.annotation:annotation:1.0.0 -> 1.2.0
-| | \--- androidx.sqlite:sqlite:2.2.0
-| | \--- androidx.annotation:annotation:1.0.0 -> 1.2.0
-| +--- androidx.sqlite:sqlite:2.2.0 (*)
-| +--- androidx.arch.core:core-runtime:2.0.1 -> 2.1.0
-| | +--- androidx.annotation:annotation:1.1.0 -> 1.2.0
-| | \--- androidx.arch.core:core-common:2.1.0
-| | \--- androidx.annotation:annotation:1.1.0 -> 1.2.0
-| \--- androidx.annotation:annotation-experimental:1.1.0
-+--- androidx.work:work-runtime:2.7.1
-| +--- androidx.annotation:annotation-experimental:1.0.0 -> 1.1.0
-| +--- com.google.guava:listenablefuture:1.0
-| +--- androidx.lifecycle:lifecycle-livedata:2.1.0
-| | +--- androidx.arch.core:core-runtime:2.1.0 (*)
-| | +--- androidx.lifecycle:lifecycle-livedata-core:2.1.0
-| | | +--- androidx.lifecycle:lifecycle-common:2.1.0 -> 2.5.1
-| | | | \--- androidx.annotation:annotation:1.1.0 -> 1.2.0
-| | | +--- androidx.arch.core:core-common:2.1.0 (*)
-| | | \--- androidx.arch.core:core-runtime:2.1.0 (*)
-| | \--- androidx.arch.core:core-common:2.1.0 (*)
-| +--- androidx.startup:startup-runtime:1.0.0 -> 1.1.1
-| | +--- androidx.annotation:annotation:1.1.0 -> 1.2.0
-| | \--- androidx.tracing:tracing:1.0.0
-| | \--- androidx.annotation:annotation:1.1.0 -> 1.2.0
-| +--- androidx.core:core:1.6.0
-| | +--- androidx.annotation:annotation:1.2.0
-| | +--- androidx.annotation:annotation-experimental:1.1.0
-| | +--- androidx.lifecycle:lifecycle-runtime:2.0.0 -> 2.5.1
-| | | +--- androidx.annotation:annotation:1.1.0 -> 1.2.0
-| | | +--- androidx.arch.core:core-common:2.1.0 (*)
-| | | +--- androidx.arch.core:core-runtime:2.1.0 (*)
-| | | \--- androidx.lifecycle:lifecycle-common:2.5.1 (*)
-| | +--- androidx.versionedparcelable:versionedparcelable:1.1.1
-| | | +--- androidx.annotation:annotation:1.1.0 -> 1.2.0
-| | | \--- androidx.collection:collection:1.0.0
-| | | \--- androidx.annotation:annotation:1.0.0 -> 1.2.0
-| | \--- androidx.collection:collection:1.0.0 (*)
-| +--- androidx.room:room-runtime:2.2.5 -> 2.4.3 (*)
-| +--- androidx.sqlite:sqlite:2.1.0 -> 2.2.0 (*)
-| +--- androidx.sqlite:sqlite-framework:2.1.0 -> 2.2.0 (*)
-| +--- androidx.core:core:1.1.0 -> 1.6.0 (*)
-| \--- androidx.lifecycle:lifecycle-service:2.1.0
-| \--- androidx.lifecycle:lifecycle-runtime:2.1.0 -> 2.5.1 (*)
-+--- androidx.lifecycle:lifecycle-process:2.5.1
-| +--- androidx.annotation:annotation:1.2.0
-| +--- androidx.lifecycle:lifecycle-runtime:2.5.1 (*)
-| \--- androidx.startup:startup-runtime:1.1.1 (*)
-+--- androidx.annotation:annotation:1.2.0
-+--- com.google.code.gson:gson:2.10.1
-+--- org.yaml:snakeyaml:2.2
-+--- com.google.android.gms:play-services-base:18.2.0
-| +--- androidx.collection:collection:1.0.0 (*)
-| +--- androidx.core:core:1.2.0 -> 1.6.0 (*)
-| +--- androidx.fragment:fragment:1.0.0
-| | +--- androidx.core:core:1.0.0 -> 1.6.0 (*)
-| | +--- androidx.legacy:legacy-support-core-ui:1.0.0
-| | | +--- androidx.annotation:annotation:1.0.0 -> 1.2.0
-| | | +--- androidx.core:core:1.0.0 -> 1.6.0 (*)
-| | | +--- androidx.legacy:legacy-support-core-utils:1.0.0
-| | | | +--- androidx.annotation:annotation:1.0.0 -> 1.2.0
-| | | | +--- androidx.core:core:1.0.0 -> 1.6.0 (*)
-| | | | +--- androidx.documentfile:documentfile:1.0.0
-| | | | | \--- androidx.annotation:annotation:1.0.0 -> 1.2.0
-| | | | +--- androidx.loader:loader:1.0.0
-| | | | | +--- androidx.annotation:annotation:1.0.0 -> 1.2.0
-| | | | | +--- androidx.core:core:1.0.0 -> 1.6.0 (*)
-| | | | | +--- androidx.lifecycle:lifecycle-livedata:2.0.0 -> 2.1.0 (*)
-| | | | | \--- androidx.lifecycle:lifecycle-viewmodel:2.0.0
-| | | | | \--- androidx.annotation:annotation:1.0.0 -> 1.2.0
-| | | | +--- androidx.localbroadcastmanager:localbroadcastmanager:1.0.0
-| | | | | \--- androidx.annotation:annotation:1.0.0 -> 1.2.0
-| | | | \--- androidx.print:print:1.0.0
-| | | | \--- androidx.annotation:annotation:1.0.0 -> 1.2.0
-| | | +--- androidx.customview:customview:1.0.0
-| | | | +--- androidx.annotation:annotation:1.0.0 -> 1.2.0
-| | | | \--- androidx.core:core:1.0.0 -> 1.6.0 (*)
-| | | +--- androidx.viewpager:viewpager:1.0.0
-| | | | +--- androidx.annotation:annotation:1.0.0 -> 1.2.0
-| | | | +--- androidx.core:core:1.0.0 -> 1.6.0 (*)
-| | | | \--- androidx.customview:customview:1.0.0 (*)
-| | | +--- androidx.coordinatorlayout:coordinatorlayout:1.0.0
-| | | | +--- androidx.annotation:annotation:1.0.0 -> 1.2.0
-| | | | +--- androidx.core:core:1.0.0 -> 1.6.0 (*)
-| | | | \--- androidx.customview:customview:1.0.0 (*)
-| | | +--- androidx.drawerlayout:drawerlayout:1.0.0
-| | | | +--- androidx.annotation:annotation:1.0.0 -> 1.2.0
-| | | | +--- androidx.core:core:1.0.0 -> 1.6.0 (*)
-| | | | \--- androidx.customview:customview:1.0.0 (*)
-| | | +--- androidx.slidingpanelayout:slidingpanelayout:1.0.0
-| | | | +--- androidx.annotation:annotation:1.0.0 -> 1.2.0
-| | | | +--- androidx.core:core:1.0.0 -> 1.6.0 (*)
-| | | | \--- androidx.customview:customview:1.0.0 (*)
-| | | +--- androidx.interpolator:interpolator:1.0.0
-| | | | \--- androidx.annotation:annotation:1.0.0 -> 1.2.0
-| | | +--- androidx.swiperefreshlayout:swiperefreshlayout:1.0.0
-| | | | +--- androidx.annotation:annotation:1.0.0 -> 1.2.0
-| | | | +--- androidx.core:core:1.0.0 -> 1.6.0 (*)
-| | | | \--- androidx.interpolator:interpolator:1.0.0 (*)
-| | | +--- androidx.asynclayoutinflater:asynclayoutinflater:1.0.0
-| | | | +--- androidx.annotation:annotation:1.0.0 -> 1.2.0
-| | | | \--- androidx.core:core:1.0.0 -> 1.6.0 (*)
-| | | \--- androidx.cursoradapter:cursoradapter:1.0.0
-| | | \--- androidx.annotation:annotation:1.0.0 -> 1.2.0
-| | +--- androidx.legacy:legacy-support-core-utils:1.0.0 (*)
-| | +--- androidx.annotation:annotation:1.0.0 -> 1.2.0
-| | +--- androidx.loader:loader:1.0.0 (*)
-| | \--- androidx.lifecycle:lifecycle-viewmodel:2.0.0 (*)
-| +--- com.google.android.gms:play-services-basement:18.1.0
-| | +--- androidx.collection:collection:1.0.0 (*)
-| | +--- androidx.core:core:1.2.0 -> 1.6.0 (*)
-| | \--- androidx.fragment:fragment:1.0.0 (*)
-| \--- com.google.android.gms:play-services-tasks:18.0.2
-| \--- com.google.android.gms:play-services-basement:18.1.0 (*)
-\--- androidx.multidex:multidex:2.0.1
-
-(*) - Indicates repeated occurrences of a transitive dependency subtree. Gradle expands transitive dependency subtrees only once per project; repeat occurrences only display the root of the subtree, followed by this annotation.
-
-A web-based, searchable dependency report is available by adding the --scan option.
diff --git a/gradle.properties b/gradle.properties
index aa8a41b37..5e07a3fe4 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -2,10 +2,11 @@ mavenCentralUsername=
mavenCentralPassword=
android.useAndroidX=true
+android.experimental.fusedLibrarySupport=true
android.nonTransitiveRClass=true
-android.defaults.buildfeatures.buildconfig=true
-android.nonFinalResIds=false
+# Removed in AGP 9.0: android.defaults.buildfeatures.buildconfig=true
+# Removed in AGP 9.0: android.nonFinalResIds=false
kotlin.stdlib.default.dependency=false
# Increase heap size for DEX merging to avoid OOM errors
@@ -18,4 +19,4 @@ signing.keyId=
signing.password=
# Path to the file created in the previous step.
-signing.secretKeyRingFile=
\ No newline at end of file
+signing.secretKeyRingFile=
diff --git a/gradle/common-android-library.gradle b/gradle/common-android-library.gradle
new file mode 100644
index 000000000..de5ee9713
--- /dev/null
+++ b/gradle/common-android-library.gradle
@@ -0,0 +1,26 @@
+android {
+ compileSdk 33
+ defaultConfig {
+ minSdk 19
+ targetSdk 31
+ }
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
+}
+
+def kotlinCompileClass = null
+try {
+ kotlinCompileClass = Class.forName('org.jetbrains.kotlin.gradle.tasks.KotlinCompile')
+} catch (Throwable ignored) {
+ // Kotlin plugin not applied in this module; skip Kotlin options configuration
+}
+if (kotlinCompileClass != null) {
+ tasks.withType(kotlinCompileClass).configureEach {
+ kotlinOptions {
+ jvmTarget = "1.8"
+ }
+ }
+}
+
diff --git a/gradle/jacoco-android.gradle b/gradle/jacoco-android.gradle
new file mode 100644
index 000000000..e594c5d18
--- /dev/null
+++ b/gradle/jacoco-android.gradle
@@ -0,0 +1,127 @@
+apply plugin: 'jacoco'
+
+jacoco {
+ toolVersion = '0.8.8'
+}
+
+tasks.withType(Test) {
+ jacoco {
+ includeNoLocationClasses = true
+ excludes = ['jdk.internal.*']
+ enabled = true
+ }
+ systemProperty 'robolectric.enabledSdks', '28,29,30,31,32,33'
+ finalizedBy jacocoTestReport
+}
+
+tasks.register('jacocoTestReport', JacocoReport) {
+ dependsOn 'testDebugUnitTest'
+
+ reports {
+ xml.required = true
+ html.required = true
+ csv.required = false
+ }
+
+ def fileFilter = ['**/R.class', '**/R$*.class', '**/BuildConfig.*', '**/Manifest*.*', '**/*Test*.*', 'android/**/*.*']
+ def classDirectoriesFiles = []
+ def possibleClassDirs = [
+ "${buildDir}/intermediates/javac/debug/classes",
+ "${buildDir}/intermediates/javac/debug/compileDebugJavaWithJavac/classes",
+ "${buildDir}/intermediates/runtime_library_classes_dir/debug",
+ "${buildDir}/intermediates/classes/debug",
+ "${buildDir}/classes/java/main",
+ "${buildDir}/tmp/kotlin-classes/debug"
+ ]
+ possibleClassDirs.each { dirPath ->
+ def dir = file(dirPath)
+ if (dir.exists() && dir.isDirectory()) {
+ def classDir = fileTree(dir: dirPath, excludes: fileFilter)
+ if (classDir.files.size() > 0) {
+ classDirectoriesFiles.add(classDir)
+ }
+ }
+ }
+
+ sourceDirectories.from = files(['src/main/java', 'src/main/kotlin'])
+ classDirectories.from = files(classDirectoriesFiles)
+
+ def execFiles = fileTree(dir: "$buildDir", includes: [
+ 'jacoco/testDebugUnitTest.exec',
+ 'outputs/unit_test_code_coverage/debugUnitTest/testDebugUnitTest.exec',
+ 'jacoco/*.exec',
+ 'outputs/**/**.exec'
+ ])
+ executionData.from = files(execFiles.filter { it.exists() })
+ outputs.upToDateWhen { false }
+
+ doFirst {
+ logger.lifecycle("=== JaCoCo Report Generation ===")
+ logger.lifecycle("Source directories:")
+ sourceDirectories.files.each { dir ->
+ if (dir.exists()) {
+ logger.lifecycle(" - Found: $dir")
+ } else {
+ logger.lifecycle(" - Missing: $dir")
+ }
+ }
+ logger.lifecycle("Class directories:")
+ classDirectories.files.each { dir ->
+ logger.lifecycle(" - $dir (${dir.exists() ? 'exists' : 'missing'})")
+ }
+ def execDataFiles = executionData.files
+ logger.lifecycle("Execution data files:")
+ if (execDataFiles.isEmpty() || !execDataFiles.any { it.exists() }) {
+ logger.warn(" - No execution data files found - coverage report will be empty")
+ } else {
+ execDataFiles.each { file ->
+ if (file.exists()) {
+ logger.lifecycle(" - Found: $file (${file.length()} bytes)")
+ } else {
+ logger.lifecycle(" - Missing: $file")
+ }
+ }
+ }
+ logger.lifecycle("================================")
+ }
+}
+
+task generateJacocoXmlReport {
+ doLast {
+ def reportDir = file("${buildDir}/reports/jacoco/jacocoTestReport")
+ reportDir.mkdirs()
+ def execFiles = fileTree(dir: "${buildDir}", includes: ['**/*.exec'])
+ if (execFiles.isEmpty()) {
+ def reportFile = new File(reportDir, "jacocoTestReport.xml")
+ reportFile.text = "\n\n"
+ println "Created empty JaCoCo report at ${reportFile.absolutePath}"
+ } else {
+ println "Found JaCoCo exec files: ${execFiles.files}"
+ }
+ def reportFile = new File(reportDir, "jacocoTestReport.xml")
+ if (reportFile.exists()) {
+ println "\n==== JaCoCo Report Content ===="
+ println "Report file size: ${reportFile.length()} bytes"
+ if (reportFile.length() > 0) {
+ def xmlContent = reportFile.text
+ println "First 500 chars of report: ${xmlContent.take(500)}..."
+ def packageCount = (xmlContent =~ /
+
+
diff --git a/src/main/java/io/split/android/client/utils/logger/LogPrinter.java b/logger/src/main/java/io/split/android/client/utils/logger/LogPrinter.java
similarity index 100%
rename from src/main/java/io/split/android/client/utils/logger/LogPrinter.java
rename to logger/src/main/java/io/split/android/client/utils/logger/LogPrinter.java
diff --git a/src/main/java/io/split/android/client/utils/logger/LogPrinterImpl.java b/logger/src/main/java/io/split/android/client/utils/logger/LogPrinterImpl.java
similarity index 100%
rename from src/main/java/io/split/android/client/utils/logger/LogPrinterImpl.java
rename to logger/src/main/java/io/split/android/client/utils/logger/LogPrinterImpl.java
diff --git a/src/main/java/io/split/android/client/utils/logger/Logger.java b/logger/src/main/java/io/split/android/client/utils/logger/Logger.java
similarity index 100%
rename from src/main/java/io/split/android/client/utils/logger/Logger.java
rename to logger/src/main/java/io/split/android/client/utils/logger/Logger.java
diff --git a/src/main/java/io/split/android/client/utils/logger/SplitLogLevel.java b/logger/src/main/java/io/split/android/client/utils/logger/SplitLogLevel.java
similarity index 100%
rename from src/main/java/io/split/android/client/utils/logger/SplitLogLevel.java
rename to logger/src/main/java/io/split/android/client/utils/logger/SplitLogLevel.java
diff --git a/src/test/java/io/split/android/client/utils/logger/LogPrinterStub.java b/logger/src/test/java/io/split/android/client/utils/logger/LogPrinterStub.java
similarity index 100%
rename from src/test/java/io/split/android/client/utils/logger/LogPrinterStub.java
rename to logger/src/test/java/io/split/android/client/utils/logger/LogPrinterStub.java
diff --git a/src/test/java/io/split/android/client/utils/logger/LoggerTest.java b/logger/src/test/java/io/split/android/client/utils/logger/LoggerTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/utils/logger/LoggerTest.java
rename to logger/src/test/java/io/split/android/client/utils/logger/LoggerTest.java
diff --git a/main/.gitignore b/main/.gitignore
new file mode 100644
index 000000000..3a11ced48
--- /dev/null
+++ b/main/.gitignore
@@ -0,0 +1,4 @@
+/build
+.gradle
+*.iml
+.DS_Store
diff --git a/main/build.gradle b/main/build.gradle
new file mode 100644
index 000000000..3654b45fe
--- /dev/null
+++ b/main/build.gradle
@@ -0,0 +1,104 @@
+plugins {
+ id 'com.android.library'
+}
+
+apply from: "$rootDir/gradle/common-android-library.gradle"
+apply from: "$rootDir/gradle/jacoco-android.gradle"
+
+android {
+ namespace 'io.split.android.client.main'
+
+ defaultConfig {
+ multiDexEnabled true
+ consumerProguardFiles 'consumer-rules.pro'
+ testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+ testInstrumentationRunnerArguments clearPackageData: 'true'
+
+ testOptions {
+ execution 'ANDROIDX_TEST_ORCHESTRATOR'
+ }
+ }
+
+ buildFeatures {
+ buildConfig true
+ }
+
+ sourceSets {
+ test {
+ java.srcDirs += 'src/sharedTest/java'
+ }
+ androidTest {
+ java.srcDirs += 'src/sharedTest/java'
+ }
+ }
+
+ buildTypes {
+ debug {
+ buildConfigField("String", "SPLIT_VERSION_NAME", "\"${rootProject.ext.splitVersion}\"")
+ buildConfigField("String", "FLAGS_SPEC", "\"1.3\"")
+ }
+ release {
+ buildConfigField("String", "SPLIT_VERSION_NAME", "\"${rootProject.ext.splitVersion}\"")
+ buildConfigField("String", "FLAGS_SPEC", "\"1.3\"")
+ }
+ }
+
+ testOptions {
+ unitTests.returnDefaultValues = true
+ execution 'ANDROIDX_TEST_ORCHESTRATOR'
+ }
+}
+
+dependencies {
+ // Internal module dependencies
+ api project(':logger')
+
+ // External dependencies
+ implementation libs.roomRuntime
+ annotationProcessor libs.roomCompiler
+ implementation libs.workRuntime
+ implementation libs.lifecycleProcess
+ implementation libs.annotation
+ implementation libs.gson
+ implementation libs.snakeyaml
+ implementation libs.playServicesBase
+ implementation libs.multidex
+
+ // Test dependencies
+ testImplementation libs.junit4
+ testImplementation libs.mockitoCore
+ testImplementation libs.mockitoInline
+ testImplementation libs.kotlinStdlib
+ testImplementation libs.kotlinTest
+ testImplementation libs.kotlinTestJunit
+ testImplementation libs.hamcrest
+ testImplementation libs.commonsLang3
+ testImplementation libs.guava
+ testImplementation libs.okhttpMockwebserver
+ testImplementation libs.okhttpTls
+
+ // Android Test dependencies
+ androidTestImplementation libs.androidxTestExtJunit
+ androidTestImplementation libs.androidxTestRunner
+ androidTestImplementation libs.androidxTestRules
+ androidTestImplementation libs.workTesting
+ androidTestImplementation libs.kotlinStdlib
+ androidTestImplementation libs.kotlinTest
+ androidTestImplementation libs.kotlinTestJunit
+ androidTestImplementation libs.mockitoCore
+ androidTestImplementation libs.mockitoAndroid
+ androidTestImplementation libs.okhttpMockwebserver
+ androidTestImplementation libs.okhttpTls
+ androidTestImplementation libs.guava
+
+ androidTestUtil libs.androidxTestOrchestrator
+}
+
+// Align Kotlin only for test and androidTest configurations to avoid duplicate classes
+configurations.matching { it.name.toLowerCase().contains("test") }.all {
+ resolutionStrategy {
+ force "org.jetbrains.kotlin:kotlin-stdlib:1.8.0"
+ force "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.8.0"
+ force "org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.0"
+ }
+}
diff --git a/main/consumer-rules.pro b/main/consumer-rules.pro
new file mode 100644
index 000000000..b776cf12b
--- /dev/null
+++ b/main/consumer-rules.pro
@@ -0,0 +1,10 @@
+# Consumer ProGuard rules for Split Android SDK
+# These rules are automatically applied to apps that depend on this library
+
+# Suppress warnings for java.beans classes (not available on Android)
+# These are referenced by snakeyaml but not actually used on Android
+-dontwarn java.beans.BeanInfo
+-dontwarn java.beans.FeatureDescriptor
+-dontwarn java.beans.IntrospectionException
+-dontwarn java.beans.Introspector
+-dontwarn java.beans.PropertyDescriptor
diff --git a/src/androidTest/AndroidManifest.xml b/main/src/androidTest/AndroidManifest.xml
similarity index 100%
rename from src/androidTest/AndroidManifest.xml
rename to main/src/androidTest/AndroidManifest.xml
diff --git a/src/androidTest/assets/attributes_test_split_change.json b/main/src/androidTest/assets/attributes_test_split_change.json
similarity index 100%
rename from src/androidTest/assets/attributes_test_split_change.json
rename to main/src/androidTest/assets/attributes_test_split_change.json
diff --git a/src/androidTest/assets/bucket_split_test.json b/main/src/androidTest/assets/bucket_split_test.json
similarity index 100%
rename from src/androidTest/assets/bucket_split_test.json
rename to main/src/androidTest/assets/bucket_split_test.json
diff --git a/src/androidTest/assets/lorem_ipsum.txt b/main/src/androidTest/assets/lorem_ipsum.txt
similarity index 100%
rename from src/androidTest/assets/lorem_ipsum.txt
rename to main/src/androidTest/assets/lorem_ipsum.txt
diff --git a/src/androidTest/assets/push_msg-ably_error_40012.txt b/main/src/androidTest/assets/push_msg-ably_error_40012.txt
similarity index 100%
rename from src/androidTest/assets/push_msg-ably_error_40012.txt
rename to main/src/androidTest/assets/push_msg-ably_error_40012.txt
diff --git a/src/androidTest/assets/push_msg-ably_error_40142.txt b/main/src/androidTest/assets/push_msg-ably_error_40142.txt
similarity index 100%
rename from src/androidTest/assets/push_msg-ably_error_40142.txt
rename to main/src/androidTest/assets/push_msg-ably_error_40142.txt
diff --git a/src/androidTest/assets/push_msg-control.txt b/main/src/androidTest/assets/push_msg-control.txt
similarity index 100%
rename from src/androidTest/assets/push_msg-control.txt
rename to main/src/androidTest/assets/push_msg-control.txt
diff --git a/src/androidTest/assets/push_msg-largesegment_update.txt b/main/src/androidTest/assets/push_msg-largesegment_update.txt
similarity index 100%
rename from src/androidTest/assets/push_msg-largesegment_update.txt
rename to main/src/androidTest/assets/push_msg-largesegment_update.txt
diff --git a/src/androidTest/assets/push_msg-occupancy.txt b/main/src/androidTest/assets/push_msg-occupancy.txt
similarity index 100%
rename from src/androidTest/assets/push_msg-occupancy.txt
rename to main/src/androidTest/assets/push_msg-occupancy.txt
diff --git a/src/androidTest/assets/push_msg-segment_updV2.txt b/main/src/androidTest/assets/push_msg-segment_updV2.txt
similarity index 100%
rename from src/androidTest/assets/push_msg-segment_updV2.txt
rename to main/src/androidTest/assets/push_msg-segment_updV2.txt
diff --git a/src/androidTest/assets/push_msg-segment_update.txt b/main/src/androidTest/assets/push_msg-segment_update.txt
similarity index 100%
rename from src/androidTest/assets/push_msg-segment_update.txt
rename to main/src/androidTest/assets/push_msg-segment_update.txt
diff --git a/src/androidTest/assets/push_msg-segment_update_empty_payload.txt b/main/src/androidTest/assets/push_msg-segment_update_empty_payload.txt
similarity index 100%
rename from src/androidTest/assets/push_msg-segment_update_empty_payload.txt
rename to main/src/androidTest/assets/push_msg-segment_update_empty_payload.txt
diff --git a/src/androidTest/assets/push_msg-segment_update_payload.txt b/main/src/androidTest/assets/push_msg-segment_update_payload.txt
similarity index 100%
rename from src/androidTest/assets/push_msg-segment_update_payload.txt
rename to main/src/androidTest/assets/push_msg-segment_update_payload.txt
diff --git a/src/androidTest/assets/push_msg-segment_update_payload_generic.txt b/main/src/androidTest/assets/push_msg-segment_update_payload_generic.txt
similarity index 100%
rename from src/androidTest/assets/push_msg-segment_update_payload_generic.txt
rename to main/src/androidTest/assets/push_msg-segment_update_payload_generic.txt
diff --git a/src/androidTest/assets/push_msg-split_kill.txt b/main/src/androidTest/assets/push_msg-split_kill.txt
similarity index 100%
rename from src/androidTest/assets/push_msg-split_kill.txt
rename to main/src/androidTest/assets/push_msg-split_kill.txt
diff --git a/src/androidTest/assets/push_msg-split_kill_old.txt b/main/src/androidTest/assets/push_msg-split_kill_old.txt
similarity index 100%
rename from src/androidTest/assets/push_msg-split_kill_old.txt
rename to main/src/androidTest/assets/push_msg-split_kill_old.txt
diff --git a/src/androidTest/assets/push_msg-split_update-chgnum.txt b/main/src/androidTest/assets/push_msg-split_update-chgnum.txt
similarity index 100%
rename from src/androidTest/assets/push_msg-split_update-chgnum.txt
rename to main/src/androidTest/assets/push_msg-split_update-chgnum.txt
diff --git a/src/androidTest/assets/push_msg-split_update.txt b/main/src/androidTest/assets/push_msg-split_update.txt
similarity index 100%
rename from src/androidTest/assets/push_msg-split_update.txt
rename to main/src/androidTest/assets/push_msg-split_update.txt
diff --git a/src/androidTest/assets/push_msg-split_update_old_change_nb.txt b/main/src/androidTest/assets/push_msg-split_update_old_change_nb.txt
similarity index 100%
rename from src/androidTest/assets/push_msg-split_update_old_change_nb.txt
rename to main/src/androidTest/assets/push_msg-split_update_old_change_nb.txt
diff --git a/src/androidTest/assets/push_token-expired.txt b/main/src/androidTest/assets/push_token-expired.txt
similarity index 100%
rename from src/androidTest/assets/push_token-expired.txt
rename to main/src/androidTest/assets/push_token-expired.txt
diff --git a/src/androidTest/assets/simple_split.json b/main/src/androidTest/assets/simple_split.json
similarity index 100%
rename from src/androidTest/assets/simple_split.json
rename to main/src/androidTest/assets/simple_split.json
diff --git a/src/androidTest/assets/split.json b/main/src/androidTest/assets/split.json
similarity index 100%
rename from src/androidTest/assets/split.json
rename to main/src/androidTest/assets/split.json
diff --git a/src/androidTest/assets/split_changes_1.json b/main/src/androidTest/assets/split_changes_1.json
similarity index 100%
rename from src/androidTest/assets/split_changes_1.json
rename to main/src/androidTest/assets/split_changes_1.json
diff --git a/src/androidTest/assets/split_changes_flag_set-0.json b/main/src/androidTest/assets/split_changes_flag_set-0.json
similarity index 100%
rename from src/androidTest/assets/split_changes_flag_set-0.json
rename to main/src/androidTest/assets/split_changes_flag_set-0.json
diff --git a/src/androidTest/assets/split_changes_flag_set-1.json b/main/src/androidTest/assets/split_changes_flag_set-1.json
similarity index 100%
rename from src/androidTest/assets/split_changes_flag_set-1.json
rename to main/src/androidTest/assets/split_changes_flag_set-1.json
diff --git a/src/androidTest/assets/split_changes_flag_set-2.json b/main/src/androidTest/assets/split_changes_flag_set-2.json
similarity index 100%
rename from src/androidTest/assets/split_changes_flag_set-2.json
rename to main/src/androidTest/assets/split_changes_flag_set-2.json
diff --git a/src/androidTest/assets/split_changes_imp_toggle.json b/main/src/androidTest/assets/split_changes_imp_toggle.json
similarity index 100%
rename from src/androidTest/assets/split_changes_imp_toggle.json
rename to main/src/androidTest/assets/split_changes_imp_toggle.json
diff --git a/src/androidTest/assets/split_changes_large_segments-0.json b/main/src/androidTest/assets/split_changes_large_segments-0.json
similarity index 100%
rename from src/androidTest/assets/split_changes_large_segments-0.json
rename to main/src/androidTest/assets/split_changes_large_segments-0.json
diff --git a/src/androidTest/assets/split_changes_legacy.json b/main/src/androidTest/assets/split_changes_legacy.json
similarity index 100%
rename from src/androidTest/assets/split_changes_legacy.json
rename to main/src/androidTest/assets/split_changes_legacy.json
diff --git a/src/androidTest/assets/split_changes_rbs.json b/main/src/androidTest/assets/split_changes_rbs.json
similarity index 100%
rename from src/androidTest/assets/split_changes_rbs.json
rename to main/src/androidTest/assets/split_changes_rbs.json
diff --git a/src/androidTest/assets/split_changes_semver.json b/main/src/androidTest/assets/split_changes_semver.json
similarity index 100%
rename from src/androidTest/assets/split_changes_semver.json
rename to main/src/androidTest/assets/split_changes_semver.json
diff --git a/src/androidTest/assets/split_dependency.json b/main/src/androidTest/assets/split_dependency.json
similarity index 100%
rename from src/androidTest/assets/split_dependency.json
rename to main/src/androidTest/assets/split_dependency.json
diff --git a/src/androidTest/assets/splitchanges_int_test.json b/main/src/androidTest/assets/splitchanges_int_test.json
similarity index 100%
rename from src/androidTest/assets/splitchanges_int_test.json
rename to main/src/androidTest/assets/splitchanges_int_test.json
diff --git a/src/androidTest/assets/splitchanges_prerequisites.json b/main/src/androidTest/assets/splitchanges_prerequisites.json
similarity index 100%
rename from src/androidTest/assets/splitchanges_prerequisites.json
rename to main/src/androidTest/assets/splitchanges_prerequisites.json
diff --git a/src/androidTest/assets/splitchanges_unsupported_matcher.json b/main/src/androidTest/assets/splitchanges_unsupported_matcher.json
similarity index 100%
rename from src/androidTest/assets/splitchanges_unsupported_matcher.json
rename to main/src/androidTest/assets/splitchanges_unsupported_matcher.json
diff --git a/src/androidTest/assets/splits.yaml b/main/src/androidTest/assets/splits.yaml
similarity index 100%
rename from src/androidTest/assets/splits.yaml
rename to main/src/androidTest/assets/splits.yaml
diff --git a/src/androidTest/assets/splits1.properties b/main/src/androidTest/assets/splits1.properties
similarity index 100%
rename from src/androidTest/assets/splits1.properties
rename to main/src/androidTest/assets/splits1.properties
diff --git a/src/androidTest/assets/splits_test.properties b/main/src/androidTest/assets/splits_test.properties
similarity index 100%
rename from src/androidTest/assets/splits_test.properties
rename to main/src/androidTest/assets/splits_test.properties
diff --git a/src/androidTest/assets/splits_yml.yml b/main/src/androidTest/assets/splits_yml.yml
similarity index 100%
rename from src/androidTest/assets/splits_yml.yml
rename to main/src/androidTest/assets/splits_yml.yml
diff --git a/src/androidTest/java/fake/HttpClientMock.java b/main/src/androidTest/java/fake/HttpClientMock.java
similarity index 100%
rename from src/androidTest/java/fake/HttpClientMock.java
rename to main/src/androidTest/java/fake/HttpClientMock.java
diff --git a/src/androidTest/java/fake/HttpClientStub.java b/main/src/androidTest/java/fake/HttpClientStub.java
similarity index 100%
rename from src/androidTest/java/fake/HttpClientStub.java
rename to main/src/androidTest/java/fake/HttpClientStub.java
diff --git a/src/androidTest/java/fake/HttpRequestMock.java b/main/src/androidTest/java/fake/HttpRequestMock.java
similarity index 100%
rename from src/androidTest/java/fake/HttpRequestMock.java
rename to main/src/androidTest/java/fake/HttpRequestMock.java
diff --git a/src/androidTest/java/fake/HttpRequestStub.java b/main/src/androidTest/java/fake/HttpRequestStub.java
similarity index 100%
rename from src/androidTest/java/fake/HttpRequestStub.java
rename to main/src/androidTest/java/fake/HttpRequestStub.java
diff --git a/src/androidTest/java/fake/HttpResponseMock.java b/main/src/androidTest/java/fake/HttpResponseMock.java
similarity index 100%
rename from src/androidTest/java/fake/HttpResponseMock.java
rename to main/src/androidTest/java/fake/HttpResponseMock.java
diff --git a/src/androidTest/java/fake/HttpResponseMockDispatcher.java b/main/src/androidTest/java/fake/HttpResponseMockDispatcher.java
similarity index 100%
rename from src/androidTest/java/fake/HttpResponseMockDispatcher.java
rename to main/src/androidTest/java/fake/HttpResponseMockDispatcher.java
diff --git a/src/androidTest/java/fake/HttpResponseStub.java b/main/src/androidTest/java/fake/HttpResponseStub.java
similarity index 100%
rename from src/androidTest/java/fake/HttpResponseStub.java
rename to main/src/androidTest/java/fake/HttpResponseStub.java
diff --git a/src/androidTest/java/fake/HttpStreamRequestMock.java b/main/src/androidTest/java/fake/HttpStreamRequestMock.java
similarity index 100%
rename from src/androidTest/java/fake/HttpStreamRequestMock.java
rename to main/src/androidTest/java/fake/HttpStreamRequestMock.java
diff --git a/src/androidTest/java/fake/HttpStreamResponseMock.java b/main/src/androidTest/java/fake/HttpStreamResponseMock.java
similarity index 100%
rename from src/androidTest/java/fake/HttpStreamResponseMock.java
rename to main/src/androidTest/java/fake/HttpStreamResponseMock.java
diff --git a/src/androidTest/java/fake/LifecycleManagerStub.java b/main/src/androidTest/java/fake/LifecycleManagerStub.java
similarity index 100%
rename from src/androidTest/java/fake/LifecycleManagerStub.java
rename to main/src/androidTest/java/fake/LifecycleManagerStub.java
diff --git a/src/androidTest/java/fake/SplitClientStub.java b/main/src/androidTest/java/fake/SplitClientStub.java
similarity index 100%
rename from src/androidTest/java/fake/SplitClientStub.java
rename to main/src/androidTest/java/fake/SplitClientStub.java
diff --git a/src/androidTest/java/fake/SplitEventExecutorResourcesMock.java b/main/src/androidTest/java/fake/SplitEventExecutorResourcesMock.java
similarity index 100%
rename from src/androidTest/java/fake/SplitEventExecutorResourcesMock.java
rename to main/src/androidTest/java/fake/SplitEventExecutorResourcesMock.java
diff --git a/src/androidTest/java/fake/SyncManagerStub.java b/main/src/androidTest/java/fake/SyncManagerStub.java
similarity index 100%
rename from src/androidTest/java/fake/SyncManagerStub.java
rename to main/src/androidTest/java/fake/SyncManagerStub.java
diff --git a/src/androidTest/java/fake/SynchronizerSpyImpl.java b/main/src/androidTest/java/fake/SynchronizerSpyImpl.java
similarity index 100%
rename from src/androidTest/java/fake/SynchronizerSpyImpl.java
rename to main/src/androidTest/java/fake/SynchronizerSpyImpl.java
diff --git a/src/androidTest/java/helper/DataSample.kt b/main/src/androidTest/java/helper/DataSample.kt
similarity index 100%
rename from src/androidTest/java/helper/DataSample.kt
rename to main/src/androidTest/java/helper/DataSample.kt
diff --git a/src/androidTest/java/helper/DatabaseHelper.java b/main/src/androidTest/java/helper/DatabaseHelper.java
similarity index 100%
rename from src/androidTest/java/helper/DatabaseHelper.java
rename to main/src/androidTest/java/helper/DatabaseHelper.java
diff --git a/src/androidTest/java/helper/FileHelper.java b/main/src/androidTest/java/helper/FileHelper.java
similarity index 100%
rename from src/androidTest/java/helper/FileHelper.java
rename to main/src/androidTest/java/helper/FileHelper.java
diff --git a/src/androidTest/java/helper/ImpressionListenerHelper.java b/main/src/androidTest/java/helper/ImpressionListenerHelper.java
similarity index 100%
rename from src/androidTest/java/helper/ImpressionListenerHelper.java
rename to main/src/androidTest/java/helper/ImpressionListenerHelper.java
diff --git a/src/androidTest/java/helper/IntegrationHelper.java b/main/src/androidTest/java/helper/IntegrationHelper.java
similarity index 100%
rename from src/androidTest/java/helper/IntegrationHelper.java
rename to main/src/androidTest/java/helper/IntegrationHelper.java
diff --git a/src/androidTest/java/helper/SplitEventTaskHelper.java b/main/src/androidTest/java/helper/SplitEventTaskHelper.java
similarity index 100%
rename from src/androidTest/java/helper/SplitEventTaskHelper.java
rename to main/src/androidTest/java/helper/SplitEventTaskHelper.java
diff --git a/src/androidTest/java/helper/TestableSplitConfigBuilder.java b/main/src/androidTest/java/helper/TestableSplitConfigBuilder.java
similarity index 100%
rename from src/androidTest/java/helper/TestableSplitConfigBuilder.java
rename to main/src/androidTest/java/helper/TestableSplitConfigBuilder.java
diff --git a/src/androidTest/java/io/split/android/client/service/impressions/ImpressionPropertiesIntegrationTest.java b/main/src/androidTest/java/io/split/android/client/service/impressions/ImpressionPropertiesIntegrationTest.java
similarity index 100%
rename from src/androidTest/java/io/split/android/client/service/impressions/ImpressionPropertiesIntegrationTest.java
rename to main/src/androidTest/java/io/split/android/client/service/impressions/ImpressionPropertiesIntegrationTest.java
diff --git a/src/androidTest/java/io/split/android/client/service/impressions/ImpressionUtilsTest.java b/main/src/androidTest/java/io/split/android/client/service/impressions/ImpressionUtilsTest.java
similarity index 100%
rename from src/androidTest/java/io/split/android/client/service/impressions/ImpressionUtilsTest.java
rename to main/src/androidTest/java/io/split/android/client/service/impressions/ImpressionUtilsTest.java
diff --git a/src/androidTest/java/io/split/android/client/service/impressions/observer/DedupeIntegrationTest.java b/main/src/androidTest/java/io/split/android/client/service/impressions/observer/DedupeIntegrationTest.java
similarity index 100%
rename from src/androidTest/java/io/split/android/client/service/impressions/observer/DedupeIntegrationTest.java
rename to main/src/androidTest/java/io/split/android/client/service/impressions/observer/DedupeIntegrationTest.java
diff --git a/src/androidTest/java/io/split/android/client/service/impressions/observer/ImpressionsObserverCacheImplIntegrationTest.java b/main/src/androidTest/java/io/split/android/client/service/impressions/observer/ImpressionsObserverCacheImplIntegrationTest.java
similarity index 100%
rename from src/androidTest/java/io/split/android/client/service/impressions/observer/ImpressionsObserverCacheImplIntegrationTest.java
rename to main/src/androidTest/java/io/split/android/client/service/impressions/observer/ImpressionsObserverCacheImplIntegrationTest.java
diff --git a/src/androidTest/java/io/split/android/client/service/impressions/observer/ImpressionsObserverTest.java b/main/src/androidTest/java/io/split/android/client/service/impressions/observer/ImpressionsObserverTest.java
similarity index 100%
rename from src/androidTest/java/io/split/android/client/service/impressions/observer/ImpressionsObserverTest.java
rename to main/src/androidTest/java/io/split/android/client/service/impressions/observer/ImpressionsObserverTest.java
diff --git a/src/androidTest/java/io/split/android/client/service/impressions/observer/ListenableLruCacheTest.java b/main/src/androidTest/java/io/split/android/client/service/impressions/observer/ListenableLruCacheTest.java
similarity index 100%
rename from src/androidTest/java/io/split/android/client/service/impressions/observer/ListenableLruCacheTest.java
rename to main/src/androidTest/java/io/split/android/client/service/impressions/observer/ListenableLruCacheTest.java
diff --git a/src/androidTest/java/tests/database/AttributesDaoTest.java b/main/src/androidTest/java/tests/database/AttributesDaoTest.java
similarity index 100%
rename from src/androidTest/java/tests/database/AttributesDaoTest.java
rename to main/src/androidTest/java/tests/database/AttributesDaoTest.java
diff --git a/src/androidTest/java/tests/database/DatabaseInitializationTest.java b/main/src/androidTest/java/tests/database/DatabaseInitializationTest.java
similarity index 100%
rename from src/androidTest/java/tests/database/DatabaseInitializationTest.java
rename to main/src/androidTest/java/tests/database/DatabaseInitializationTest.java
diff --git a/src/androidTest/java/tests/database/GeneralInfoDaoTest.java b/main/src/androidTest/java/tests/database/GeneralInfoDaoTest.java
similarity index 100%
rename from src/androidTest/java/tests/database/GeneralInfoDaoTest.java
rename to main/src/androidTest/java/tests/database/GeneralInfoDaoTest.java
diff --git a/src/androidTest/java/tests/database/GenericDaoTest.java b/main/src/androidTest/java/tests/database/GenericDaoTest.java
similarity index 100%
rename from src/androidTest/java/tests/database/GenericDaoTest.java
rename to main/src/androidTest/java/tests/database/GenericDaoTest.java
diff --git a/src/androidTest/java/tests/database/ImpressionDaoTest.java b/main/src/androidTest/java/tests/database/ImpressionDaoTest.java
similarity index 100%
rename from src/androidTest/java/tests/database/ImpressionDaoTest.java
rename to main/src/androidTest/java/tests/database/ImpressionDaoTest.java
diff --git a/src/androidTest/java/tests/database/ImpressionsObserverCacheDaoTest.java b/main/src/androidTest/java/tests/database/ImpressionsObserverCacheDaoTest.java
similarity index 100%
rename from src/androidTest/java/tests/database/ImpressionsObserverCacheDaoTest.java
rename to main/src/androidTest/java/tests/database/ImpressionsObserverCacheDaoTest.java
diff --git a/src/androidTest/java/tests/database/MyLargeSegmentDaoTest.java b/main/src/androidTest/java/tests/database/MyLargeSegmentDaoTest.java
similarity index 100%
rename from src/androidTest/java/tests/database/MyLargeSegmentDaoTest.java
rename to main/src/androidTest/java/tests/database/MyLargeSegmentDaoTest.java
diff --git a/src/androidTest/java/tests/database/MySegmentDaoTest.java b/main/src/androidTest/java/tests/database/MySegmentDaoTest.java
similarity index 100%
rename from src/androidTest/java/tests/database/MySegmentDaoTest.java
rename to main/src/androidTest/java/tests/database/MySegmentDaoTest.java
diff --git a/src/androidTest/java/tests/database/RuleBasedSegmentDaoTest.java b/main/src/androidTest/java/tests/database/RuleBasedSegmentDaoTest.java
similarity index 100%
rename from src/androidTest/java/tests/database/RuleBasedSegmentDaoTest.java
rename to main/src/androidTest/java/tests/database/RuleBasedSegmentDaoTest.java
diff --git a/src/androidTest/java/tests/database/SplitDaoTest.java b/main/src/androidTest/java/tests/database/SplitDaoTest.java
similarity index 100%
rename from src/androidTest/java/tests/database/SplitDaoTest.java
rename to main/src/androidTest/java/tests/database/SplitDaoTest.java
diff --git a/src/androidTest/java/tests/database/TrackDaoTest.java b/main/src/androidTest/java/tests/database/TrackDaoTest.java
similarity index 100%
rename from src/androidTest/java/tests/database/TrackDaoTest.java
rename to main/src/androidTest/java/tests/database/TrackDaoTest.java
diff --git a/src/androidTest/java/tests/database/UniqueKeysDaoTest.java b/main/src/androidTest/java/tests/database/UniqueKeysDaoTest.java
similarity index 100%
rename from src/androidTest/java/tests/database/UniqueKeysDaoTest.java
rename to main/src/androidTest/java/tests/database/UniqueKeysDaoTest.java
diff --git a/src/androidTest/java/tests/integration/FlagsSpecInRequestTest.java b/main/src/androidTest/java/tests/integration/FlagsSpecInRequestTest.java
similarity index 100%
rename from src/androidTest/java/tests/integration/FlagsSpecInRequestTest.java
rename to main/src/androidTest/java/tests/integration/FlagsSpecInRequestTest.java
diff --git a/src/androidTest/java/tests/integration/InitialChangeNumberTest.java b/main/src/androidTest/java/tests/integration/InitialChangeNumberTest.java
similarity index 100%
rename from src/androidTest/java/tests/integration/InitialChangeNumberTest.java
rename to main/src/androidTest/java/tests/integration/InitialChangeNumberTest.java
diff --git a/src/androidTest/java/tests/integration/IntegrationTest.java b/main/src/androidTest/java/tests/integration/IntegrationTest.java
similarity index 100%
rename from src/androidTest/java/tests/integration/IntegrationTest.java
rename to main/src/androidTest/java/tests/integration/IntegrationTest.java
diff --git a/src/androidTest/java/tests/integration/LifecyleOnBGTest.java b/main/src/androidTest/java/tests/integration/LifecyleOnBGTest.java
similarity index 100%
rename from src/androidTest/java/tests/integration/LifecyleOnBGTest.java
rename to main/src/androidTest/java/tests/integration/LifecyleOnBGTest.java
diff --git a/src/androidTest/java/tests/integration/MySegmentUpdatedTest.java b/main/src/androidTest/java/tests/integration/MySegmentUpdatedTest.java
similarity index 100%
rename from src/androidTest/java/tests/integration/MySegmentUpdatedTest.java
rename to main/src/androidTest/java/tests/integration/MySegmentUpdatedTest.java
diff --git a/src/androidTest/java/tests/integration/MySegmentsServerErrorTest.java b/main/src/androidTest/java/tests/integration/MySegmentsServerErrorTest.java
similarity index 100%
rename from src/androidTest/java/tests/integration/MySegmentsServerErrorTest.java
rename to main/src/androidTest/java/tests/integration/MySegmentsServerErrorTest.java
diff --git a/src/androidTest/java/tests/integration/ProxyFactoryTest.java b/main/src/androidTest/java/tests/integration/ProxyFactoryTest.java
similarity index 100%
rename from src/androidTest/java/tests/integration/ProxyFactoryTest.java
rename to main/src/androidTest/java/tests/integration/ProxyFactoryTest.java
diff --git a/src/androidTest/java/tests/integration/SingleSyncTest.java b/main/src/androidTest/java/tests/integration/SingleSyncTest.java
similarity index 100%
rename from src/androidTest/java/tests/integration/SingleSyncTest.java
rename to main/src/androidTest/java/tests/integration/SingleSyncTest.java
diff --git a/src/androidTest/java/tests/integration/SplitChangesCdnBypassTest.java b/main/src/androidTest/java/tests/integration/SplitChangesCdnBypassTest.java
similarity index 100%
rename from src/androidTest/java/tests/integration/SplitChangesCdnBypassTest.java
rename to main/src/androidTest/java/tests/integration/SplitChangesCdnBypassTest.java
diff --git a/src/androidTest/java/tests/integration/SplitChangesServerErrorTest.java b/main/src/androidTest/java/tests/integration/SplitChangesServerErrorTest.java
similarity index 100%
rename from src/androidTest/java/tests/integration/SplitChangesServerErrorTest.java
rename to main/src/androidTest/java/tests/integration/SplitChangesServerErrorTest.java
diff --git a/src/androidTest/java/tests/integration/SplitChangesTest.java b/main/src/androidTest/java/tests/integration/SplitChangesTest.java
similarity index 100%
rename from src/androidTest/java/tests/integration/SplitChangesTest.java
rename to main/src/androidTest/java/tests/integration/SplitChangesTest.java
diff --git a/src/androidTest/java/tests/integration/SplitFactoryFreshInstallTest.java b/main/src/androidTest/java/tests/integration/SplitFactoryFreshInstallTest.java
similarity index 100%
rename from src/androidTest/java/tests/integration/SplitFactoryFreshInstallTest.java
rename to main/src/androidTest/java/tests/integration/SplitFactoryFreshInstallTest.java
diff --git a/src/androidTest/java/tests/integration/SplitFetchSpecificSplitTest.java b/main/src/androidTest/java/tests/integration/SplitFetchSpecificSplitTest.java
similarity index 100%
rename from src/androidTest/java/tests/integration/SplitFetchSpecificSplitTest.java
rename to main/src/androidTest/java/tests/integration/SplitFetchSpecificSplitTest.java
diff --git a/src/androidTest/java/tests/integration/SplitsTwoDifferentApiKeyTest.java b/main/src/androidTest/java/tests/integration/SplitsTwoDifferentApiKeyTest.java
similarity index 100%
rename from src/androidTest/java/tests/integration/SplitsTwoDifferentApiKeyTest.java
rename to main/src/androidTest/java/tests/integration/SplitsTwoDifferentApiKeyTest.java
diff --git a/src/androidTest/java/tests/integration/TrackTest.java b/main/src/androidTest/java/tests/integration/TrackTest.java
similarity index 100%
rename from src/androidTest/java/tests/integration/TrackTest.java
rename to main/src/androidTest/java/tests/integration/TrackTest.java
diff --git a/src/androidTest/java/tests/integration/attributes/AttributesIntegrationTest.java b/main/src/androidTest/java/tests/integration/attributes/AttributesIntegrationTest.java
similarity index 100%
rename from src/androidTest/java/tests/integration/attributes/AttributesIntegrationTest.java
rename to main/src/androidTest/java/tests/integration/attributes/AttributesIntegrationTest.java
diff --git a/src/androidTest/java/tests/integration/encryption/EncryptionTest.java b/main/src/androidTest/java/tests/integration/encryption/EncryptionTest.java
similarity index 100%
rename from src/androidTest/java/tests/integration/encryption/EncryptionTest.java
rename to main/src/androidTest/java/tests/integration/encryption/EncryptionTest.java
diff --git a/src/androidTest/java/tests/integration/fallback/FallbackTreatmentsTest.java b/main/src/androidTest/java/tests/integration/fallback/FallbackTreatmentsTest.java
similarity index 100%
rename from src/androidTest/java/tests/integration/fallback/FallbackTreatmentsTest.java
rename to main/src/androidTest/java/tests/integration/fallback/FallbackTreatmentsTest.java
diff --git a/src/androidTest/java/tests/integration/init/InitializationTest.java b/main/src/androidTest/java/tests/integration/init/InitializationTest.java
similarity index 100%
rename from src/androidTest/java/tests/integration/init/InitializationTest.java
rename to main/src/androidTest/java/tests/integration/init/InitializationTest.java
diff --git a/src/androidTest/java/tests/integration/largesegments/LargeSegmentTestHelper.java b/main/src/androidTest/java/tests/integration/largesegments/LargeSegmentTestHelper.java
similarity index 100%
rename from src/androidTest/java/tests/integration/largesegments/LargeSegmentTestHelper.java
rename to main/src/androidTest/java/tests/integration/largesegments/LargeSegmentTestHelper.java
diff --git a/src/androidTest/java/tests/integration/largesegments/LargeSegmentsStreamingTest.java b/main/src/androidTest/java/tests/integration/largesegments/LargeSegmentsStreamingTest.java
similarity index 100%
rename from src/androidTest/java/tests/integration/largesegments/LargeSegmentsStreamingTest.java
rename to main/src/androidTest/java/tests/integration/largesegments/LargeSegmentsStreamingTest.java
diff --git a/src/androidTest/java/tests/integration/largesegments/LargeSegmentsTest.java b/main/src/androidTest/java/tests/integration/largesegments/LargeSegmentsTest.java
similarity index 100%
rename from src/androidTest/java/tests/integration/largesegments/LargeSegmentsTest.java
rename to main/src/androidTest/java/tests/integration/largesegments/LargeSegmentsTest.java
diff --git a/src/androidTest/java/tests/integration/matcher/PrerequisitesTest.java b/main/src/androidTest/java/tests/integration/matcher/PrerequisitesTest.java
similarity index 99%
rename from src/androidTest/java/tests/integration/matcher/PrerequisitesTest.java
rename to main/src/androidTest/java/tests/integration/matcher/PrerequisitesTest.java
index 9a34f73c9..8701e460a 100644
--- a/src/androidTest/java/tests/integration/matcher/PrerequisitesTest.java
+++ b/main/src/androidTest/java/tests/integration/matcher/PrerequisitesTest.java
@@ -253,4 +253,3 @@ private String loadSplitChanges() {
return IntegrationHelper.loadSplitChanges(mContext, "splitchanges_prerequisites.json");
}
}
-
diff --git a/src/androidTest/java/tests/integration/matcher/SemverMatcherTest.java b/main/src/androidTest/java/tests/integration/matcher/SemverMatcherTest.java
similarity index 100%
rename from src/androidTest/java/tests/integration/matcher/SemverMatcherTest.java
rename to main/src/androidTest/java/tests/integration/matcher/SemverMatcherTest.java
diff --git a/src/androidTest/java/tests/integration/matcher/UnsupportedMatcherTest.java b/main/src/androidTest/java/tests/integration/matcher/UnsupportedMatcherTest.java
similarity index 100%
rename from src/androidTest/java/tests/integration/matcher/UnsupportedMatcherTest.java
rename to main/src/androidTest/java/tests/integration/matcher/UnsupportedMatcherTest.java
diff --git a/src/androidTest/java/tests/integration/pin/CertPinningTest.java b/main/src/androidTest/java/tests/integration/pin/CertPinningTest.java
similarity index 100%
rename from src/androidTest/java/tests/integration/pin/CertPinningTest.java
rename to main/src/androidTest/java/tests/integration/pin/CertPinningTest.java
diff --git a/src/androidTest/java/tests/integration/rbs/OutdatedProxyIntegrationTest.java b/main/src/androidTest/java/tests/integration/rbs/OutdatedProxyIntegrationTest.java
similarity index 100%
rename from src/androidTest/java/tests/integration/rbs/OutdatedProxyIntegrationTest.java
rename to main/src/androidTest/java/tests/integration/rbs/OutdatedProxyIntegrationTest.java
diff --git a/src/androidTest/java/tests/integration/rbs/RuleBasedSegmentsIntegrationTest.java b/main/src/androidTest/java/tests/integration/rbs/RuleBasedSegmentsIntegrationTest.java
similarity index 100%
rename from src/androidTest/java/tests/integration/rbs/RuleBasedSegmentsIntegrationTest.java
rename to main/src/androidTest/java/tests/integration/rbs/RuleBasedSegmentsIntegrationTest.java
diff --git a/src/androidTest/java/tests/integration/rollout/RolloutCacheManagerIntegrationTest.java b/main/src/androidTest/java/tests/integration/rollout/RolloutCacheManagerIntegrationTest.java
similarity index 100%
rename from src/androidTest/java/tests/integration/rollout/RolloutCacheManagerIntegrationTest.java
rename to main/src/androidTest/java/tests/integration/rollout/RolloutCacheManagerIntegrationTest.java
diff --git a/src/androidTest/java/tests/integration/sets/FlagSetsEvaluationTest.java b/main/src/androidTest/java/tests/integration/sets/FlagSetsEvaluationTest.java
similarity index 100%
rename from src/androidTest/java/tests/integration/sets/FlagSetsEvaluationTest.java
rename to main/src/androidTest/java/tests/integration/sets/FlagSetsEvaluationTest.java
diff --git a/src/androidTest/java/tests/integration/sets/FlagSetsMultipleFactoryTest.java b/main/src/androidTest/java/tests/integration/sets/FlagSetsMultipleFactoryTest.java
similarity index 100%
rename from src/androidTest/java/tests/integration/sets/FlagSetsMultipleFactoryTest.java
rename to main/src/androidTest/java/tests/integration/sets/FlagSetsMultipleFactoryTest.java
diff --git a/src/androidTest/java/tests/integration/sets/FlagSetsPollingTest.java b/main/src/androidTest/java/tests/integration/sets/FlagSetsPollingTest.java
similarity index 100%
rename from src/androidTest/java/tests/integration/sets/FlagSetsPollingTest.java
rename to main/src/androidTest/java/tests/integration/sets/FlagSetsPollingTest.java
diff --git a/src/androidTest/java/tests/integration/sets/FlagSetsStreamingTest.java b/main/src/androidTest/java/tests/integration/sets/FlagSetsStreamingTest.java
similarity index 100%
rename from src/androidTest/java/tests/integration/sets/FlagSetsStreamingTest.java
rename to main/src/androidTest/java/tests/integration/sets/FlagSetsStreamingTest.java
diff --git a/src/androidTest/java/tests/integration/shared/BaseSharedClientsTest.java b/main/src/androidTest/java/tests/integration/shared/BaseSharedClientsTest.java
similarity index 100%
rename from src/androidTest/java/tests/integration/shared/BaseSharedClientsTest.java
rename to main/src/androidTest/java/tests/integration/shared/BaseSharedClientsTest.java
diff --git a/src/androidTest/java/tests/integration/shared/InterdependentSplitsTest.java b/main/src/androidTest/java/tests/integration/shared/InterdependentSplitsTest.java
similarity index 100%
rename from src/androidTest/java/tests/integration/shared/InterdependentSplitsTest.java
rename to main/src/androidTest/java/tests/integration/shared/InterdependentSplitsTest.java
diff --git a/src/androidTest/java/tests/integration/shared/MySegmentsBeforeSplitsTest.java b/main/src/androidTest/java/tests/integration/shared/MySegmentsBeforeSplitsTest.java
similarity index 100%
rename from src/androidTest/java/tests/integration/shared/MySegmentsBeforeSplitsTest.java
rename to main/src/androidTest/java/tests/integration/shared/MySegmentsBeforeSplitsTest.java
diff --git a/src/androidTest/java/tests/integration/shared/SharedClientsIntegrationTest.java b/main/src/androidTest/java/tests/integration/shared/SharedClientsIntegrationTest.java
similarity index 100%
rename from src/androidTest/java/tests/integration/shared/SharedClientsIntegrationTest.java
rename to main/src/androidTest/java/tests/integration/shared/SharedClientsIntegrationTest.java
diff --git a/src/androidTest/java/tests/integration/shared/TestingData.java b/main/src/androidTest/java/tests/integration/shared/TestingData.java
similarity index 100%
rename from src/androidTest/java/tests/integration/shared/TestingData.java
rename to main/src/androidTest/java/tests/integration/shared/TestingData.java
diff --git a/src/androidTest/java/tests/integration/shared/TestingHelper.java b/main/src/androidTest/java/tests/integration/shared/TestingHelper.java
similarity index 100%
rename from src/androidTest/java/tests/integration/shared/TestingHelper.java
rename to main/src/androidTest/java/tests/integration/shared/TestingHelper.java
diff --git a/src/androidTest/java/tests/integration/streaming/AblyErrorBaseTest.java b/main/src/androidTest/java/tests/integration/streaming/AblyErrorBaseTest.java
similarity index 100%
rename from src/androidTest/java/tests/integration/streaming/AblyErrorBaseTest.java
rename to main/src/androidTest/java/tests/integration/streaming/AblyErrorBaseTest.java
diff --git a/src/androidTest/java/tests/integration/streaming/AblyErrorTest.java b/main/src/androidTest/java/tests/integration/streaming/AblyErrorTest.java
similarity index 100%
rename from src/androidTest/java/tests/integration/streaming/AblyErrorTest.java
rename to main/src/androidTest/java/tests/integration/streaming/AblyErrorTest.java
diff --git a/src/androidTest/java/tests/integration/streaming/CleanUpDatabaseTest.java b/main/src/androidTest/java/tests/integration/streaming/CleanUpDatabaseTest.java
similarity index 100%
rename from src/androidTest/java/tests/integration/streaming/CleanUpDatabaseTest.java
rename to main/src/androidTest/java/tests/integration/streaming/CleanUpDatabaseTest.java
diff --git a/src/androidTest/java/tests/integration/streaming/ControlTest.java b/main/src/androidTest/java/tests/integration/streaming/ControlTest.java
similarity index 100%
rename from src/androidTest/java/tests/integration/streaming/ControlTest.java
rename to main/src/androidTest/java/tests/integration/streaming/ControlTest.java
diff --git a/src/androidTest/java/tests/integration/streaming/ImpressionsCountTest.java b/main/src/androidTest/java/tests/integration/streaming/ImpressionsCountTest.java
similarity index 100%
rename from src/androidTest/java/tests/integration/streaming/ImpressionsCountTest.java
rename to main/src/androidTest/java/tests/integration/streaming/ImpressionsCountTest.java
diff --git a/src/androidTest/java/tests/integration/streaming/MySegmentsChangeV2MultiClientTest.java b/main/src/androidTest/java/tests/integration/streaming/MySegmentsChangeV2MultiClientTest.java
similarity index 100%
rename from src/androidTest/java/tests/integration/streaming/MySegmentsChangeV2MultiClientTest.java
rename to main/src/androidTest/java/tests/integration/streaming/MySegmentsChangeV2MultiClientTest.java
diff --git a/src/androidTest/java/tests/integration/streaming/MySegmentsChangeV2Test.java b/main/src/androidTest/java/tests/integration/streaming/MySegmentsChangeV2Test.java
similarity index 100%
rename from src/androidTest/java/tests/integration/streaming/MySegmentsChangeV2Test.java
rename to main/src/androidTest/java/tests/integration/streaming/MySegmentsChangeV2Test.java
diff --git a/src/androidTest/java/tests/integration/streaming/MySegmentsSyncProcessTest.java b/main/src/androidTest/java/tests/integration/streaming/MySegmentsSyncProcessTest.java
similarity index 100%
rename from src/androidTest/java/tests/integration/streaming/MySegmentsSyncProcessTest.java
rename to main/src/androidTest/java/tests/integration/streaming/MySegmentsSyncProcessTest.java
diff --git a/src/androidTest/java/tests/integration/streaming/OccupancyBaseTest.java b/main/src/androidTest/java/tests/integration/streaming/OccupancyBaseTest.java
similarity index 100%
rename from src/androidTest/java/tests/integration/streaming/OccupancyBaseTest.java
rename to main/src/androidTest/java/tests/integration/streaming/OccupancyBaseTest.java
diff --git a/src/androidTest/java/tests/integration/streaming/OccupancyTest.java b/main/src/androidTest/java/tests/integration/streaming/OccupancyTest.java
similarity index 100%
rename from src/androidTest/java/tests/integration/streaming/OccupancyTest.java
rename to main/src/androidTest/java/tests/integration/streaming/OccupancyTest.java
diff --git a/src/androidTest/java/tests/integration/streaming/SdkUpdateStreamingTest.java b/main/src/androidTest/java/tests/integration/streaming/SdkUpdateStreamingTest.java
similarity index 100%
rename from src/androidTest/java/tests/integration/streaming/SdkUpdateStreamingTest.java
rename to main/src/androidTest/java/tests/integration/streaming/SdkUpdateStreamingTest.java
diff --git a/src/androidTest/java/tests/integration/streaming/SplitChangeNotificationIntegrationTest.java b/main/src/androidTest/java/tests/integration/streaming/SplitChangeNotificationIntegrationTest.java
similarity index 100%
rename from src/androidTest/java/tests/integration/streaming/SplitChangeNotificationIntegrationTest.java
rename to main/src/androidTest/java/tests/integration/streaming/SplitChangeNotificationIntegrationTest.java
diff --git a/src/androidTest/java/tests/integration/streaming/SplitsKillProcessTest.java b/main/src/androidTest/java/tests/integration/streaming/SplitsKillProcessTest.java
similarity index 100%
rename from src/androidTest/java/tests/integration/streaming/SplitsKillProcessTest.java
rename to main/src/androidTest/java/tests/integration/streaming/SplitsKillProcessTest.java
diff --git a/src/androidTest/java/tests/integration/streaming/SplitsSyncProcessTest.java b/main/src/androidTest/java/tests/integration/streaming/SplitsSyncProcessTest.java
similarity index 100%
rename from src/androidTest/java/tests/integration/streaming/SplitsSyncProcessTest.java
rename to main/src/androidTest/java/tests/integration/streaming/SplitsSyncProcessTest.java
diff --git a/src/androidTest/java/tests/integration/streaming/SseAuthFail4xxTest.java b/main/src/androidTest/java/tests/integration/streaming/SseAuthFail4xxTest.java
similarity index 100%
rename from src/androidTest/java/tests/integration/streaming/SseAuthFail4xxTest.java
rename to main/src/androidTest/java/tests/integration/streaming/SseAuthFail4xxTest.java
diff --git a/src/androidTest/java/tests/integration/streaming/SseAuthFail5xxTest.java b/main/src/androidTest/java/tests/integration/streaming/SseAuthFail5xxTest.java
similarity index 100%
rename from src/androidTest/java/tests/integration/streaming/SseAuthFail5xxTest.java
rename to main/src/androidTest/java/tests/integration/streaming/SseAuthFail5xxTest.java
diff --git a/src/androidTest/java/tests/integration/streaming/SseConnectionExpiredTokenTest.java b/main/src/androidTest/java/tests/integration/streaming/SseConnectionExpiredTokenTest.java
similarity index 100%
rename from src/androidTest/java/tests/integration/streaming/SseConnectionExpiredTokenTest.java
rename to main/src/androidTest/java/tests/integration/streaming/SseConnectionExpiredTokenTest.java
diff --git a/src/androidTest/java/tests/integration/streaming/SseConnectionFail5xxTest.java b/main/src/androidTest/java/tests/integration/streaming/SseConnectionFail5xxTest.java
similarity index 100%
rename from src/androidTest/java/tests/integration/streaming/SseConnectionFail5xxTest.java
rename to main/src/androidTest/java/tests/integration/streaming/SseConnectionFail5xxTest.java
diff --git a/src/androidTest/java/tests/integration/streaming/StreamingDisabledInConfigTest.java b/main/src/androidTest/java/tests/integration/streaming/StreamingDisabledInConfigTest.java
similarity index 100%
rename from src/androidTest/java/tests/integration/streaming/StreamingDisabledInConfigTest.java
rename to main/src/androidTest/java/tests/integration/streaming/StreamingDisabledInConfigTest.java
diff --git a/src/androidTest/java/tests/integration/streaming/StreamingDisabledTest.java b/main/src/androidTest/java/tests/integration/streaming/StreamingDisabledTest.java
similarity index 100%
rename from src/androidTest/java/tests/integration/streaming/StreamingDisabledTest.java
rename to main/src/androidTest/java/tests/integration/streaming/StreamingDisabledTest.java
diff --git a/src/androidTest/java/tests/integration/streaming/StreamingInitializationTest.java b/main/src/androidTest/java/tests/integration/streaming/StreamingInitializationTest.java
similarity index 100%
rename from src/androidTest/java/tests/integration/streaming/StreamingInitializationTest.java
rename to main/src/androidTest/java/tests/integration/streaming/StreamingInitializationTest.java
diff --git a/src/androidTest/java/tests/integration/streaming/SyncGuardianIntegrationTest.java b/main/src/androidTest/java/tests/integration/streaming/SyncGuardianIntegrationTest.java
similarity index 100%
rename from src/androidTest/java/tests/integration/streaming/SyncGuardianIntegrationTest.java
rename to main/src/androidTest/java/tests/integration/streaming/SyncGuardianIntegrationTest.java
diff --git a/src/androidTest/java/tests/integration/telemetry/TelemetryIntegrationTest.java b/main/src/androidTest/java/tests/integration/telemetry/TelemetryIntegrationTest.java
similarity index 100%
rename from src/androidTest/java/tests/integration/telemetry/TelemetryIntegrationTest.java
rename to main/src/androidTest/java/tests/integration/telemetry/TelemetryIntegrationTest.java
diff --git a/src/androidTest/java/tests/integration/telemetry/TelemetryOccupancyTest.java b/main/src/androidTest/java/tests/integration/telemetry/TelemetryOccupancyTest.java
similarity index 100%
rename from src/androidTest/java/tests/integration/telemetry/TelemetryOccupancyTest.java
rename to main/src/androidTest/java/tests/integration/telemetry/TelemetryOccupancyTest.java
diff --git a/src/androidTest/java/tests/integration/telemetry/TelemetryStreamingErrorTest.java b/main/src/androidTest/java/tests/integration/telemetry/TelemetryStreamingErrorTest.java
similarity index 100%
rename from src/androidTest/java/tests/integration/telemetry/TelemetryStreamingErrorTest.java
rename to main/src/androidTest/java/tests/integration/telemetry/TelemetryStreamingErrorTest.java
diff --git a/src/androidTest/java/tests/integration/toggle/ImpressionsToggleTest.java b/main/src/androidTest/java/tests/integration/toggle/ImpressionsToggleTest.java
similarity index 100%
rename from src/androidTest/java/tests/integration/toggle/ImpressionsToggleTest.java
rename to main/src/androidTest/java/tests/integration/toggle/ImpressionsToggleTest.java
diff --git a/src/androidTest/java/tests/integration/userconsent/UserConsentModeDebugTest.kt b/main/src/androidTest/java/tests/integration/userconsent/UserConsentModeDebugTest.kt
similarity index 100%
rename from src/androidTest/java/tests/integration/userconsent/UserConsentModeDebugTest.kt
rename to main/src/androidTest/java/tests/integration/userconsent/UserConsentModeDebugTest.kt
diff --git a/src/androidTest/java/tests/integration/userconsent/UserConsentModeNoneTest.kt b/main/src/androidTest/java/tests/integration/userconsent/UserConsentModeNoneTest.kt
similarity index 100%
rename from src/androidTest/java/tests/integration/userconsent/UserConsentModeNoneTest.kt
rename to main/src/androidTest/java/tests/integration/userconsent/UserConsentModeNoneTest.kt
diff --git a/src/androidTest/java/tests/integration/userconsent/UserConsentModeOptimizedTest.kt b/main/src/androidTest/java/tests/integration/userconsent/UserConsentModeOptimizedTest.kt
similarity index 100%
rename from src/androidTest/java/tests/integration/userconsent/UserConsentModeOptimizedTest.kt
rename to main/src/androidTest/java/tests/integration/userconsent/UserConsentModeOptimizedTest.kt
diff --git a/src/androidTest/java/tests/localhost/LocalhostPropertiesFileParserTest.java b/main/src/androidTest/java/tests/localhost/LocalhostPropertiesFileParserTest.java
similarity index 100%
rename from src/androidTest/java/tests/localhost/LocalhostPropertiesFileParserTest.java
rename to main/src/androidTest/java/tests/localhost/LocalhostPropertiesFileParserTest.java
diff --git a/src/androidTest/java/tests/localhost/LocalhostTest.java b/main/src/androidTest/java/tests/localhost/LocalhostTest.java
similarity index 100%
rename from src/androidTest/java/tests/localhost/LocalhostTest.java
rename to main/src/androidTest/java/tests/localhost/LocalhostTest.java
diff --git a/src/androidTest/java/tests/service/CompressionTest.java b/main/src/androidTest/java/tests/service/CompressionTest.java
similarity index 99%
rename from src/androidTest/java/tests/service/CompressionTest.java
rename to main/src/androidTest/java/tests/service/CompressionTest.java
index 6d1bd87fb..1d5dbd15c 100644
--- a/src/androidTest/java/tests/service/CompressionTest.java
+++ b/main/src/androidTest/java/tests/service/CompressionTest.java
@@ -126,5 +126,3 @@ private List loadFileContent() {
return Arrays.asList(content.split("\n"));
}
}
-
-
diff --git a/src/androidTest/java/tests/service/EventsManagerTest.java b/main/src/androidTest/java/tests/service/EventsManagerTest.java
similarity index 100%
rename from src/androidTest/java/tests/service/EventsManagerTest.java
rename to main/src/androidTest/java/tests/service/EventsManagerTest.java
diff --git a/src/androidTest/java/tests/service/EventsRequestTest.java b/main/src/androidTest/java/tests/service/EventsRequestTest.java
similarity index 100%
rename from src/androidTest/java/tests/service/EventsRequestTest.java
rename to main/src/androidTest/java/tests/service/EventsRequestTest.java
diff --git a/src/androidTest/java/tests/service/ImpressionsRequestTest.java b/main/src/androidTest/java/tests/service/ImpressionsRequestTest.java
similarity index 100%
rename from src/androidTest/java/tests/service/ImpressionsRequestTest.java
rename to main/src/androidTest/java/tests/service/ImpressionsRequestTest.java
diff --git a/src/androidTest/java/tests/service/MySegmentV2PayloadDecoderTest.java b/main/src/androidTest/java/tests/service/MySegmentV2PayloadDecoderTest.java
similarity index 100%
rename from src/androidTest/java/tests/service/MySegmentV2PayloadDecoderTest.java
rename to main/src/androidTest/java/tests/service/MySegmentV2PayloadDecoderTest.java
diff --git a/src/androidTest/java/tests/service/SdkUpdatePollingTest.java b/main/src/androidTest/java/tests/service/SdkUpdatePollingTest.java
similarity index 99%
rename from src/androidTest/java/tests/service/SdkUpdatePollingTest.java
rename to main/src/androidTest/java/tests/service/SdkUpdatePollingTest.java
index e04afdbe4..178d2da99 100644
--- a/src/androidTest/java/tests/service/SdkUpdatePollingTest.java
+++ b/main/src/androidTest/java/tests/service/SdkUpdatePollingTest.java
@@ -382,4 +382,4 @@ private Split parseEntity(SplitEntity entity) {
return Json.fromJson(entity.getBody(), Split.class);
}
-}
\ No newline at end of file
+}
diff --git a/src/androidTest/java/tests/service/SseJwtTokenParserTest.java b/main/src/androidTest/java/tests/service/SseJwtTokenParserTest.java
similarity index 100%
rename from src/androidTest/java/tests/service/SseJwtTokenParserTest.java
rename to main/src/androidTest/java/tests/service/SseJwtTokenParserTest.java
diff --git a/src/androidTest/java/tests/service/UniqueKeysIntegrationTest.java b/main/src/androidTest/java/tests/service/UniqueKeysIntegrationTest.java
similarity index 100%
rename from src/androidTest/java/tests/service/UniqueKeysIntegrationTest.java
rename to main/src/androidTest/java/tests/service/UniqueKeysIntegrationTest.java
diff --git a/src/androidTest/java/tests/service/UrlSanitizerTest.java b/main/src/androidTest/java/tests/service/UrlSanitizerTest.java
similarity index 100%
rename from src/androidTest/java/tests/service/UrlSanitizerTest.java
rename to main/src/androidTest/java/tests/service/UrlSanitizerTest.java
diff --git a/src/androidTest/java/tests/storage/GeneralInfoStorageTest.java b/main/src/androidTest/java/tests/storage/GeneralInfoStorageTest.java
similarity index 100%
rename from src/androidTest/java/tests/storage/GeneralInfoStorageTest.java
rename to main/src/androidTest/java/tests/storage/GeneralInfoStorageTest.java
diff --git a/src/androidTest/java/tests/storage/LoadMySegmentsTaskTest.java b/main/src/androidTest/java/tests/storage/LoadMySegmentsTaskTest.java
similarity index 100%
rename from src/androidTest/java/tests/storage/LoadMySegmentsTaskTest.java
rename to main/src/androidTest/java/tests/storage/LoadMySegmentsTaskTest.java
diff --git a/src/androidTest/java/tests/storage/LoadSplitTaskTest.java b/main/src/androidTest/java/tests/storage/LoadSplitTaskTest.java
similarity index 100%
rename from src/androidTest/java/tests/storage/LoadSplitTaskTest.java
rename to main/src/androidTest/java/tests/storage/LoadSplitTaskTest.java
diff --git a/src/androidTest/java/tests/storage/MySegmentsStorageTest.java b/main/src/androidTest/java/tests/storage/MySegmentsStorageTest.java
similarity index 100%
rename from src/androidTest/java/tests/storage/MySegmentsStorageTest.java
rename to main/src/androidTest/java/tests/storage/MySegmentsStorageTest.java
diff --git a/src/androidTest/java/tests/storage/PersistentEventStorageTest.java b/main/src/androidTest/java/tests/storage/PersistentEventStorageTest.java
similarity index 100%
rename from src/androidTest/java/tests/storage/PersistentEventStorageTest.java
rename to main/src/androidTest/java/tests/storage/PersistentEventStorageTest.java
diff --git a/src/androidTest/java/tests/storage/PersistentImpressionCountStorageTest.java b/main/src/androidTest/java/tests/storage/PersistentImpressionCountStorageTest.java
similarity index 100%
rename from src/androidTest/java/tests/storage/PersistentImpressionCountStorageTest.java
rename to main/src/androidTest/java/tests/storage/PersistentImpressionCountStorageTest.java
diff --git a/src/androidTest/java/tests/storage/PersistentImpressionStorageTest.java b/main/src/androidTest/java/tests/storage/PersistentImpressionStorageTest.java
similarity index 100%
rename from src/androidTest/java/tests/storage/PersistentImpressionStorageTest.java
rename to main/src/androidTest/java/tests/storage/PersistentImpressionStorageTest.java
diff --git a/src/androidTest/java/tests/storage/PersistentMyLargeSegmentStorageTest.java b/main/src/androidTest/java/tests/storage/PersistentMyLargeSegmentStorageTest.java
similarity index 100%
rename from src/androidTest/java/tests/storage/PersistentMyLargeSegmentStorageTest.java
rename to main/src/androidTest/java/tests/storage/PersistentMyLargeSegmentStorageTest.java
diff --git a/src/androidTest/java/tests/storage/PersistentMySegmentStorageTest.java b/main/src/androidTest/java/tests/storage/PersistentMySegmentStorageTest.java
similarity index 100%
rename from src/androidTest/java/tests/storage/PersistentMySegmentStorageTest.java
rename to main/src/androidTest/java/tests/storage/PersistentMySegmentStorageTest.java
diff --git a/src/androidTest/java/tests/storage/PersistentSplitsStorageTest.java b/main/src/androidTest/java/tests/storage/PersistentSplitsStorageTest.java
similarity index 100%
rename from src/androidTest/java/tests/storage/PersistentSplitsStorageTest.java
rename to main/src/androidTest/java/tests/storage/PersistentSplitsStorageTest.java
diff --git a/src/androidTest/java/tests/storage/SplitsStorageTest.java b/main/src/androidTest/java/tests/storage/SplitsStorageTest.java
similarity index 100%
rename from src/androidTest/java/tests/storage/SplitsStorageTest.java
rename to main/src/androidTest/java/tests/storage/SplitsStorageTest.java
diff --git a/src/androidTest/java/tests/storage/cipher/CBCCipherTest.kt b/main/src/androidTest/java/tests/storage/cipher/CBCCipherTest.kt
similarity index 100%
rename from src/androidTest/java/tests/storage/cipher/CBCCipherTest.kt
rename to main/src/androidTest/java/tests/storage/cipher/CBCCipherTest.kt
diff --git a/src/androidTest/java/tests/storage/cipher/KeyManagerTest.java b/main/src/androidTest/java/tests/storage/cipher/KeyManagerTest.java
similarity index 100%
rename from src/androidTest/java/tests/storage/cipher/KeyManagerTest.java
rename to main/src/androidTest/java/tests/storage/cipher/KeyManagerTest.java
diff --git a/src/androidTest/java/tests/storage/cipher/provider/LegacyKeyProviderTest.java b/main/src/androidTest/java/tests/storage/cipher/provider/LegacyKeyProviderTest.java
similarity index 100%
rename from src/androidTest/java/tests/storage/cipher/provider/LegacyKeyProviderTest.java
rename to main/src/androidTest/java/tests/storage/cipher/provider/LegacyKeyProviderTest.java
diff --git a/src/androidTest/java/tests/storage/cipher/provider/SecureKeyStorageProviderTest.java b/main/src/androidTest/java/tests/storage/cipher/provider/SecureKeyStorageProviderTest.java
similarity index 100%
rename from src/androidTest/java/tests/storage/cipher/provider/SecureKeyStorageProviderTest.java
rename to main/src/androidTest/java/tests/storage/cipher/provider/SecureKeyStorageProviderTest.java
diff --git a/src/androidTest/java/tests/workmanager/WMWorkersSetupTest.java b/main/src/androidTest/java/tests/workmanager/WMWorkersSetupTest.java
similarity index 100%
rename from src/androidTest/java/tests/workmanager/WMWorkersSetupTest.java
rename to main/src/androidTest/java/tests/workmanager/WMWorkersSetupTest.java
diff --git a/src/androidTest/java/tests/workmanager/WorkManagerWrapperTest.java b/main/src/androidTest/java/tests/workmanager/WorkManagerWrapperTest.java
similarity index 100%
rename from src/androidTest/java/tests/workmanager/WorkManagerWrapperTest.java
rename to main/src/androidTest/java/tests/workmanager/WorkManagerWrapperTest.java
diff --git a/main/src/main/AndroidManifest.xml b/main/src/main/AndroidManifest.xml
new file mode 100644
index 000000000..9a40236b9
--- /dev/null
+++ b/main/src/main/AndroidManifest.xml
@@ -0,0 +1,3 @@
+
+
+
diff --git a/src/main/java/io/split/android/client/AlwaysReturnControlSplitClient.java b/main/src/main/java/io/split/android/client/AlwaysReturnControlSplitClient.java
similarity index 100%
rename from src/main/java/io/split/android/client/AlwaysReturnControlSplitClient.java
rename to main/src/main/java/io/split/android/client/AlwaysReturnControlSplitClient.java
diff --git a/src/main/java/io/split/android/client/Destroyer.java b/main/src/main/java/io/split/android/client/Destroyer.java
similarity index 100%
rename from src/main/java/io/split/android/client/Destroyer.java
rename to main/src/main/java/io/split/android/client/Destroyer.java
diff --git a/src/main/java/io/split/android/client/EvaluationOptions.java b/main/src/main/java/io/split/android/client/EvaluationOptions.java
similarity index 100%
rename from src/main/java/io/split/android/client/EvaluationOptions.java
rename to main/src/main/java/io/split/android/client/EvaluationOptions.java
diff --git a/src/main/java/io/split/android/client/EvaluationResult.java b/main/src/main/java/io/split/android/client/EvaluationResult.java
similarity index 100%
rename from src/main/java/io/split/android/client/EvaluationResult.java
rename to main/src/main/java/io/split/android/client/EvaluationResult.java
diff --git a/src/main/java/io/split/android/client/Evaluator.java b/main/src/main/java/io/split/android/client/Evaluator.java
similarity index 100%
rename from src/main/java/io/split/android/client/Evaluator.java
rename to main/src/main/java/io/split/android/client/Evaluator.java
diff --git a/src/main/java/io/split/android/client/EvaluatorImpl.java b/main/src/main/java/io/split/android/client/EvaluatorImpl.java
similarity index 100%
rename from src/main/java/io/split/android/client/EvaluatorImpl.java
rename to main/src/main/java/io/split/android/client/EvaluatorImpl.java
diff --git a/src/main/java/io/split/android/client/EventsTracker.java b/main/src/main/java/io/split/android/client/EventsTracker.java
similarity index 100%
rename from src/main/java/io/split/android/client/EventsTracker.java
rename to main/src/main/java/io/split/android/client/EventsTracker.java
diff --git a/src/main/java/io/split/android/client/EventsTrackerImpl.java b/main/src/main/java/io/split/android/client/EventsTrackerImpl.java
similarity index 100%
rename from src/main/java/io/split/android/client/EventsTrackerImpl.java
rename to main/src/main/java/io/split/android/client/EventsTrackerImpl.java
diff --git a/src/main/java/io/split/android/client/FeatureFlagFilter.java b/main/src/main/java/io/split/android/client/FeatureFlagFilter.java
similarity index 100%
rename from src/main/java/io/split/android/client/FeatureFlagFilter.java
rename to main/src/main/java/io/split/android/client/FeatureFlagFilter.java
diff --git a/src/main/java/io/split/android/client/FilterBuilder.java b/main/src/main/java/io/split/android/client/FilterBuilder.java
similarity index 100%
rename from src/main/java/io/split/android/client/FilterBuilder.java
rename to main/src/main/java/io/split/android/client/FilterBuilder.java
diff --git a/src/main/java/io/split/android/client/FilterGrouper.java b/main/src/main/java/io/split/android/client/FilterGrouper.java
similarity index 100%
rename from src/main/java/io/split/android/client/FilterGrouper.java
rename to main/src/main/java/io/split/android/client/FilterGrouper.java
diff --git a/src/main/java/io/split/android/client/FlagSetsFilter.java b/main/src/main/java/io/split/android/client/FlagSetsFilter.java
similarity index 100%
rename from src/main/java/io/split/android/client/FlagSetsFilter.java
rename to main/src/main/java/io/split/android/client/FlagSetsFilter.java
diff --git a/src/main/java/io/split/android/client/FlagSetsFilterImpl.java b/main/src/main/java/io/split/android/client/FlagSetsFilterImpl.java
similarity index 100%
rename from src/main/java/io/split/android/client/FlagSetsFilterImpl.java
rename to main/src/main/java/io/split/android/client/FlagSetsFilterImpl.java
diff --git a/src/main/java/io/split/android/client/ProcessedEventProperties.java b/main/src/main/java/io/split/android/client/ProcessedEventProperties.java
similarity index 100%
rename from src/main/java/io/split/android/client/ProcessedEventProperties.java
rename to main/src/main/java/io/split/android/client/ProcessedEventProperties.java
diff --git a/src/main/java/io/split/android/client/PropertyValidatorImpl.java b/main/src/main/java/io/split/android/client/PropertyValidatorImpl.java
similarity index 100%
rename from src/main/java/io/split/android/client/PropertyValidatorImpl.java
rename to main/src/main/java/io/split/android/client/PropertyValidatorImpl.java
diff --git a/src/main/java/io/split/android/client/RetryBackoffCounterTimerFactory.java b/main/src/main/java/io/split/android/client/RetryBackoffCounterTimerFactory.java
similarity index 100%
rename from src/main/java/io/split/android/client/RetryBackoffCounterTimerFactory.java
rename to main/src/main/java/io/split/android/client/RetryBackoffCounterTimerFactory.java
diff --git a/src/main/java/io/split/android/client/RolloutCacheConfiguration.java b/main/src/main/java/io/split/android/client/RolloutCacheConfiguration.java
similarity index 100%
rename from src/main/java/io/split/android/client/RolloutCacheConfiguration.java
rename to main/src/main/java/io/split/android/client/RolloutCacheConfiguration.java
diff --git a/src/main/java/io/split/android/client/ServiceEndpoints.java b/main/src/main/java/io/split/android/client/ServiceEndpoints.java
similarity index 100%
rename from src/main/java/io/split/android/client/ServiceEndpoints.java
rename to main/src/main/java/io/split/android/client/ServiceEndpoints.java
diff --git a/src/main/java/io/split/android/client/SplitClient.java b/main/src/main/java/io/split/android/client/SplitClient.java
similarity index 100%
rename from src/main/java/io/split/android/client/SplitClient.java
rename to main/src/main/java/io/split/android/client/SplitClient.java
diff --git a/src/main/java/io/split/android/client/SplitClientConfig.java b/main/src/main/java/io/split/android/client/SplitClientConfig.java
similarity index 99%
rename from src/main/java/io/split/android/client/SplitClientConfig.java
rename to main/src/main/java/io/split/android/client/SplitClientConfig.java
index 3660ff761..0d5b0ecc8 100644
--- a/src/main/java/io/split/android/client/SplitClientConfig.java
+++ b/main/src/main/java/io/split/android/client/SplitClientConfig.java
@@ -13,7 +13,7 @@
import javax.net.ssl.SSLSocketFactory;
import javax.net.ssl.X509TrustManager;
-import io.split.android.android_client.BuildConfig;
+import io.split.android.client.main.BuildConfig;
import io.split.android.client.impressions.ImpressionListener;
import io.split.android.client.network.CertificatePinningConfiguration;
import io.split.android.client.network.DevelopmentSslConfig;
diff --git a/src/main/java/io/split/android/client/SplitClientFactory.java b/main/src/main/java/io/split/android/client/SplitClientFactory.java
similarity index 100%
rename from src/main/java/io/split/android/client/SplitClientFactory.java
rename to main/src/main/java/io/split/android/client/SplitClientFactory.java
diff --git a/src/main/java/io/split/android/client/SplitClientFactoryImpl.java b/main/src/main/java/io/split/android/client/SplitClientFactoryImpl.java
similarity index 100%
rename from src/main/java/io/split/android/client/SplitClientFactoryImpl.java
rename to main/src/main/java/io/split/android/client/SplitClientFactoryImpl.java
diff --git a/src/main/java/io/split/android/client/SplitClientImpl.java b/main/src/main/java/io/split/android/client/SplitClientImpl.java
similarity index 100%
rename from src/main/java/io/split/android/client/SplitClientImpl.java
rename to main/src/main/java/io/split/android/client/SplitClientImpl.java
diff --git a/src/main/java/io/split/android/client/SplitFactory.java b/main/src/main/java/io/split/android/client/SplitFactory.java
similarity index 100%
rename from src/main/java/io/split/android/client/SplitFactory.java
rename to main/src/main/java/io/split/android/client/SplitFactory.java
diff --git a/src/main/java/io/split/android/client/SplitFactoryBuilder.java b/main/src/main/java/io/split/android/client/SplitFactoryBuilder.java
similarity index 100%
rename from src/main/java/io/split/android/client/SplitFactoryBuilder.java
rename to main/src/main/java/io/split/android/client/SplitFactoryBuilder.java
diff --git a/src/main/java/io/split/android/client/SplitFactoryHelper.java b/main/src/main/java/io/split/android/client/SplitFactoryHelper.java
similarity index 100%
rename from src/main/java/io/split/android/client/SplitFactoryHelper.java
rename to main/src/main/java/io/split/android/client/SplitFactoryHelper.java
diff --git a/src/main/java/io/split/android/client/SplitFactoryImpl.java b/main/src/main/java/io/split/android/client/SplitFactoryImpl.java
similarity index 99%
rename from src/main/java/io/split/android/client/SplitFactoryImpl.java
rename to main/src/main/java/io/split/android/client/SplitFactoryImpl.java
index c623119bb..d531fde38 100644
--- a/src/main/java/io/split/android/client/SplitFactoryImpl.java
+++ b/main/src/main/java/io/split/android/client/SplitFactoryImpl.java
@@ -20,7 +20,7 @@
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.locks.ReentrantLock;
-import io.split.android.android_client.BuildConfig;
+import io.split.android.client.main.BuildConfig;
import io.split.android.client.api.Key;
import io.split.android.client.common.CompressionUtilProvider;
import io.split.android.client.events.EventsManagerCoordinator;
diff --git a/src/main/java/io/split/android/client/SplitFilter.java b/main/src/main/java/io/split/android/client/SplitFilter.java
similarity index 100%
rename from src/main/java/io/split/android/client/SplitFilter.java
rename to main/src/main/java/io/split/android/client/SplitFilter.java
diff --git a/src/main/java/io/split/android/client/SplitManager.java b/main/src/main/java/io/split/android/client/SplitManager.java
similarity index 100%
rename from src/main/java/io/split/android/client/SplitManager.java
rename to main/src/main/java/io/split/android/client/SplitManager.java
diff --git a/src/main/java/io/split/android/client/SplitManagerImpl.java b/main/src/main/java/io/split/android/client/SplitManagerImpl.java
similarity index 100%
rename from src/main/java/io/split/android/client/SplitManagerImpl.java
rename to main/src/main/java/io/split/android/client/SplitManagerImpl.java
diff --git a/src/main/java/io/split/android/client/SplitResult.java b/main/src/main/java/io/split/android/client/SplitResult.java
similarity index 100%
rename from src/main/java/io/split/android/client/SplitResult.java
rename to main/src/main/java/io/split/android/client/SplitResult.java
diff --git a/src/main/java/io/split/android/client/SyncConfig.java b/main/src/main/java/io/split/android/client/SyncConfig.java
similarity index 100%
rename from src/main/java/io/split/android/client/SyncConfig.java
rename to main/src/main/java/io/split/android/client/SyncConfig.java
diff --git a/src/main/java/io/split/android/client/TestingConfig.java b/main/src/main/java/io/split/android/client/TestingConfig.java
similarity index 92%
rename from src/main/java/io/split/android/client/TestingConfig.java
rename to main/src/main/java/io/split/android/client/TestingConfig.java
index 8bd45a607..359b5e9d0 100644
--- a/src/main/java/io/split/android/client/TestingConfig.java
+++ b/main/src/main/java/io/split/android/client/TestingConfig.java
@@ -1,6 +1,6 @@
package io.split.android.client;
-import io.split.android.android_client.BuildConfig;
+import io.split.android.client.main.BuildConfig;
import io.split.android.client.service.ServiceConstants;
public class TestingConfig {
diff --git a/src/main/java/io/split/android/client/TreatmentLabels.java b/main/src/main/java/io/split/android/client/TreatmentLabels.java
similarity index 100%
rename from src/main/java/io/split/android/client/TreatmentLabels.java
rename to main/src/main/java/io/split/android/client/TreatmentLabels.java
diff --git a/src/main/java/io/split/android/client/UserConsentManager.java b/main/src/main/java/io/split/android/client/UserConsentManager.java
similarity index 100%
rename from src/main/java/io/split/android/client/UserConsentManager.java
rename to main/src/main/java/io/split/android/client/UserConsentManager.java
diff --git a/src/main/java/io/split/android/client/UserConsentManagerImpl.java b/main/src/main/java/io/split/android/client/UserConsentManagerImpl.java
similarity index 100%
rename from src/main/java/io/split/android/client/UserConsentManagerImpl.java
rename to main/src/main/java/io/split/android/client/UserConsentManagerImpl.java
diff --git a/src/main/java/io/split/android/client/api/Key.java b/main/src/main/java/io/split/android/client/api/Key.java
similarity index 100%
rename from src/main/java/io/split/android/client/api/Key.java
rename to main/src/main/java/io/split/android/client/api/Key.java
diff --git a/src/main/java/io/split/android/client/api/SplitView.java b/main/src/main/java/io/split/android/client/api/SplitView.java
similarity index 100%
rename from src/main/java/io/split/android/client/api/SplitView.java
rename to main/src/main/java/io/split/android/client/api/SplitView.java
diff --git a/src/main/java/io/split/android/client/attributes/AttributesManager.java b/main/src/main/java/io/split/android/client/attributes/AttributesManager.java
similarity index 100%
rename from src/main/java/io/split/android/client/attributes/AttributesManager.java
rename to main/src/main/java/io/split/android/client/attributes/AttributesManager.java
diff --git a/src/main/java/io/split/android/client/attributes/AttributesManagerFactory.java b/main/src/main/java/io/split/android/client/attributes/AttributesManagerFactory.java
similarity index 100%
rename from src/main/java/io/split/android/client/attributes/AttributesManagerFactory.java
rename to main/src/main/java/io/split/android/client/attributes/AttributesManagerFactory.java
diff --git a/src/main/java/io/split/android/client/attributes/AttributesManagerFactoryImpl.java b/main/src/main/java/io/split/android/client/attributes/AttributesManagerFactoryImpl.java
similarity index 100%
rename from src/main/java/io/split/android/client/attributes/AttributesManagerFactoryImpl.java
rename to main/src/main/java/io/split/android/client/attributes/AttributesManagerFactoryImpl.java
diff --git a/src/main/java/io/split/android/client/attributes/AttributesManagerImpl.java b/main/src/main/java/io/split/android/client/attributes/AttributesManagerImpl.java
similarity index 100%
rename from src/main/java/io/split/android/client/attributes/AttributesManagerImpl.java
rename to main/src/main/java/io/split/android/client/attributes/AttributesManagerImpl.java
diff --git a/src/main/java/io/split/android/client/attributes/AttributesMerger.java b/main/src/main/java/io/split/android/client/attributes/AttributesMerger.java
similarity index 100%
rename from src/main/java/io/split/android/client/attributes/AttributesMerger.java
rename to main/src/main/java/io/split/android/client/attributes/AttributesMerger.java
diff --git a/src/main/java/io/split/android/client/attributes/AttributesMergerImpl.java b/main/src/main/java/io/split/android/client/attributes/AttributesMergerImpl.java
similarity index 100%
rename from src/main/java/io/split/android/client/attributes/AttributesMergerImpl.java
rename to main/src/main/java/io/split/android/client/attributes/AttributesMergerImpl.java
diff --git a/src/main/java/io/split/android/client/common/CompressionType.java b/main/src/main/java/io/split/android/client/common/CompressionType.java
similarity index 100%
rename from src/main/java/io/split/android/client/common/CompressionType.java
rename to main/src/main/java/io/split/android/client/common/CompressionType.java
diff --git a/src/main/java/io/split/android/client/common/CompressionUtilProvider.java b/main/src/main/java/io/split/android/client/common/CompressionUtilProvider.java
similarity index 100%
rename from src/main/java/io/split/android/client/common/CompressionUtilProvider.java
rename to main/src/main/java/io/split/android/client/common/CompressionUtilProvider.java
diff --git a/src/main/java/io/split/android/client/dtos/Algorithm.java b/main/src/main/java/io/split/android/client/dtos/Algorithm.java
similarity index 100%
rename from src/main/java/io/split/android/client/dtos/Algorithm.java
rename to main/src/main/java/io/split/android/client/dtos/Algorithm.java
diff --git a/src/main/java/io/split/android/client/dtos/AllSegmentsChange.java b/main/src/main/java/io/split/android/client/dtos/AllSegmentsChange.java
similarity index 100%
rename from src/main/java/io/split/android/client/dtos/AllSegmentsChange.java
rename to main/src/main/java/io/split/android/client/dtos/AllSegmentsChange.java
diff --git a/src/main/java/io/split/android/client/dtos/BetweenMatcherData.java b/main/src/main/java/io/split/android/client/dtos/BetweenMatcherData.java
similarity index 100%
rename from src/main/java/io/split/android/client/dtos/BetweenMatcherData.java
rename to main/src/main/java/io/split/android/client/dtos/BetweenMatcherData.java
diff --git a/src/main/java/io/split/android/client/dtos/BetweenStringMatcherData.java b/main/src/main/java/io/split/android/client/dtos/BetweenStringMatcherData.java
similarity index 100%
rename from src/main/java/io/split/android/client/dtos/BetweenStringMatcherData.java
rename to main/src/main/java/io/split/android/client/dtos/BetweenStringMatcherData.java
diff --git a/src/main/java/io/split/android/client/dtos/ChunkHeader.java b/main/src/main/java/io/split/android/client/dtos/ChunkHeader.java
similarity index 100%
rename from src/main/java/io/split/android/client/dtos/ChunkHeader.java
rename to main/src/main/java/io/split/android/client/dtos/ChunkHeader.java
diff --git a/src/main/java/io/split/android/client/dtos/Condition.java b/main/src/main/java/io/split/android/client/dtos/Condition.java
similarity index 100%
rename from src/main/java/io/split/android/client/dtos/Condition.java
rename to main/src/main/java/io/split/android/client/dtos/Condition.java
diff --git a/src/main/java/io/split/android/client/dtos/ConditionType.java b/main/src/main/java/io/split/android/client/dtos/ConditionType.java
similarity index 100%
rename from src/main/java/io/split/android/client/dtos/ConditionType.java
rename to main/src/main/java/io/split/android/client/dtos/ConditionType.java
diff --git a/src/main/java/io/split/android/client/dtos/Counter.java b/main/src/main/java/io/split/android/client/dtos/Counter.java
similarity index 100%
rename from src/main/java/io/split/android/client/dtos/Counter.java
rename to main/src/main/java/io/split/android/client/dtos/Counter.java
diff --git a/src/main/java/io/split/android/client/dtos/DataType.java b/main/src/main/java/io/split/android/client/dtos/DataType.java
similarity index 100%
rename from src/main/java/io/split/android/client/dtos/DataType.java
rename to main/src/main/java/io/split/android/client/dtos/DataType.java
diff --git a/src/main/java/io/split/android/client/dtos/DependencyMatcherData.java b/main/src/main/java/io/split/android/client/dtos/DependencyMatcherData.java
similarity index 100%
rename from src/main/java/io/split/android/client/dtos/DependencyMatcherData.java
rename to main/src/main/java/io/split/android/client/dtos/DependencyMatcherData.java
diff --git a/src/main/java/io/split/android/client/dtos/DeprecatedKeyImpression.java b/main/src/main/java/io/split/android/client/dtos/DeprecatedKeyImpression.java
similarity index 100%
rename from src/main/java/io/split/android/client/dtos/DeprecatedKeyImpression.java
rename to main/src/main/java/io/split/android/client/dtos/DeprecatedKeyImpression.java
diff --git a/src/main/java/io/split/android/client/dtos/Event.java b/main/src/main/java/io/split/android/client/dtos/Event.java
similarity index 100%
rename from src/main/java/io/split/android/client/dtos/Event.java
rename to main/src/main/java/io/split/android/client/dtos/Event.java
diff --git a/src/main/java/io/split/android/client/dtos/Excluded.java b/main/src/main/java/io/split/android/client/dtos/Excluded.java
similarity index 100%
rename from src/main/java/io/split/android/client/dtos/Excluded.java
rename to main/src/main/java/io/split/android/client/dtos/Excluded.java
diff --git a/src/main/java/io/split/android/client/dtos/ExcludedSegment.java b/main/src/main/java/io/split/android/client/dtos/ExcludedSegment.java
similarity index 100%
rename from src/main/java/io/split/android/client/dtos/ExcludedSegment.java
rename to main/src/main/java/io/split/android/client/dtos/ExcludedSegment.java
diff --git a/src/main/java/io/split/android/client/dtos/Helper.java b/main/src/main/java/io/split/android/client/dtos/Helper.java
similarity index 100%
rename from src/main/java/io/split/android/client/dtos/Helper.java
rename to main/src/main/java/io/split/android/client/dtos/Helper.java
diff --git a/src/main/java/io/split/android/client/dtos/HttpProxyDto.java b/main/src/main/java/io/split/android/client/dtos/HttpProxyDto.java
similarity index 100%
rename from src/main/java/io/split/android/client/dtos/HttpProxyDto.java
rename to main/src/main/java/io/split/android/client/dtos/HttpProxyDto.java
diff --git a/src/main/java/io/split/android/client/dtos/Identifiable.java b/main/src/main/java/io/split/android/client/dtos/Identifiable.java
similarity index 100%
rename from src/main/java/io/split/android/client/dtos/Identifiable.java
rename to main/src/main/java/io/split/android/client/dtos/Identifiable.java
diff --git a/src/main/java/io/split/android/client/dtos/KeyImpression.java b/main/src/main/java/io/split/android/client/dtos/KeyImpression.java
similarity index 100%
rename from src/main/java/io/split/android/client/dtos/KeyImpression.java
rename to main/src/main/java/io/split/android/client/dtos/KeyImpression.java
diff --git a/src/main/java/io/split/android/client/dtos/KeySelector.java b/main/src/main/java/io/split/android/client/dtos/KeySelector.java
similarity index 100%
rename from src/main/java/io/split/android/client/dtos/KeySelector.java
rename to main/src/main/java/io/split/android/client/dtos/KeySelector.java
diff --git a/src/main/java/io/split/android/client/dtos/Matcher.java b/main/src/main/java/io/split/android/client/dtos/Matcher.java
similarity index 100%
rename from src/main/java/io/split/android/client/dtos/Matcher.java
rename to main/src/main/java/io/split/android/client/dtos/Matcher.java
diff --git a/src/main/java/io/split/android/client/dtos/MatcherCombiner.java b/main/src/main/java/io/split/android/client/dtos/MatcherCombiner.java
similarity index 100%
rename from src/main/java/io/split/android/client/dtos/MatcherCombiner.java
rename to main/src/main/java/io/split/android/client/dtos/MatcherCombiner.java
diff --git a/src/main/java/io/split/android/client/dtos/MatcherGroup.java b/main/src/main/java/io/split/android/client/dtos/MatcherGroup.java
similarity index 100%
rename from src/main/java/io/split/android/client/dtos/MatcherGroup.java
rename to main/src/main/java/io/split/android/client/dtos/MatcherGroup.java
diff --git a/src/main/java/io/split/android/client/dtos/MatcherType.java b/main/src/main/java/io/split/android/client/dtos/MatcherType.java
similarity index 100%
rename from src/main/java/io/split/android/client/dtos/MatcherType.java
rename to main/src/main/java/io/split/android/client/dtos/MatcherType.java
diff --git a/src/main/java/io/split/android/client/dtos/Partition.java b/main/src/main/java/io/split/android/client/dtos/Partition.java
similarity index 100%
rename from src/main/java/io/split/android/client/dtos/Partition.java
rename to main/src/main/java/io/split/android/client/dtos/Partition.java
diff --git a/src/main/java/io/split/android/client/dtos/Prerequisite.java b/main/src/main/java/io/split/android/client/dtos/Prerequisite.java
similarity index 100%
rename from src/main/java/io/split/android/client/dtos/Prerequisite.java
rename to main/src/main/java/io/split/android/client/dtos/Prerequisite.java
diff --git a/src/main/java/io/split/android/client/dtos/RuleBasedSegment.java b/main/src/main/java/io/split/android/client/dtos/RuleBasedSegment.java
similarity index 100%
rename from src/main/java/io/split/android/client/dtos/RuleBasedSegment.java
rename to main/src/main/java/io/split/android/client/dtos/RuleBasedSegment.java
diff --git a/src/main/java/io/split/android/client/dtos/RuleBasedSegmentChange.java b/main/src/main/java/io/split/android/client/dtos/RuleBasedSegmentChange.java
similarity index 100%
rename from src/main/java/io/split/android/client/dtos/RuleBasedSegmentChange.java
rename to main/src/main/java/io/split/android/client/dtos/RuleBasedSegmentChange.java
diff --git a/src/main/java/io/split/android/client/dtos/Segment.java b/main/src/main/java/io/split/android/client/dtos/Segment.java
similarity index 100%
rename from src/main/java/io/split/android/client/dtos/Segment.java
rename to main/src/main/java/io/split/android/client/dtos/Segment.java
diff --git a/src/main/java/io/split/android/client/dtos/SegmentResponse.java b/main/src/main/java/io/split/android/client/dtos/SegmentResponse.java
similarity index 100%
rename from src/main/java/io/split/android/client/dtos/SegmentResponse.java
rename to main/src/main/java/io/split/android/client/dtos/SegmentResponse.java
diff --git a/src/main/java/io/split/android/client/dtos/SegmentsChange.java b/main/src/main/java/io/split/android/client/dtos/SegmentsChange.java
similarity index 100%
rename from src/main/java/io/split/android/client/dtos/SegmentsChange.java
rename to main/src/main/java/io/split/android/client/dtos/SegmentsChange.java
diff --git a/src/main/java/io/split/android/client/dtos/SerializableEvent.java b/main/src/main/java/io/split/android/client/dtos/SerializableEvent.java
similarity index 100%
rename from src/main/java/io/split/android/client/dtos/SerializableEvent.java
rename to main/src/main/java/io/split/android/client/dtos/SerializableEvent.java
diff --git a/src/main/java/io/split/android/client/dtos/Split.java b/main/src/main/java/io/split/android/client/dtos/Split.java
similarity index 100%
rename from src/main/java/io/split/android/client/dtos/Split.java
rename to main/src/main/java/io/split/android/client/dtos/Split.java
diff --git a/src/main/java/io/split/android/client/dtos/SplitChange.java b/main/src/main/java/io/split/android/client/dtos/SplitChange.java
similarity index 100%
rename from src/main/java/io/split/android/client/dtos/SplitChange.java
rename to main/src/main/java/io/split/android/client/dtos/SplitChange.java
diff --git a/src/main/java/io/split/android/client/dtos/Status.java b/main/src/main/java/io/split/android/client/dtos/Status.java
similarity index 100%
rename from src/main/java/io/split/android/client/dtos/Status.java
rename to main/src/main/java/io/split/android/client/dtos/Status.java
diff --git a/src/main/java/io/split/android/client/dtos/TargetingRulesChange.java b/main/src/main/java/io/split/android/client/dtos/TargetingRulesChange.java
similarity index 100%
rename from src/main/java/io/split/android/client/dtos/TargetingRulesChange.java
rename to main/src/main/java/io/split/android/client/dtos/TargetingRulesChange.java
diff --git a/src/main/java/io/split/android/client/dtos/TestImpressions.java b/main/src/main/java/io/split/android/client/dtos/TestImpressions.java
similarity index 100%
rename from src/main/java/io/split/android/client/dtos/TestImpressions.java
rename to main/src/main/java/io/split/android/client/dtos/TestImpressions.java
diff --git a/src/main/java/io/split/android/client/dtos/URN.java b/main/src/main/java/io/split/android/client/dtos/URN.java
similarity index 100%
rename from src/main/java/io/split/android/client/dtos/URN.java
rename to main/src/main/java/io/split/android/client/dtos/URN.java
diff --git a/src/main/java/io/split/android/client/dtos/UnaryNumericMatcherData.java b/main/src/main/java/io/split/android/client/dtos/UnaryNumericMatcherData.java
similarity index 100%
rename from src/main/java/io/split/android/client/dtos/UnaryNumericMatcherData.java
rename to main/src/main/java/io/split/android/client/dtos/UnaryNumericMatcherData.java
diff --git a/src/main/java/io/split/android/client/dtos/UserDefinedLargeSegmentMatcherData.java b/main/src/main/java/io/split/android/client/dtos/UserDefinedLargeSegmentMatcherData.java
similarity index 100%
rename from src/main/java/io/split/android/client/dtos/UserDefinedLargeSegmentMatcherData.java
rename to main/src/main/java/io/split/android/client/dtos/UserDefinedLargeSegmentMatcherData.java
diff --git a/src/main/java/io/split/android/client/dtos/UserDefinedSegmentMatcherData.java b/main/src/main/java/io/split/android/client/dtos/UserDefinedSegmentMatcherData.java
similarity index 100%
rename from src/main/java/io/split/android/client/dtos/UserDefinedSegmentMatcherData.java
rename to main/src/main/java/io/split/android/client/dtos/UserDefinedSegmentMatcherData.java
diff --git a/src/main/java/io/split/android/client/dtos/WhitelistMatcherData.java b/main/src/main/java/io/split/android/client/dtos/WhitelistMatcherData.java
similarity index 100%
rename from src/main/java/io/split/android/client/dtos/WhitelistMatcherData.java
rename to main/src/main/java/io/split/android/client/dtos/WhitelistMatcherData.java
diff --git a/src/main/java/io/split/android/client/events/BaseEventsManager.java b/main/src/main/java/io/split/android/client/events/BaseEventsManager.java
similarity index 100%
rename from src/main/java/io/split/android/client/events/BaseEventsManager.java
rename to main/src/main/java/io/split/android/client/events/BaseEventsManager.java
diff --git a/src/main/java/io/split/android/client/events/EventsManagerCoordinator.java b/main/src/main/java/io/split/android/client/events/EventsManagerCoordinator.java
similarity index 100%
rename from src/main/java/io/split/android/client/events/EventsManagerCoordinator.java
rename to main/src/main/java/io/split/android/client/events/EventsManagerCoordinator.java
diff --git a/src/main/java/io/split/android/client/events/EventsManagerRegistry.java b/main/src/main/java/io/split/android/client/events/EventsManagerRegistry.java
similarity index 100%
rename from src/main/java/io/split/android/client/events/EventsManagerRegistry.java
rename to main/src/main/java/io/split/android/client/events/EventsManagerRegistry.java
diff --git a/src/main/java/io/split/android/client/events/ISplitEventsManager.java b/main/src/main/java/io/split/android/client/events/ISplitEventsManager.java
similarity index 100%
rename from src/main/java/io/split/android/client/events/ISplitEventsManager.java
rename to main/src/main/java/io/split/android/client/events/ISplitEventsManager.java
diff --git a/src/main/java/io/split/android/client/events/ListenableEventsManager.java b/main/src/main/java/io/split/android/client/events/ListenableEventsManager.java
similarity index 100%
rename from src/main/java/io/split/android/client/events/ListenableEventsManager.java
rename to main/src/main/java/io/split/android/client/events/ListenableEventsManager.java
diff --git a/src/main/java/io/split/android/client/events/SplitEvent.java b/main/src/main/java/io/split/android/client/events/SplitEvent.java
similarity index 100%
rename from src/main/java/io/split/android/client/events/SplitEvent.java
rename to main/src/main/java/io/split/android/client/events/SplitEvent.java
diff --git a/src/main/java/io/split/android/client/events/SplitEventTask.java b/main/src/main/java/io/split/android/client/events/SplitEventTask.java
similarity index 100%
rename from src/main/java/io/split/android/client/events/SplitEventTask.java
rename to main/src/main/java/io/split/android/client/events/SplitEventTask.java
diff --git a/src/main/java/io/split/android/client/events/SplitEventTaskMethodNotImplementedException.java b/main/src/main/java/io/split/android/client/events/SplitEventTaskMethodNotImplementedException.java
similarity index 100%
rename from src/main/java/io/split/android/client/events/SplitEventTaskMethodNotImplementedException.java
rename to main/src/main/java/io/split/android/client/events/SplitEventTaskMethodNotImplementedException.java
diff --git a/src/main/java/io/split/android/client/events/SplitEventsManager.java b/main/src/main/java/io/split/android/client/events/SplitEventsManager.java
similarity index 100%
rename from src/main/java/io/split/android/client/events/SplitEventsManager.java
rename to main/src/main/java/io/split/android/client/events/SplitEventsManager.java
diff --git a/src/main/java/io/split/android/client/events/SplitInternalEvent.java b/main/src/main/java/io/split/android/client/events/SplitInternalEvent.java
similarity index 100%
rename from src/main/java/io/split/android/client/events/SplitInternalEvent.java
rename to main/src/main/java/io/split/android/client/events/SplitInternalEvent.java
diff --git a/src/main/java/io/split/android/client/events/executors/ClientEventSplitTask.java b/main/src/main/java/io/split/android/client/events/executors/ClientEventSplitTask.java
similarity index 100%
rename from src/main/java/io/split/android/client/events/executors/ClientEventSplitTask.java
rename to main/src/main/java/io/split/android/client/events/executors/ClientEventSplitTask.java
diff --git a/src/main/java/io/split/android/client/events/executors/SplitEventExecutor.java b/main/src/main/java/io/split/android/client/events/executors/SplitEventExecutor.java
similarity index 100%
rename from src/main/java/io/split/android/client/events/executors/SplitEventExecutor.java
rename to main/src/main/java/io/split/android/client/events/executors/SplitEventExecutor.java
diff --git a/src/main/java/io/split/android/client/events/executors/SplitEventExecutorFactory.java b/main/src/main/java/io/split/android/client/events/executors/SplitEventExecutorFactory.java
similarity index 100%
rename from src/main/java/io/split/android/client/events/executors/SplitEventExecutorFactory.java
rename to main/src/main/java/io/split/android/client/events/executors/SplitEventExecutorFactory.java
diff --git a/src/main/java/io/split/android/client/events/executors/SplitEventExecutorResources.java b/main/src/main/java/io/split/android/client/events/executors/SplitEventExecutorResources.java
similarity index 100%
rename from src/main/java/io/split/android/client/events/executors/SplitEventExecutorResources.java
rename to main/src/main/java/io/split/android/client/events/executors/SplitEventExecutorResources.java
diff --git a/src/main/java/io/split/android/client/events/executors/SplitEventExecutorResourcesImpl.java b/main/src/main/java/io/split/android/client/events/executors/SplitEventExecutorResourcesImpl.java
similarity index 100%
rename from src/main/java/io/split/android/client/events/executors/SplitEventExecutorResourcesImpl.java
rename to main/src/main/java/io/split/android/client/events/executors/SplitEventExecutorResourcesImpl.java
diff --git a/src/main/java/io/split/android/client/events/executors/SplitEventExecutorWithClient.java b/main/src/main/java/io/split/android/client/events/executors/SplitEventExecutorWithClient.java
similarity index 100%
rename from src/main/java/io/split/android/client/events/executors/SplitEventExecutorWithClient.java
rename to main/src/main/java/io/split/android/client/events/executors/SplitEventExecutorWithClient.java
diff --git a/src/main/java/io/split/android/client/exceptions/ChangeNumberExceptionWrapper.java b/main/src/main/java/io/split/android/client/exceptions/ChangeNumberExceptionWrapper.java
similarity index 100%
rename from src/main/java/io/split/android/client/exceptions/ChangeNumberExceptionWrapper.java
rename to main/src/main/java/io/split/android/client/exceptions/ChangeNumberExceptionWrapper.java
diff --git a/src/main/java/io/split/android/client/exceptions/MySegmentsParsingException.java b/main/src/main/java/io/split/android/client/exceptions/MySegmentsParsingException.java
similarity index 100%
rename from src/main/java/io/split/android/client/exceptions/MySegmentsParsingException.java
rename to main/src/main/java/io/split/android/client/exceptions/MySegmentsParsingException.java
diff --git a/src/main/java/io/split/android/client/exceptions/ParentIsControlException.java b/main/src/main/java/io/split/android/client/exceptions/ParentIsControlException.java
similarity index 100%
rename from src/main/java/io/split/android/client/exceptions/ParentIsControlException.java
rename to main/src/main/java/io/split/android/client/exceptions/ParentIsControlException.java
diff --git a/src/main/java/io/split/android/client/exceptions/SplitInstantiationException.java b/main/src/main/java/io/split/android/client/exceptions/SplitInstantiationException.java
similarity index 100%
rename from src/main/java/io/split/android/client/exceptions/SplitInstantiationException.java
rename to main/src/main/java/io/split/android/client/exceptions/SplitInstantiationException.java
diff --git a/src/main/java/io/split/android/client/factory/FactoryMonitor.java b/main/src/main/java/io/split/android/client/factory/FactoryMonitor.java
similarity index 100%
rename from src/main/java/io/split/android/client/factory/FactoryMonitor.java
rename to main/src/main/java/io/split/android/client/factory/FactoryMonitor.java
diff --git a/src/main/java/io/split/android/client/factory/FactoryMonitorImpl.java b/main/src/main/java/io/split/android/client/factory/FactoryMonitorImpl.java
similarity index 100%
rename from src/main/java/io/split/android/client/factory/FactoryMonitorImpl.java
rename to main/src/main/java/io/split/android/client/factory/FactoryMonitorImpl.java
diff --git a/src/main/java/io/split/android/client/fallback/FallbackTreatment.java b/main/src/main/java/io/split/android/client/fallback/FallbackTreatment.java
similarity index 100%
rename from src/main/java/io/split/android/client/fallback/FallbackTreatment.java
rename to main/src/main/java/io/split/android/client/fallback/FallbackTreatment.java
diff --git a/src/main/java/io/split/android/client/fallback/FallbackTreatmentsCalculator.java b/main/src/main/java/io/split/android/client/fallback/FallbackTreatmentsCalculator.java
similarity index 100%
rename from src/main/java/io/split/android/client/fallback/FallbackTreatmentsCalculator.java
rename to main/src/main/java/io/split/android/client/fallback/FallbackTreatmentsCalculator.java
diff --git a/src/main/java/io/split/android/client/fallback/FallbackTreatmentsCalculatorImpl.java b/main/src/main/java/io/split/android/client/fallback/FallbackTreatmentsCalculatorImpl.java
similarity index 100%
rename from src/main/java/io/split/android/client/fallback/FallbackTreatmentsCalculatorImpl.java
rename to main/src/main/java/io/split/android/client/fallback/FallbackTreatmentsCalculatorImpl.java
diff --git a/src/main/java/io/split/android/client/fallback/FallbackTreatmentsConfiguration.java b/main/src/main/java/io/split/android/client/fallback/FallbackTreatmentsConfiguration.java
similarity index 100%
rename from src/main/java/io/split/android/client/fallback/FallbackTreatmentsConfiguration.java
rename to main/src/main/java/io/split/android/client/fallback/FallbackTreatmentsConfiguration.java
diff --git a/src/main/java/io/split/android/client/fallback/FallbacksSanitizer.java b/main/src/main/java/io/split/android/client/fallback/FallbacksSanitizer.java
similarity index 100%
rename from src/main/java/io/split/android/client/fallback/FallbacksSanitizer.java
rename to main/src/main/java/io/split/android/client/fallback/FallbacksSanitizer.java
diff --git a/src/main/java/io/split/android/client/fallback/FallbacksSanitizerImpl.java b/main/src/main/java/io/split/android/client/fallback/FallbacksSanitizerImpl.java
similarity index 100%
rename from src/main/java/io/split/android/client/fallback/FallbacksSanitizerImpl.java
rename to main/src/main/java/io/split/android/client/fallback/FallbacksSanitizerImpl.java
diff --git a/src/main/java/io/split/android/client/impressions/DecoratedImpression.java b/main/src/main/java/io/split/android/client/impressions/DecoratedImpression.java
similarity index 100%
rename from src/main/java/io/split/android/client/impressions/DecoratedImpression.java
rename to main/src/main/java/io/split/android/client/impressions/DecoratedImpression.java
diff --git a/src/main/java/io/split/android/client/impressions/DecoratedImpressionListener.java b/main/src/main/java/io/split/android/client/impressions/DecoratedImpressionListener.java
similarity index 100%
rename from src/main/java/io/split/android/client/impressions/DecoratedImpressionListener.java
rename to main/src/main/java/io/split/android/client/impressions/DecoratedImpressionListener.java
diff --git a/src/main/java/io/split/android/client/impressions/Impression.java b/main/src/main/java/io/split/android/client/impressions/Impression.java
similarity index 100%
rename from src/main/java/io/split/android/client/impressions/Impression.java
rename to main/src/main/java/io/split/android/client/impressions/Impression.java
diff --git a/src/main/java/io/split/android/client/impressions/ImpressionListener.java b/main/src/main/java/io/split/android/client/impressions/ImpressionListener.java
similarity index 100%
rename from src/main/java/io/split/android/client/impressions/ImpressionListener.java
rename to main/src/main/java/io/split/android/client/impressions/ImpressionListener.java
diff --git a/src/main/java/io/split/android/client/impressions/ImpressionLoggingTask.java b/main/src/main/java/io/split/android/client/impressions/ImpressionLoggingTask.java
similarity index 100%
rename from src/main/java/io/split/android/client/impressions/ImpressionLoggingTask.java
rename to main/src/main/java/io/split/android/client/impressions/ImpressionLoggingTask.java
diff --git a/src/main/java/io/split/android/client/impressions/SyncImpressionListener.java b/main/src/main/java/io/split/android/client/impressions/SyncImpressionListener.java
similarity index 100%
rename from src/main/java/io/split/android/client/impressions/SyncImpressionListener.java
rename to main/src/main/java/io/split/android/client/impressions/SyncImpressionListener.java
diff --git a/src/main/java/io/split/android/client/lifecycle/SplitLifecycleAware.java b/main/src/main/java/io/split/android/client/lifecycle/SplitLifecycleAware.java
similarity index 100%
rename from src/main/java/io/split/android/client/lifecycle/SplitLifecycleAware.java
rename to main/src/main/java/io/split/android/client/lifecycle/SplitLifecycleAware.java
diff --git a/src/main/java/io/split/android/client/lifecycle/SplitLifecycleManager.java b/main/src/main/java/io/split/android/client/lifecycle/SplitLifecycleManager.java
similarity index 100%
rename from src/main/java/io/split/android/client/lifecycle/SplitLifecycleManager.java
rename to main/src/main/java/io/split/android/client/lifecycle/SplitLifecycleManager.java
diff --git a/src/main/java/io/split/android/client/lifecycle/SplitLifecycleManagerImpl.java b/main/src/main/java/io/split/android/client/lifecycle/SplitLifecycleManagerImpl.java
similarity index 100%
rename from src/main/java/io/split/android/client/lifecycle/SplitLifecycleManagerImpl.java
rename to main/src/main/java/io/split/android/client/lifecycle/SplitLifecycleManagerImpl.java
diff --git a/src/main/java/io/split/android/client/localhost/LocalhostFileParser.java b/main/src/main/java/io/split/android/client/localhost/LocalhostFileParser.java
similarity index 100%
rename from src/main/java/io/split/android/client/localhost/LocalhostFileParser.java
rename to main/src/main/java/io/split/android/client/localhost/LocalhostFileParser.java
diff --git a/src/main/java/io/split/android/client/localhost/LocalhostImpressionsListener.java b/main/src/main/java/io/split/android/client/localhost/LocalhostImpressionsListener.java
similarity index 100%
rename from src/main/java/io/split/android/client/localhost/LocalhostImpressionsListener.java
rename to main/src/main/java/io/split/android/client/localhost/LocalhostImpressionsListener.java
diff --git a/src/main/java/io/split/android/client/localhost/LocalhostMySegmentsStorageContainer.java b/main/src/main/java/io/split/android/client/localhost/LocalhostMySegmentsStorageContainer.java
similarity index 100%
rename from src/main/java/io/split/android/client/localhost/LocalhostMySegmentsStorageContainer.java
rename to main/src/main/java/io/split/android/client/localhost/LocalhostMySegmentsStorageContainer.java
diff --git a/src/main/java/io/split/android/client/localhost/LocalhostPropertiesFileParser.java b/main/src/main/java/io/split/android/client/localhost/LocalhostPropertiesFileParser.java
similarity index 100%
rename from src/main/java/io/split/android/client/localhost/LocalhostPropertiesFileParser.java
rename to main/src/main/java/io/split/android/client/localhost/LocalhostPropertiesFileParser.java
diff --git a/src/main/java/io/split/android/client/localhost/LocalhostRuleBasedSegmentsStorage.java b/main/src/main/java/io/split/android/client/localhost/LocalhostRuleBasedSegmentsStorage.java
similarity index 100%
rename from src/main/java/io/split/android/client/localhost/LocalhostRuleBasedSegmentsStorage.java
rename to main/src/main/java/io/split/android/client/localhost/LocalhostRuleBasedSegmentsStorage.java
diff --git a/src/main/java/io/split/android/client/localhost/LocalhostRuleBasedSegmentsStorageProvider.java b/main/src/main/java/io/split/android/client/localhost/LocalhostRuleBasedSegmentsStorageProvider.java
similarity index 100%
rename from src/main/java/io/split/android/client/localhost/LocalhostRuleBasedSegmentsStorageProvider.java
rename to main/src/main/java/io/split/android/client/localhost/LocalhostRuleBasedSegmentsStorageProvider.java
diff --git a/src/main/java/io/split/android/client/localhost/LocalhostSplitClient.java b/main/src/main/java/io/split/android/client/localhost/LocalhostSplitClient.java
similarity index 100%
rename from src/main/java/io/split/android/client/localhost/LocalhostSplitClient.java
rename to main/src/main/java/io/split/android/client/localhost/LocalhostSplitClient.java
diff --git a/src/main/java/io/split/android/client/localhost/LocalhostSplitFactory.java b/main/src/main/java/io/split/android/client/localhost/LocalhostSplitFactory.java
similarity index 100%
rename from src/main/java/io/split/android/client/localhost/LocalhostSplitFactory.java
rename to main/src/main/java/io/split/android/client/localhost/LocalhostSplitFactory.java
diff --git a/src/main/java/io/split/android/client/localhost/LocalhostSplitsStorage.java b/main/src/main/java/io/split/android/client/localhost/LocalhostSplitsStorage.java
similarity index 100%
rename from src/main/java/io/split/android/client/localhost/LocalhostSplitsStorage.java
rename to main/src/main/java/io/split/android/client/localhost/LocalhostSplitsStorage.java
diff --git a/src/main/java/io/split/android/client/localhost/LocalhostSynchronizer.java b/main/src/main/java/io/split/android/client/localhost/LocalhostSynchronizer.java
similarity index 100%
rename from src/main/java/io/split/android/client/localhost/LocalhostSynchronizer.java
rename to main/src/main/java/io/split/android/client/localhost/LocalhostSynchronizer.java
diff --git a/src/main/java/io/split/android/client/localhost/LocalhostYamlFileParser.java b/main/src/main/java/io/split/android/client/localhost/LocalhostYamlFileParser.java
similarity index 100%
rename from src/main/java/io/split/android/client/localhost/LocalhostYamlFileParser.java
rename to main/src/main/java/io/split/android/client/localhost/LocalhostYamlFileParser.java
diff --git a/src/main/java/io/split/android/client/localhost/SplitHelper.java b/main/src/main/java/io/split/android/client/localhost/SplitHelper.java
similarity index 100%
rename from src/main/java/io/split/android/client/localhost/SplitHelper.java
rename to main/src/main/java/io/split/android/client/localhost/SplitHelper.java
diff --git a/src/main/java/io/split/android/client/localhost/shared/LocalhostSplitClientContainerImpl.java b/main/src/main/java/io/split/android/client/localhost/shared/LocalhostSplitClientContainerImpl.java
similarity index 100%
rename from src/main/java/io/split/android/client/localhost/shared/LocalhostSplitClientContainerImpl.java
rename to main/src/main/java/io/split/android/client/localhost/shared/LocalhostSplitClientContainerImpl.java
diff --git a/src/main/java/io/split/android/client/network/Algorithm.java b/main/src/main/java/io/split/android/client/network/Algorithm.java
similarity index 100%
rename from src/main/java/io/split/android/client/network/Algorithm.java
rename to main/src/main/java/io/split/android/client/network/Algorithm.java
diff --git a/src/main/java/io/split/android/client/network/AuthenticatedRequest.java b/main/src/main/java/io/split/android/client/network/AuthenticatedRequest.java
similarity index 100%
rename from src/main/java/io/split/android/client/network/AuthenticatedRequest.java
rename to main/src/main/java/io/split/android/client/network/AuthenticatedRequest.java
diff --git a/src/main/java/io/split/android/client/network/Authenticator.java b/main/src/main/java/io/split/android/client/network/Authenticator.java
similarity index 100%
rename from src/main/java/io/split/android/client/network/Authenticator.java
rename to main/src/main/java/io/split/android/client/network/Authenticator.java
diff --git a/src/main/java/io/split/android/client/network/Base64Decoder.java b/main/src/main/java/io/split/android/client/network/Base64Decoder.java
similarity index 100%
rename from src/main/java/io/split/android/client/network/Base64Decoder.java
rename to main/src/main/java/io/split/android/client/network/Base64Decoder.java
diff --git a/src/main/java/io/split/android/client/network/Base64Encoder.java b/main/src/main/java/io/split/android/client/network/Base64Encoder.java
similarity index 100%
rename from src/main/java/io/split/android/client/network/Base64Encoder.java
rename to main/src/main/java/io/split/android/client/network/Base64Encoder.java
diff --git a/src/main/java/io/split/android/client/network/BaseHttpResponse.java b/main/src/main/java/io/split/android/client/network/BaseHttpResponse.java
similarity index 100%
rename from src/main/java/io/split/android/client/network/BaseHttpResponse.java
rename to main/src/main/java/io/split/android/client/network/BaseHttpResponse.java
diff --git a/src/main/java/io/split/android/client/network/BaseHttpResponseImpl.java b/main/src/main/java/io/split/android/client/network/BaseHttpResponseImpl.java
similarity index 100%
rename from src/main/java/io/split/android/client/network/BaseHttpResponseImpl.java
rename to main/src/main/java/io/split/android/client/network/BaseHttpResponseImpl.java
diff --git a/src/main/java/io/split/android/client/network/BasicCredentialsProvider.java b/main/src/main/java/io/split/android/client/network/BasicCredentialsProvider.java
similarity index 100%
rename from src/main/java/io/split/android/client/network/BasicCredentialsProvider.java
rename to main/src/main/java/io/split/android/client/network/BasicCredentialsProvider.java
diff --git a/src/main/java/io/split/android/client/network/BearerCredentialsProvider.java b/main/src/main/java/io/split/android/client/network/BearerCredentialsProvider.java
similarity index 100%
rename from src/main/java/io/split/android/client/network/BearerCredentialsProvider.java
rename to main/src/main/java/io/split/android/client/network/BearerCredentialsProvider.java
diff --git a/src/main/java/io/split/android/client/network/CertificateChecker.java b/main/src/main/java/io/split/android/client/network/CertificateChecker.java
similarity index 100%
rename from src/main/java/io/split/android/client/network/CertificateChecker.java
rename to main/src/main/java/io/split/android/client/network/CertificateChecker.java
diff --git a/src/main/java/io/split/android/client/network/CertificateCheckerHelper.java b/main/src/main/java/io/split/android/client/network/CertificateCheckerHelper.java
similarity index 100%
rename from src/main/java/io/split/android/client/network/CertificateCheckerHelper.java
rename to main/src/main/java/io/split/android/client/network/CertificateCheckerHelper.java
diff --git a/src/main/java/io/split/android/client/network/CertificateCheckerImpl.java b/main/src/main/java/io/split/android/client/network/CertificateCheckerImpl.java
similarity index 100%
rename from src/main/java/io/split/android/client/network/CertificateCheckerImpl.java
rename to main/src/main/java/io/split/android/client/network/CertificateCheckerImpl.java
diff --git a/src/main/java/io/split/android/client/network/CertificatePin.java b/main/src/main/java/io/split/android/client/network/CertificatePin.java
similarity index 100%
rename from src/main/java/io/split/android/client/network/CertificatePin.java
rename to main/src/main/java/io/split/android/client/network/CertificatePin.java
diff --git a/src/main/java/io/split/android/client/network/CertificatePinningConfiguration.java b/main/src/main/java/io/split/android/client/network/CertificatePinningConfiguration.java
similarity index 100%
rename from src/main/java/io/split/android/client/network/CertificatePinningConfiguration.java
rename to main/src/main/java/io/split/android/client/network/CertificatePinningConfiguration.java
diff --git a/src/main/java/io/split/android/client/network/CertificatePinningConfigurationProvider.java b/main/src/main/java/io/split/android/client/network/CertificatePinningConfigurationProvider.java
similarity index 100%
rename from src/main/java/io/split/android/client/network/CertificatePinningConfigurationProvider.java
rename to main/src/main/java/io/split/android/client/network/CertificatePinningConfigurationProvider.java
diff --git a/src/main/java/io/split/android/client/network/CertificatePinningFailureListener.java b/main/src/main/java/io/split/android/client/network/CertificatePinningFailureListener.java
similarity index 100%
rename from src/main/java/io/split/android/client/network/CertificatePinningFailureListener.java
rename to main/src/main/java/io/split/android/client/network/CertificatePinningFailureListener.java
diff --git a/src/main/java/io/split/android/client/network/ChainCleaner.java b/main/src/main/java/io/split/android/client/network/ChainCleaner.java
similarity index 100%
rename from src/main/java/io/split/android/client/network/ChainCleaner.java
rename to main/src/main/java/io/split/android/client/network/ChainCleaner.java
diff --git a/src/main/java/io/split/android/client/network/ChainCleanerImpl.java b/main/src/main/java/io/split/android/client/network/ChainCleanerImpl.java
similarity index 100%
rename from src/main/java/io/split/android/client/network/ChainCleanerImpl.java
rename to main/src/main/java/io/split/android/client/network/ChainCleanerImpl.java
diff --git a/src/main/java/io/split/android/client/network/DefaultBase64Decoder.java b/main/src/main/java/io/split/android/client/network/DefaultBase64Decoder.java
similarity index 100%
rename from src/main/java/io/split/android/client/network/DefaultBase64Decoder.java
rename to main/src/main/java/io/split/android/client/network/DefaultBase64Decoder.java
diff --git a/src/main/java/io/split/android/client/network/DefaultBase64Encoder.java b/main/src/main/java/io/split/android/client/network/DefaultBase64Encoder.java
similarity index 100%
rename from src/main/java/io/split/android/client/network/DefaultBase64Encoder.java
rename to main/src/main/java/io/split/android/client/network/DefaultBase64Encoder.java
diff --git a/src/main/java/io/split/android/client/network/DevelopmentSslConfig.java b/main/src/main/java/io/split/android/client/network/DevelopmentSslConfig.java
similarity index 100%
rename from src/main/java/io/split/android/client/network/DevelopmentSslConfig.java
rename to main/src/main/java/io/split/android/client/network/DevelopmentSslConfig.java
diff --git a/src/main/java/io/split/android/client/network/HttpClient.java b/main/src/main/java/io/split/android/client/network/HttpClient.java
similarity index 100%
rename from src/main/java/io/split/android/client/network/HttpClient.java
rename to main/src/main/java/io/split/android/client/network/HttpClient.java
diff --git a/src/main/java/io/split/android/client/network/HttpClientImpl.java b/main/src/main/java/io/split/android/client/network/HttpClientImpl.java
similarity index 100%
rename from src/main/java/io/split/android/client/network/HttpClientImpl.java
rename to main/src/main/java/io/split/android/client/network/HttpClientImpl.java
diff --git a/src/main/java/io/split/android/client/network/HttpException.java b/main/src/main/java/io/split/android/client/network/HttpException.java
similarity index 100%
rename from src/main/java/io/split/android/client/network/HttpException.java
rename to main/src/main/java/io/split/android/client/network/HttpException.java
diff --git a/src/main/java/io/split/android/client/network/HttpMethod.java b/main/src/main/java/io/split/android/client/network/HttpMethod.java
similarity index 100%
rename from src/main/java/io/split/android/client/network/HttpMethod.java
rename to main/src/main/java/io/split/android/client/network/HttpMethod.java
diff --git a/src/main/java/io/split/android/client/network/HttpOverTunnelExecutor.java b/main/src/main/java/io/split/android/client/network/HttpOverTunnelExecutor.java
similarity index 100%
rename from src/main/java/io/split/android/client/network/HttpOverTunnelExecutor.java
rename to main/src/main/java/io/split/android/client/network/HttpOverTunnelExecutor.java
diff --git a/src/main/java/io/split/android/client/network/HttpProxy.java b/main/src/main/java/io/split/android/client/network/HttpProxy.java
similarity index 100%
rename from src/main/java/io/split/android/client/network/HttpProxy.java
rename to main/src/main/java/io/split/android/client/network/HttpProxy.java
diff --git a/src/main/java/io/split/android/client/network/HttpRequest.java b/main/src/main/java/io/split/android/client/network/HttpRequest.java
similarity index 100%
rename from src/main/java/io/split/android/client/network/HttpRequest.java
rename to main/src/main/java/io/split/android/client/network/HttpRequest.java
diff --git a/src/main/java/io/split/android/client/network/HttpRequestHelper.java b/main/src/main/java/io/split/android/client/network/HttpRequestHelper.java
similarity index 100%
rename from src/main/java/io/split/android/client/network/HttpRequestHelper.java
rename to main/src/main/java/io/split/android/client/network/HttpRequestHelper.java
diff --git a/src/main/java/io/split/android/client/network/HttpRequestImpl.java b/main/src/main/java/io/split/android/client/network/HttpRequestImpl.java
similarity index 100%
rename from src/main/java/io/split/android/client/network/HttpRequestImpl.java
rename to main/src/main/java/io/split/android/client/network/HttpRequestImpl.java
diff --git a/src/main/java/io/split/android/client/network/HttpResponse.java b/main/src/main/java/io/split/android/client/network/HttpResponse.java
similarity index 100%
rename from src/main/java/io/split/android/client/network/HttpResponse.java
rename to main/src/main/java/io/split/android/client/network/HttpResponse.java
diff --git a/src/main/java/io/split/android/client/network/HttpResponseConnectionAdapter.java b/main/src/main/java/io/split/android/client/network/HttpResponseConnectionAdapter.java
similarity index 100%
rename from src/main/java/io/split/android/client/network/HttpResponseConnectionAdapter.java
rename to main/src/main/java/io/split/android/client/network/HttpResponseConnectionAdapter.java
diff --git a/src/main/java/io/split/android/client/network/HttpResponseImpl.java b/main/src/main/java/io/split/android/client/network/HttpResponseImpl.java
similarity index 100%
rename from src/main/java/io/split/android/client/network/HttpResponseImpl.java
rename to main/src/main/java/io/split/android/client/network/HttpResponseImpl.java
diff --git a/src/main/java/io/split/android/client/network/HttpStreamRequest.java b/main/src/main/java/io/split/android/client/network/HttpStreamRequest.java
similarity index 100%
rename from src/main/java/io/split/android/client/network/HttpStreamRequest.java
rename to main/src/main/java/io/split/android/client/network/HttpStreamRequest.java
diff --git a/src/main/java/io/split/android/client/network/HttpStreamRequestImpl.java b/main/src/main/java/io/split/android/client/network/HttpStreamRequestImpl.java
similarity index 100%
rename from src/main/java/io/split/android/client/network/HttpStreamRequestImpl.java
rename to main/src/main/java/io/split/android/client/network/HttpStreamRequestImpl.java
diff --git a/src/main/java/io/split/android/client/network/HttpStreamResponse.java b/main/src/main/java/io/split/android/client/network/HttpStreamResponse.java
similarity index 100%
rename from src/main/java/io/split/android/client/network/HttpStreamResponse.java
rename to main/src/main/java/io/split/android/client/network/HttpStreamResponse.java
diff --git a/src/main/java/io/split/android/client/network/HttpStreamResponseImpl.java b/main/src/main/java/io/split/android/client/network/HttpStreamResponseImpl.java
similarity index 100%
rename from src/main/java/io/split/android/client/network/HttpStreamResponseImpl.java
rename to main/src/main/java/io/split/android/client/network/HttpStreamResponseImpl.java
diff --git a/src/main/java/io/split/android/client/network/LegacyTlsUpdater.java b/main/src/main/java/io/split/android/client/network/LegacyTlsUpdater.java
similarity index 100%
rename from src/main/java/io/split/android/client/network/LegacyTlsUpdater.java
rename to main/src/main/java/io/split/android/client/network/LegacyTlsUpdater.java
diff --git a/src/main/java/io/split/android/client/network/PercentEscaper.java b/main/src/main/java/io/split/android/client/network/PercentEscaper.java
similarity index 100%
rename from src/main/java/io/split/android/client/network/PercentEscaper.java
rename to main/src/main/java/io/split/android/client/network/PercentEscaper.java
diff --git a/src/main/java/io/split/android/client/network/PinEncoder.java b/main/src/main/java/io/split/android/client/network/PinEncoder.java
similarity index 100%
rename from src/main/java/io/split/android/client/network/PinEncoder.java
rename to main/src/main/java/io/split/android/client/network/PinEncoder.java
diff --git a/src/main/java/io/split/android/client/network/PinEncoderImpl.java b/main/src/main/java/io/split/android/client/network/PinEncoderImpl.java
similarity index 100%
rename from src/main/java/io/split/android/client/network/PinEncoderImpl.java
rename to main/src/main/java/io/split/android/client/network/PinEncoderImpl.java
diff --git a/src/main/java/io/split/android/client/network/ProxyCacertConnectionHandler.java b/main/src/main/java/io/split/android/client/network/ProxyCacertConnectionHandler.java
similarity index 100%
rename from src/main/java/io/split/android/client/network/ProxyCacertConnectionHandler.java
rename to main/src/main/java/io/split/android/client/network/ProxyCacertConnectionHandler.java
diff --git a/src/main/java/io/split/android/client/network/ProxyConfiguration.java b/main/src/main/java/io/split/android/client/network/ProxyConfiguration.java
similarity index 100%
rename from src/main/java/io/split/android/client/network/ProxyConfiguration.java
rename to main/src/main/java/io/split/android/client/network/ProxyConfiguration.java
diff --git a/src/main/java/io/split/android/client/network/ProxyCredentialsProvider.java b/main/src/main/java/io/split/android/client/network/ProxyCredentialsProvider.java
similarity index 100%
rename from src/main/java/io/split/android/client/network/ProxyCredentialsProvider.java
rename to main/src/main/java/io/split/android/client/network/ProxyCredentialsProvider.java
diff --git a/src/main/java/io/split/android/client/network/ProxySslSocketFactoryProvider.java b/main/src/main/java/io/split/android/client/network/ProxySslSocketFactoryProvider.java
similarity index 100%
rename from src/main/java/io/split/android/client/network/ProxySslSocketFactoryProvider.java
rename to main/src/main/java/io/split/android/client/network/ProxySslSocketFactoryProvider.java
diff --git a/src/main/java/io/split/android/client/network/ProxySslSocketFactoryProviderImpl.java b/main/src/main/java/io/split/android/client/network/ProxySslSocketFactoryProviderImpl.java
similarity index 100%
rename from src/main/java/io/split/android/client/network/ProxySslSocketFactoryProviderImpl.java
rename to main/src/main/java/io/split/android/client/network/ProxySslSocketFactoryProviderImpl.java
diff --git a/src/main/java/io/split/android/client/network/RawHttpResponseParser.java b/main/src/main/java/io/split/android/client/network/RawHttpResponseParser.java
similarity index 100%
rename from src/main/java/io/split/android/client/network/RawHttpResponseParser.java
rename to main/src/main/java/io/split/android/client/network/RawHttpResponseParser.java
diff --git a/src/main/java/io/split/android/client/network/SdkTargetPath.java b/main/src/main/java/io/split/android/client/network/SdkTargetPath.java
similarity index 100%
rename from src/main/java/io/split/android/client/network/SdkTargetPath.java
rename to main/src/main/java/io/split/android/client/network/SdkTargetPath.java
diff --git a/src/main/java/io/split/android/client/network/SplitAuthenticatedRequest.java b/main/src/main/java/io/split/android/client/network/SplitAuthenticatedRequest.java
similarity index 100%
rename from src/main/java/io/split/android/client/network/SplitAuthenticatedRequest.java
rename to main/src/main/java/io/split/android/client/network/SplitAuthenticatedRequest.java
diff --git a/src/main/java/io/split/android/client/network/SplitAuthenticator.java b/main/src/main/java/io/split/android/client/network/SplitAuthenticator.java
similarity index 100%
rename from src/main/java/io/split/android/client/network/SplitAuthenticator.java
rename to main/src/main/java/io/split/android/client/network/SplitAuthenticator.java
diff --git a/src/main/java/io/split/android/client/network/SplitBasicAuthenticator.java b/main/src/main/java/io/split/android/client/network/SplitBasicAuthenticator.java
similarity index 100%
rename from src/main/java/io/split/android/client/network/SplitBasicAuthenticator.java
rename to main/src/main/java/io/split/android/client/network/SplitBasicAuthenticator.java
diff --git a/src/main/java/io/split/android/client/network/SplitHttpHeadersBuilder.java b/main/src/main/java/io/split/android/client/network/SplitHttpHeadersBuilder.java
similarity index 100%
rename from src/main/java/io/split/android/client/network/SplitHttpHeadersBuilder.java
rename to main/src/main/java/io/split/android/client/network/SplitHttpHeadersBuilder.java
diff --git a/src/main/java/io/split/android/client/network/SplitUrlConnectionAuthenticator.java b/main/src/main/java/io/split/android/client/network/SplitUrlConnectionAuthenticator.java
similarity index 100%
rename from src/main/java/io/split/android/client/network/SplitUrlConnectionAuthenticator.java
rename to main/src/main/java/io/split/android/client/network/SplitUrlConnectionAuthenticator.java
diff --git a/src/main/java/io/split/android/client/network/SslProxyTunnelEstablisher.java b/main/src/main/java/io/split/android/client/network/SslProxyTunnelEstablisher.java
similarity index 100%
rename from src/main/java/io/split/android/client/network/SslProxyTunnelEstablisher.java
rename to main/src/main/java/io/split/android/client/network/SslProxyTunnelEstablisher.java
diff --git a/src/main/java/io/split/android/client/network/Tls12OnlySocketFactory.java b/main/src/main/java/io/split/android/client/network/Tls12OnlySocketFactory.java
similarity index 100%
rename from src/main/java/io/split/android/client/network/Tls12OnlySocketFactory.java
rename to main/src/main/java/io/split/android/client/network/Tls12OnlySocketFactory.java
diff --git a/src/main/java/io/split/android/client/network/TrustManagerProvider.java b/main/src/main/java/io/split/android/client/network/TrustManagerProvider.java
similarity index 100%
rename from src/main/java/io/split/android/client/network/TrustManagerProvider.java
rename to main/src/main/java/io/split/android/client/network/TrustManagerProvider.java
diff --git a/src/main/java/io/split/android/client/network/URIBuilder.java b/main/src/main/java/io/split/android/client/network/URIBuilder.java
similarity index 100%
rename from src/main/java/io/split/android/client/network/URIBuilder.java
rename to main/src/main/java/io/split/android/client/network/URIBuilder.java
diff --git a/src/main/java/io/split/android/client/network/UnicodeEscaper.java b/main/src/main/java/io/split/android/client/network/UnicodeEscaper.java
similarity index 100%
rename from src/main/java/io/split/android/client/network/UnicodeEscaper.java
rename to main/src/main/java/io/split/android/client/network/UnicodeEscaper.java
diff --git a/src/main/java/io/split/android/client/network/UrlEscapers.java b/main/src/main/java/io/split/android/client/network/UrlEscapers.java
similarity index 100%
rename from src/main/java/io/split/android/client/network/UrlEscapers.java
rename to main/src/main/java/io/split/android/client/network/UrlEscapers.java
diff --git a/src/main/java/io/split/android/client/network/UrlSanitizer.java b/main/src/main/java/io/split/android/client/network/UrlSanitizer.java
similarity index 100%
rename from src/main/java/io/split/android/client/network/UrlSanitizer.java
rename to main/src/main/java/io/split/android/client/network/UrlSanitizer.java
diff --git a/src/main/java/io/split/android/client/network/UrlSanitizerImpl.java b/main/src/main/java/io/split/android/client/network/UrlSanitizerImpl.java
similarity index 100%
rename from src/main/java/io/split/android/client/network/UrlSanitizerImpl.java
rename to main/src/main/java/io/split/android/client/network/UrlSanitizerImpl.java
diff --git a/src/main/java/io/split/android/client/service/CleanUpDatabaseTask.java b/main/src/main/java/io/split/android/client/service/CleanUpDatabaseTask.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/CleanUpDatabaseTask.java
rename to main/src/main/java/io/split/android/client/service/CleanUpDatabaseTask.java
diff --git a/src/main/java/io/split/android/client/service/ServiceConstants.java b/main/src/main/java/io/split/android/client/service/ServiceConstants.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/ServiceConstants.java
rename to main/src/main/java/io/split/android/client/service/ServiceConstants.java
diff --git a/src/main/java/io/split/android/client/service/ServiceFactory.java b/main/src/main/java/io/split/android/client/service/ServiceFactory.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/ServiceFactory.java
rename to main/src/main/java/io/split/android/client/service/ServiceFactory.java
diff --git a/src/main/java/io/split/android/client/service/SplitApiFacade.java b/main/src/main/java/io/split/android/client/service/SplitApiFacade.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/SplitApiFacade.java
rename to main/src/main/java/io/split/android/client/service/SplitApiFacade.java
diff --git a/src/main/java/io/split/android/client/service/attributes/AttributeTaskFactory.java b/main/src/main/java/io/split/android/client/service/attributes/AttributeTaskFactory.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/attributes/AttributeTaskFactory.java
rename to main/src/main/java/io/split/android/client/service/attributes/AttributeTaskFactory.java
diff --git a/src/main/java/io/split/android/client/service/attributes/AttributeTaskFactoryImpl.java b/main/src/main/java/io/split/android/client/service/attributes/AttributeTaskFactoryImpl.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/attributes/AttributeTaskFactoryImpl.java
rename to main/src/main/java/io/split/android/client/service/attributes/AttributeTaskFactoryImpl.java
diff --git a/src/main/java/io/split/android/client/service/attributes/ClearAttributesInPersistentStorageTask.java b/main/src/main/java/io/split/android/client/service/attributes/ClearAttributesInPersistentStorageTask.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/attributes/ClearAttributesInPersistentStorageTask.java
rename to main/src/main/java/io/split/android/client/service/attributes/ClearAttributesInPersistentStorageTask.java
diff --git a/src/main/java/io/split/android/client/service/attributes/LoadAttributesTask.java b/main/src/main/java/io/split/android/client/service/attributes/LoadAttributesTask.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/attributes/LoadAttributesTask.java
rename to main/src/main/java/io/split/android/client/service/attributes/LoadAttributesTask.java
diff --git a/src/main/java/io/split/android/client/service/attributes/UpdateAttributesInPersistentStorageTask.java b/main/src/main/java/io/split/android/client/service/attributes/UpdateAttributesInPersistentStorageTask.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/attributes/UpdateAttributesInPersistentStorageTask.java
rename to main/src/main/java/io/split/android/client/service/attributes/UpdateAttributesInPersistentStorageTask.java
diff --git a/src/main/java/io/split/android/client/service/events/EventsRecorderTask.java b/main/src/main/java/io/split/android/client/service/events/EventsRecorderTask.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/events/EventsRecorderTask.java
rename to main/src/main/java/io/split/android/client/service/events/EventsRecorderTask.java
diff --git a/src/main/java/io/split/android/client/service/events/EventsRecorderTaskConfig.java b/main/src/main/java/io/split/android/client/service/events/EventsRecorderTaskConfig.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/events/EventsRecorderTaskConfig.java
rename to main/src/main/java/io/split/android/client/service/events/EventsRecorderTaskConfig.java
diff --git a/src/main/java/io/split/android/client/service/events/EventsRequestBodySerializer.java b/main/src/main/java/io/split/android/client/service/events/EventsRequestBodySerializer.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/events/EventsRequestBodySerializer.java
rename to main/src/main/java/io/split/android/client/service/events/EventsRequestBodySerializer.java
diff --git a/src/main/java/io/split/android/client/service/executor/SplitBaseTaskExecutor.java b/main/src/main/java/io/split/android/client/service/executor/SplitBaseTaskExecutor.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/executor/SplitBaseTaskExecutor.java
rename to main/src/main/java/io/split/android/client/service/executor/SplitBaseTaskExecutor.java
diff --git a/src/main/java/io/split/android/client/service/executor/SplitClientEventTaskExecutor.java b/main/src/main/java/io/split/android/client/service/executor/SplitClientEventTaskExecutor.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/executor/SplitClientEventTaskExecutor.java
rename to main/src/main/java/io/split/android/client/service/executor/SplitClientEventTaskExecutor.java
diff --git a/src/main/java/io/split/android/client/service/executor/SplitSingleThreadTaskExecutor.java b/main/src/main/java/io/split/android/client/service/executor/SplitSingleThreadTaskExecutor.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/executor/SplitSingleThreadTaskExecutor.java
rename to main/src/main/java/io/split/android/client/service/executor/SplitSingleThreadTaskExecutor.java
diff --git a/src/main/java/io/split/android/client/service/executor/SplitTask.java b/main/src/main/java/io/split/android/client/service/executor/SplitTask.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/executor/SplitTask.java
rename to main/src/main/java/io/split/android/client/service/executor/SplitTask.java
diff --git a/src/main/java/io/split/android/client/service/executor/SplitTaskBatchItem.java b/main/src/main/java/io/split/android/client/service/executor/SplitTaskBatchItem.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/executor/SplitTaskBatchItem.java
rename to main/src/main/java/io/split/android/client/service/executor/SplitTaskBatchItem.java
diff --git a/src/main/java/io/split/android/client/service/executor/SplitTaskBatchWrapper.java b/main/src/main/java/io/split/android/client/service/executor/SplitTaskBatchWrapper.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/executor/SplitTaskBatchWrapper.java
rename to main/src/main/java/io/split/android/client/service/executor/SplitTaskBatchWrapper.java
diff --git a/src/main/java/io/split/android/client/service/executor/SplitTaskExecutionInfo.java b/main/src/main/java/io/split/android/client/service/executor/SplitTaskExecutionInfo.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/executor/SplitTaskExecutionInfo.java
rename to main/src/main/java/io/split/android/client/service/executor/SplitTaskExecutionInfo.java
diff --git a/src/main/java/io/split/android/client/service/executor/SplitTaskExecutionListener.java b/main/src/main/java/io/split/android/client/service/executor/SplitTaskExecutionListener.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/executor/SplitTaskExecutionListener.java
rename to main/src/main/java/io/split/android/client/service/executor/SplitTaskExecutionListener.java
diff --git a/src/main/java/io/split/android/client/service/executor/SplitTaskExecutionStatus.java b/main/src/main/java/io/split/android/client/service/executor/SplitTaskExecutionStatus.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/executor/SplitTaskExecutionStatus.java
rename to main/src/main/java/io/split/android/client/service/executor/SplitTaskExecutionStatus.java
diff --git a/src/main/java/io/split/android/client/service/executor/SplitTaskExecutor.java b/main/src/main/java/io/split/android/client/service/executor/SplitTaskExecutor.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/executor/SplitTaskExecutor.java
rename to main/src/main/java/io/split/android/client/service/executor/SplitTaskExecutor.java
diff --git a/src/main/java/io/split/android/client/service/executor/SplitTaskExecutorImpl.java b/main/src/main/java/io/split/android/client/service/executor/SplitTaskExecutorImpl.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/executor/SplitTaskExecutorImpl.java
rename to main/src/main/java/io/split/android/client/service/executor/SplitTaskExecutorImpl.java
diff --git a/src/main/java/io/split/android/client/service/executor/SplitTaskFactory.java b/main/src/main/java/io/split/android/client/service/executor/SplitTaskFactory.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/executor/SplitTaskFactory.java
rename to main/src/main/java/io/split/android/client/service/executor/SplitTaskFactory.java
diff --git a/src/main/java/io/split/android/client/service/executor/SplitTaskFactoryImpl.java b/main/src/main/java/io/split/android/client/service/executor/SplitTaskFactoryImpl.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/executor/SplitTaskFactoryImpl.java
rename to main/src/main/java/io/split/android/client/service/executor/SplitTaskFactoryImpl.java
diff --git a/src/main/java/io/split/android/client/service/executor/SplitTaskSerialWrapper.java b/main/src/main/java/io/split/android/client/service/executor/SplitTaskSerialWrapper.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/executor/SplitTaskSerialWrapper.java
rename to main/src/main/java/io/split/android/client/service/executor/SplitTaskSerialWrapper.java
diff --git a/src/main/java/io/split/android/client/service/executor/SplitTaskType.java b/main/src/main/java/io/split/android/client/service/executor/SplitTaskType.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/executor/SplitTaskType.java
rename to main/src/main/java/io/split/android/client/service/executor/SplitTaskType.java
diff --git a/src/main/java/io/split/android/client/service/executor/TaskWrapper.java b/main/src/main/java/io/split/android/client/service/executor/TaskWrapper.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/executor/TaskWrapper.java
rename to main/src/main/java/io/split/android/client/service/executor/TaskWrapper.java
diff --git a/src/main/java/io/split/android/client/service/executor/ThreadFactoryBuilder.java b/main/src/main/java/io/split/android/client/service/executor/ThreadFactoryBuilder.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/executor/ThreadFactoryBuilder.java
rename to main/src/main/java/io/split/android/client/service/executor/ThreadFactoryBuilder.java
diff --git a/src/main/java/io/split/android/client/service/executor/parallel/SplitDeferredTaskItem.java b/main/src/main/java/io/split/android/client/service/executor/parallel/SplitDeferredTaskItem.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/executor/parallel/SplitDeferredTaskItem.java
rename to main/src/main/java/io/split/android/client/service/executor/parallel/SplitDeferredTaskItem.java
diff --git a/src/main/java/io/split/android/client/service/executor/parallel/SplitParallelTaskExecutor.java b/main/src/main/java/io/split/android/client/service/executor/parallel/SplitParallelTaskExecutor.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/executor/parallel/SplitParallelTaskExecutor.java
rename to main/src/main/java/io/split/android/client/service/executor/parallel/SplitParallelTaskExecutor.java
diff --git a/src/main/java/io/split/android/client/service/executor/parallel/SplitParallelTaskExecutorFactory.java b/main/src/main/java/io/split/android/client/service/executor/parallel/SplitParallelTaskExecutorFactory.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/executor/parallel/SplitParallelTaskExecutorFactory.java
rename to main/src/main/java/io/split/android/client/service/executor/parallel/SplitParallelTaskExecutorFactory.java
diff --git a/src/main/java/io/split/android/client/service/executor/parallel/SplitParallelTaskExecutorFactoryImpl.java b/main/src/main/java/io/split/android/client/service/executor/parallel/SplitParallelTaskExecutorFactoryImpl.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/executor/parallel/SplitParallelTaskExecutorFactoryImpl.java
rename to main/src/main/java/io/split/android/client/service/executor/parallel/SplitParallelTaskExecutorFactoryImpl.java
diff --git a/src/main/java/io/split/android/client/service/executor/parallel/SplitParallelTaskExecutorImpl.java b/main/src/main/java/io/split/android/client/service/executor/parallel/SplitParallelTaskExecutorImpl.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/executor/parallel/SplitParallelTaskExecutorImpl.java
rename to main/src/main/java/io/split/android/client/service/executor/parallel/SplitParallelTaskExecutorImpl.java
diff --git a/src/main/java/io/split/android/client/service/http/HttpFetcher.java b/main/src/main/java/io/split/android/client/service/http/HttpFetcher.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/http/HttpFetcher.java
rename to main/src/main/java/io/split/android/client/service/http/HttpFetcher.java
diff --git a/src/main/java/io/split/android/client/service/http/HttpFetcherException.java b/main/src/main/java/io/split/android/client/service/http/HttpFetcherException.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/http/HttpFetcherException.java
rename to main/src/main/java/io/split/android/client/service/http/HttpFetcherException.java
diff --git a/src/main/java/io/split/android/client/service/http/HttpFetcherImpl.java b/main/src/main/java/io/split/android/client/service/http/HttpFetcherImpl.java
similarity index 98%
rename from src/main/java/io/split/android/client/service/http/HttpFetcherImpl.java
rename to main/src/main/java/io/split/android/client/service/http/HttpFetcherImpl.java
index d45e36f6f..b952ab5c8 100644
--- a/src/main/java/io/split/android/client/service/http/HttpFetcherImpl.java
+++ b/main/src/main/java/io/split/android/client/service/http/HttpFetcherImpl.java
@@ -8,7 +8,7 @@
import java.net.URI;
import java.util.Map;
-import io.split.android.android_client.BuildConfig;
+import io.split.android.client.main.BuildConfig;
import io.split.android.client.ServiceEndpoints;
import io.split.android.client.network.HttpClient;
import io.split.android.client.network.HttpException;
diff --git a/src/main/java/io/split/android/client/service/http/HttpGeneralException.java b/main/src/main/java/io/split/android/client/service/http/HttpGeneralException.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/http/HttpGeneralException.java
rename to main/src/main/java/io/split/android/client/service/http/HttpGeneralException.java
diff --git a/src/main/java/io/split/android/client/service/http/HttpRecorder.java b/main/src/main/java/io/split/android/client/service/http/HttpRecorder.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/http/HttpRecorder.java
rename to main/src/main/java/io/split/android/client/service/http/HttpRecorder.java
diff --git a/src/main/java/io/split/android/client/service/http/HttpRecorderException.java b/main/src/main/java/io/split/android/client/service/http/HttpRecorderException.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/http/HttpRecorderException.java
rename to main/src/main/java/io/split/android/client/service/http/HttpRecorderException.java
diff --git a/src/main/java/io/split/android/client/service/http/HttpRecorderImpl.java b/main/src/main/java/io/split/android/client/service/http/HttpRecorderImpl.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/http/HttpRecorderImpl.java
rename to main/src/main/java/io/split/android/client/service/http/HttpRecorderImpl.java
diff --git a/src/main/java/io/split/android/client/service/http/HttpRequestBodySerializer.java b/main/src/main/java/io/split/android/client/service/http/HttpRequestBodySerializer.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/http/HttpRequestBodySerializer.java
rename to main/src/main/java/io/split/android/client/service/http/HttpRequestBodySerializer.java
diff --git a/src/main/java/io/split/android/client/service/http/HttpResponseParser.java b/main/src/main/java/io/split/android/client/service/http/HttpResponseParser.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/http/HttpResponseParser.java
rename to main/src/main/java/io/split/android/client/service/http/HttpResponseParser.java
diff --git a/src/main/java/io/split/android/client/service/http/HttpResponseParserException.java b/main/src/main/java/io/split/android/client/service/http/HttpResponseParserException.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/http/HttpResponseParserException.java
rename to main/src/main/java/io/split/android/client/service/http/HttpResponseParserException.java
diff --git a/src/main/java/io/split/android/client/service/http/HttpSseAuthTokenFetcher.java b/main/src/main/java/io/split/android/client/service/http/HttpSseAuthTokenFetcher.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/http/HttpSseAuthTokenFetcher.java
rename to main/src/main/java/io/split/android/client/service/http/HttpSseAuthTokenFetcher.java
diff --git a/src/main/java/io/split/android/client/service/http/HttpStatus.java b/main/src/main/java/io/split/android/client/service/http/HttpStatus.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/http/HttpStatus.java
rename to main/src/main/java/io/split/android/client/service/http/HttpStatus.java
diff --git a/src/main/java/io/split/android/client/service/http/mysegments/MySegmentsFetcherFactory.java b/main/src/main/java/io/split/android/client/service/http/mysegments/MySegmentsFetcherFactory.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/http/mysegments/MySegmentsFetcherFactory.java
rename to main/src/main/java/io/split/android/client/service/http/mysegments/MySegmentsFetcherFactory.java
diff --git a/src/main/java/io/split/android/client/service/http/mysegments/MySegmentsFetcherFactoryImpl.java b/main/src/main/java/io/split/android/client/service/http/mysegments/MySegmentsFetcherFactoryImpl.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/http/mysegments/MySegmentsFetcherFactoryImpl.java
rename to main/src/main/java/io/split/android/client/service/http/mysegments/MySegmentsFetcherFactoryImpl.java
diff --git a/src/main/java/io/split/android/client/service/impressions/ImpressionHasher.java b/main/src/main/java/io/split/android/client/service/impressions/ImpressionHasher.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/impressions/ImpressionHasher.java
rename to main/src/main/java/io/split/android/client/service/impressions/ImpressionHasher.java
diff --git a/src/main/java/io/split/android/client/service/impressions/ImpressionManager.java b/main/src/main/java/io/split/android/client/service/impressions/ImpressionManager.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/impressions/ImpressionManager.java
rename to main/src/main/java/io/split/android/client/service/impressions/ImpressionManager.java
diff --git a/src/main/java/io/split/android/client/service/impressions/ImpressionManagerConfig.java b/main/src/main/java/io/split/android/client/service/impressions/ImpressionManagerConfig.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/impressions/ImpressionManagerConfig.java
rename to main/src/main/java/io/split/android/client/service/impressions/ImpressionManagerConfig.java
diff --git a/src/main/java/io/split/android/client/service/impressions/ImpressionManagerRetryTimerProvider.java b/main/src/main/java/io/split/android/client/service/impressions/ImpressionManagerRetryTimerProvider.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/impressions/ImpressionManagerRetryTimerProvider.java
rename to main/src/main/java/io/split/android/client/service/impressions/ImpressionManagerRetryTimerProvider.java
diff --git a/src/main/java/io/split/android/client/service/impressions/ImpressionManagerRetryTimerProviderImpl.java b/main/src/main/java/io/split/android/client/service/impressions/ImpressionManagerRetryTimerProviderImpl.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/impressions/ImpressionManagerRetryTimerProviderImpl.java
rename to main/src/main/java/io/split/android/client/service/impressions/ImpressionManagerRetryTimerProviderImpl.java
diff --git a/src/main/java/io/split/android/client/service/impressions/ImpressionUtils.java b/main/src/main/java/io/split/android/client/service/impressions/ImpressionUtils.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/impressions/ImpressionUtils.java
rename to main/src/main/java/io/split/android/client/service/impressions/ImpressionUtils.java
diff --git a/src/main/java/io/split/android/client/service/impressions/ImpressionsCount.java b/main/src/main/java/io/split/android/client/service/impressions/ImpressionsCount.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/impressions/ImpressionsCount.java
rename to main/src/main/java/io/split/android/client/service/impressions/ImpressionsCount.java
diff --git a/src/main/java/io/split/android/client/service/impressions/ImpressionsCountPerFeature.java b/main/src/main/java/io/split/android/client/service/impressions/ImpressionsCountPerFeature.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/impressions/ImpressionsCountPerFeature.java
rename to main/src/main/java/io/split/android/client/service/impressions/ImpressionsCountPerFeature.java
diff --git a/src/main/java/io/split/android/client/service/impressions/ImpressionsCountRecorderTask.java b/main/src/main/java/io/split/android/client/service/impressions/ImpressionsCountRecorderTask.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/impressions/ImpressionsCountRecorderTask.java
rename to main/src/main/java/io/split/android/client/service/impressions/ImpressionsCountRecorderTask.java
diff --git a/src/main/java/io/split/android/client/service/impressions/ImpressionsCountRequestBodySerializer.java b/main/src/main/java/io/split/android/client/service/impressions/ImpressionsCountRequestBodySerializer.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/impressions/ImpressionsCountRequestBodySerializer.java
rename to main/src/main/java/io/split/android/client/service/impressions/ImpressionsCountRequestBodySerializer.java
diff --git a/src/main/java/io/split/android/client/service/impressions/ImpressionsCounter.java b/main/src/main/java/io/split/android/client/service/impressions/ImpressionsCounter.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/impressions/ImpressionsCounter.java
rename to main/src/main/java/io/split/android/client/service/impressions/ImpressionsCounter.java
diff --git a/src/main/java/io/split/android/client/service/impressions/ImpressionsMode.java b/main/src/main/java/io/split/android/client/service/impressions/ImpressionsMode.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/impressions/ImpressionsMode.java
rename to main/src/main/java/io/split/android/client/service/impressions/ImpressionsMode.java
diff --git a/src/main/java/io/split/android/client/service/impressions/ImpressionsRecorderTask.java b/main/src/main/java/io/split/android/client/service/impressions/ImpressionsRecorderTask.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/impressions/ImpressionsRecorderTask.java
rename to main/src/main/java/io/split/android/client/service/impressions/ImpressionsRecorderTask.java
diff --git a/src/main/java/io/split/android/client/service/impressions/ImpressionsRecorderTaskConfig.java b/main/src/main/java/io/split/android/client/service/impressions/ImpressionsRecorderTaskConfig.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/impressions/ImpressionsRecorderTaskConfig.java
rename to main/src/main/java/io/split/android/client/service/impressions/ImpressionsRecorderTaskConfig.java
diff --git a/src/main/java/io/split/android/client/service/impressions/ImpressionsRequestBodySerializer.java b/main/src/main/java/io/split/android/client/service/impressions/ImpressionsRequestBodySerializer.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/impressions/ImpressionsRequestBodySerializer.java
rename to main/src/main/java/io/split/android/client/service/impressions/ImpressionsRequestBodySerializer.java
diff --git a/src/main/java/io/split/android/client/service/impressions/ImpressionsTaskFactory.java b/main/src/main/java/io/split/android/client/service/impressions/ImpressionsTaskFactory.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/impressions/ImpressionsTaskFactory.java
rename to main/src/main/java/io/split/android/client/service/impressions/ImpressionsTaskFactory.java
diff --git a/src/main/java/io/split/android/client/service/impressions/KeyImpressionSerializer.java b/main/src/main/java/io/split/android/client/service/impressions/KeyImpressionSerializer.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/impressions/KeyImpressionSerializer.java
rename to main/src/main/java/io/split/android/client/service/impressions/KeyImpressionSerializer.java
diff --git a/src/main/java/io/split/android/client/service/impressions/MemoizedSupplier.java b/main/src/main/java/io/split/android/client/service/impressions/MemoizedSupplier.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/impressions/MemoizedSupplier.java
rename to main/src/main/java/io/split/android/client/service/impressions/MemoizedSupplier.java
diff --git a/src/main/java/io/split/android/client/service/impressions/SaveImpressionsCountTask.java b/main/src/main/java/io/split/android/client/service/impressions/SaveImpressionsCountTask.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/impressions/SaveImpressionsCountTask.java
rename to main/src/main/java/io/split/android/client/service/impressions/SaveImpressionsCountTask.java
diff --git a/src/main/java/io/split/android/client/service/impressions/StrategyImpressionManager.java b/main/src/main/java/io/split/android/client/service/impressions/StrategyImpressionManager.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/impressions/StrategyImpressionManager.java
rename to main/src/main/java/io/split/android/client/service/impressions/StrategyImpressionManager.java
diff --git a/src/main/java/io/split/android/client/service/impressions/observer/ImpressionsObserver.java b/main/src/main/java/io/split/android/client/service/impressions/observer/ImpressionsObserver.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/impressions/observer/ImpressionsObserver.java
rename to main/src/main/java/io/split/android/client/service/impressions/observer/ImpressionsObserver.java
diff --git a/src/main/java/io/split/android/client/service/impressions/observer/ImpressionsObserverCache.java b/main/src/main/java/io/split/android/client/service/impressions/observer/ImpressionsObserverCache.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/impressions/observer/ImpressionsObserverCache.java
rename to main/src/main/java/io/split/android/client/service/impressions/observer/ImpressionsObserverCache.java
diff --git a/src/main/java/io/split/android/client/service/impressions/observer/ImpressionsObserverCacheImpl.java b/main/src/main/java/io/split/android/client/service/impressions/observer/ImpressionsObserverCacheImpl.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/impressions/observer/ImpressionsObserverCacheImpl.java
rename to main/src/main/java/io/split/android/client/service/impressions/observer/ImpressionsObserverCacheImpl.java
diff --git a/src/main/java/io/split/android/client/service/impressions/observer/ImpressionsObserverImpl.java b/main/src/main/java/io/split/android/client/service/impressions/observer/ImpressionsObserverImpl.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/impressions/observer/ImpressionsObserverImpl.java
rename to main/src/main/java/io/split/android/client/service/impressions/observer/ImpressionsObserverImpl.java
diff --git a/src/main/java/io/split/android/client/service/impressions/observer/ListenableLruCache.java b/main/src/main/java/io/split/android/client/service/impressions/observer/ListenableLruCache.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/impressions/observer/ListenableLruCache.java
rename to main/src/main/java/io/split/android/client/service/impressions/observer/ListenableLruCache.java
diff --git a/src/main/java/io/split/android/client/service/impressions/observer/PeriodicPersistenceTask.java b/main/src/main/java/io/split/android/client/service/impressions/observer/PeriodicPersistenceTask.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/impressions/observer/PeriodicPersistenceTask.java
rename to main/src/main/java/io/split/android/client/service/impressions/observer/PeriodicPersistenceTask.java
diff --git a/src/main/java/io/split/android/client/service/impressions/observer/PersistentImpressionsObserverCacheStorage.java b/main/src/main/java/io/split/android/client/service/impressions/observer/PersistentImpressionsObserverCacheStorage.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/impressions/observer/PersistentImpressionsObserverCacheStorage.java
rename to main/src/main/java/io/split/android/client/service/impressions/observer/PersistentImpressionsObserverCacheStorage.java
diff --git a/src/main/java/io/split/android/client/service/impressions/observer/SqlitePersistentImpressionsObserverCacheStorage.java b/main/src/main/java/io/split/android/client/service/impressions/observer/SqlitePersistentImpressionsObserverCacheStorage.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/impressions/observer/SqlitePersistentImpressionsObserverCacheStorage.java
rename to main/src/main/java/io/split/android/client/service/impressions/observer/SqlitePersistentImpressionsObserverCacheStorage.java
diff --git a/src/main/java/io/split/android/client/service/impressions/strategy/DebugStrategy.java b/main/src/main/java/io/split/android/client/service/impressions/strategy/DebugStrategy.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/impressions/strategy/DebugStrategy.java
rename to main/src/main/java/io/split/android/client/service/impressions/strategy/DebugStrategy.java
diff --git a/src/main/java/io/split/android/client/service/impressions/strategy/DebugTracker.java b/main/src/main/java/io/split/android/client/service/impressions/strategy/DebugTracker.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/impressions/strategy/DebugTracker.java
rename to main/src/main/java/io/split/android/client/service/impressions/strategy/DebugTracker.java
diff --git a/src/main/java/io/split/android/client/service/impressions/strategy/ImpressionStrategyConfig.java b/main/src/main/java/io/split/android/client/service/impressions/strategy/ImpressionStrategyConfig.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/impressions/strategy/ImpressionStrategyConfig.java
rename to main/src/main/java/io/split/android/client/service/impressions/strategy/ImpressionStrategyConfig.java
diff --git a/src/main/java/io/split/android/client/service/impressions/strategy/ImpressionStrategyProvider.java b/main/src/main/java/io/split/android/client/service/impressions/strategy/ImpressionStrategyProvider.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/impressions/strategy/ImpressionStrategyProvider.java
rename to main/src/main/java/io/split/android/client/service/impressions/strategy/ImpressionStrategyProvider.java
diff --git a/src/main/java/io/split/android/client/service/impressions/strategy/NoneStrategy.java b/main/src/main/java/io/split/android/client/service/impressions/strategy/NoneStrategy.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/impressions/strategy/NoneStrategy.java
rename to main/src/main/java/io/split/android/client/service/impressions/strategy/NoneStrategy.java
diff --git a/src/main/java/io/split/android/client/service/impressions/strategy/NoneTracker.java b/main/src/main/java/io/split/android/client/service/impressions/strategy/NoneTracker.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/impressions/strategy/NoneTracker.java
rename to main/src/main/java/io/split/android/client/service/impressions/strategy/NoneTracker.java
diff --git a/src/main/java/io/split/android/client/service/impressions/strategy/OptimizedStrategy.java b/main/src/main/java/io/split/android/client/service/impressions/strategy/OptimizedStrategy.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/impressions/strategy/OptimizedStrategy.java
rename to main/src/main/java/io/split/android/client/service/impressions/strategy/OptimizedStrategy.java
diff --git a/src/main/java/io/split/android/client/service/impressions/strategy/OptimizedTracker.java b/main/src/main/java/io/split/android/client/service/impressions/strategy/OptimizedTracker.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/impressions/strategy/OptimizedTracker.java
rename to main/src/main/java/io/split/android/client/service/impressions/strategy/OptimizedTracker.java
diff --git a/src/main/java/io/split/android/client/service/impressions/strategy/PeriodicTracker.java b/main/src/main/java/io/split/android/client/service/impressions/strategy/PeriodicTracker.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/impressions/strategy/PeriodicTracker.java
rename to main/src/main/java/io/split/android/client/service/impressions/strategy/PeriodicTracker.java
diff --git a/src/main/java/io/split/android/client/service/impressions/strategy/ProcessStrategy.java b/main/src/main/java/io/split/android/client/service/impressions/strategy/ProcessStrategy.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/impressions/strategy/ProcessStrategy.java
rename to main/src/main/java/io/split/android/client/service/impressions/strategy/ProcessStrategy.java
diff --git a/src/main/java/io/split/android/client/service/impressions/strategy/Utils.java b/main/src/main/java/io/split/android/client/service/impressions/strategy/Utils.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/impressions/strategy/Utils.java
rename to main/src/main/java/io/split/android/client/service/impressions/strategy/Utils.java
diff --git a/src/main/java/io/split/android/client/service/impressions/unique/MTK.java b/main/src/main/java/io/split/android/client/service/impressions/unique/MTK.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/impressions/unique/MTK.java
rename to main/src/main/java/io/split/android/client/service/impressions/unique/MTK.java
diff --git a/src/main/java/io/split/android/client/service/impressions/unique/MTKRequestBodySerializer.java b/main/src/main/java/io/split/android/client/service/impressions/unique/MTKRequestBodySerializer.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/impressions/unique/MTKRequestBodySerializer.java
rename to main/src/main/java/io/split/android/client/service/impressions/unique/MTKRequestBodySerializer.java
diff --git a/src/main/java/io/split/android/client/service/impressions/unique/SaveUniqueImpressionsTask.java b/main/src/main/java/io/split/android/client/service/impressions/unique/SaveUniqueImpressionsTask.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/impressions/unique/SaveUniqueImpressionsTask.java
rename to main/src/main/java/io/split/android/client/service/impressions/unique/SaveUniqueImpressionsTask.java
diff --git a/src/main/java/io/split/android/client/service/impressions/unique/UniqueKey.java b/main/src/main/java/io/split/android/client/service/impressions/unique/UniqueKey.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/impressions/unique/UniqueKey.java
rename to main/src/main/java/io/split/android/client/service/impressions/unique/UniqueKey.java
diff --git a/src/main/java/io/split/android/client/service/impressions/unique/UniqueKeysRecorderTask.java b/main/src/main/java/io/split/android/client/service/impressions/unique/UniqueKeysRecorderTask.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/impressions/unique/UniqueKeysRecorderTask.java
rename to main/src/main/java/io/split/android/client/service/impressions/unique/UniqueKeysRecorderTask.java
diff --git a/src/main/java/io/split/android/client/service/impressions/unique/UniqueKeysRecorderTaskConfig.java b/main/src/main/java/io/split/android/client/service/impressions/unique/UniqueKeysRecorderTaskConfig.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/impressions/unique/UniqueKeysRecorderTaskConfig.java
rename to main/src/main/java/io/split/android/client/service/impressions/unique/UniqueKeysRecorderTaskConfig.java
diff --git a/src/main/java/io/split/android/client/service/impressions/unique/UniqueKeysTracker.java b/main/src/main/java/io/split/android/client/service/impressions/unique/UniqueKeysTracker.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/impressions/unique/UniqueKeysTracker.java
rename to main/src/main/java/io/split/android/client/service/impressions/unique/UniqueKeysTracker.java
diff --git a/src/main/java/io/split/android/client/service/impressions/unique/UniqueKeysTrackerImpl.java b/main/src/main/java/io/split/android/client/service/impressions/unique/UniqueKeysTrackerImpl.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/impressions/unique/UniqueKeysTrackerImpl.java
rename to main/src/main/java/io/split/android/client/service/impressions/unique/UniqueKeysTrackerImpl.java
diff --git a/src/main/java/io/split/android/client/service/mysegments/AllSegmentsResponseParser.java b/main/src/main/java/io/split/android/client/service/mysegments/AllSegmentsResponseParser.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/mysegments/AllSegmentsResponseParser.java
rename to main/src/main/java/io/split/android/client/service/mysegments/AllSegmentsResponseParser.java
diff --git a/src/main/java/io/split/android/client/service/mysegments/LoadMySegmentsTask.java b/main/src/main/java/io/split/android/client/service/mysegments/LoadMySegmentsTask.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/mysegments/LoadMySegmentsTask.java
rename to main/src/main/java/io/split/android/client/service/mysegments/LoadMySegmentsTask.java
diff --git a/src/main/java/io/split/android/client/service/mysegments/LoadMySegmentsTaskConfig.java b/main/src/main/java/io/split/android/client/service/mysegments/LoadMySegmentsTaskConfig.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/mysegments/LoadMySegmentsTaskConfig.java
rename to main/src/main/java/io/split/android/client/service/mysegments/LoadMySegmentsTaskConfig.java
diff --git a/src/main/java/io/split/android/client/service/mysegments/MySegmentUpdateParams.java b/main/src/main/java/io/split/android/client/service/mysegments/MySegmentUpdateParams.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/mysegments/MySegmentUpdateParams.java
rename to main/src/main/java/io/split/android/client/service/mysegments/MySegmentUpdateParams.java
diff --git a/src/main/java/io/split/android/client/service/mysegments/MySegmentsBulkSyncTask.java b/main/src/main/java/io/split/android/client/service/mysegments/MySegmentsBulkSyncTask.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/mysegments/MySegmentsBulkSyncTask.java
rename to main/src/main/java/io/split/android/client/service/mysegments/MySegmentsBulkSyncTask.java
diff --git a/src/main/java/io/split/android/client/service/mysegments/MySegmentsSyncTask.java b/main/src/main/java/io/split/android/client/service/mysegments/MySegmentsSyncTask.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/mysegments/MySegmentsSyncTask.java
rename to main/src/main/java/io/split/android/client/service/mysegments/MySegmentsSyncTask.java
diff --git a/src/main/java/io/split/android/client/service/mysegments/MySegmentsSyncTaskConfig.java b/main/src/main/java/io/split/android/client/service/mysegments/MySegmentsSyncTaskConfig.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/mysegments/MySegmentsSyncTaskConfig.java
rename to main/src/main/java/io/split/android/client/service/mysegments/MySegmentsSyncTaskConfig.java
diff --git a/src/main/java/io/split/android/client/service/mysegments/MySegmentsTaskFactory.java b/main/src/main/java/io/split/android/client/service/mysegments/MySegmentsTaskFactory.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/mysegments/MySegmentsTaskFactory.java
rename to main/src/main/java/io/split/android/client/service/mysegments/MySegmentsTaskFactory.java
diff --git a/src/main/java/io/split/android/client/service/mysegments/MySegmentsTaskFactoryConfiguration.java b/main/src/main/java/io/split/android/client/service/mysegments/MySegmentsTaskFactoryConfiguration.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/mysegments/MySegmentsTaskFactoryConfiguration.java
rename to main/src/main/java/io/split/android/client/service/mysegments/MySegmentsTaskFactoryConfiguration.java
diff --git a/src/main/java/io/split/android/client/service/mysegments/MySegmentsTaskFactoryImpl.java b/main/src/main/java/io/split/android/client/service/mysegments/MySegmentsTaskFactoryImpl.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/mysegments/MySegmentsTaskFactoryImpl.java
rename to main/src/main/java/io/split/android/client/service/mysegments/MySegmentsTaskFactoryImpl.java
diff --git a/src/main/java/io/split/android/client/service/mysegments/MySegmentsTaskFactoryProvider.java b/main/src/main/java/io/split/android/client/service/mysegments/MySegmentsTaskFactoryProvider.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/mysegments/MySegmentsTaskFactoryProvider.java
rename to main/src/main/java/io/split/android/client/service/mysegments/MySegmentsTaskFactoryProvider.java
diff --git a/src/main/java/io/split/android/client/service/mysegments/MySegmentsTaskFactoryProviderImpl.java b/main/src/main/java/io/split/android/client/service/mysegments/MySegmentsTaskFactoryProviderImpl.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/mysegments/MySegmentsTaskFactoryProviderImpl.java
rename to main/src/main/java/io/split/android/client/service/mysegments/MySegmentsTaskFactoryProviderImpl.java
diff --git a/src/main/java/io/split/android/client/service/mysegments/MySegmentsUpdateTask.java b/main/src/main/java/io/split/android/client/service/mysegments/MySegmentsUpdateTask.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/mysegments/MySegmentsUpdateTask.java
rename to main/src/main/java/io/split/android/client/service/mysegments/MySegmentsUpdateTask.java
diff --git a/src/main/java/io/split/android/client/service/mysegments/MySegmentsUpdateTaskConfig.java b/main/src/main/java/io/split/android/client/service/mysegments/MySegmentsUpdateTaskConfig.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/mysegments/MySegmentsUpdateTaskConfig.java
rename to main/src/main/java/io/split/android/client/service/mysegments/MySegmentsUpdateTaskConfig.java
diff --git a/src/main/java/io/split/android/client/service/rules/LoadRuleBasedSegmentsTask.java b/main/src/main/java/io/split/android/client/service/rules/LoadRuleBasedSegmentsTask.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/rules/LoadRuleBasedSegmentsTask.java
rename to main/src/main/java/io/split/android/client/service/rules/LoadRuleBasedSegmentsTask.java
diff --git a/src/main/java/io/split/android/client/service/rules/ProcessedRuleBasedSegmentChange.java b/main/src/main/java/io/split/android/client/service/rules/ProcessedRuleBasedSegmentChange.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/rules/ProcessedRuleBasedSegmentChange.java
rename to main/src/main/java/io/split/android/client/service/rules/ProcessedRuleBasedSegmentChange.java
diff --git a/src/main/java/io/split/android/client/service/rules/RuleBasedSegmentChangeProcessor.java b/main/src/main/java/io/split/android/client/service/rules/RuleBasedSegmentChangeProcessor.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/rules/RuleBasedSegmentChangeProcessor.java
rename to main/src/main/java/io/split/android/client/service/rules/RuleBasedSegmentChangeProcessor.java
diff --git a/src/main/java/io/split/android/client/service/rules/RuleBasedSegmentInPlaceUpdateTask.java b/main/src/main/java/io/split/android/client/service/rules/RuleBasedSegmentInPlaceUpdateTask.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/rules/RuleBasedSegmentInPlaceUpdateTask.java
rename to main/src/main/java/io/split/android/client/service/rules/RuleBasedSegmentInPlaceUpdateTask.java
diff --git a/src/main/java/io/split/android/client/service/rules/TargetingRulesResponseParser.java b/main/src/main/java/io/split/android/client/service/rules/TargetingRulesResponseParser.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/rules/TargetingRulesResponseParser.java
rename to main/src/main/java/io/split/android/client/service/rules/TargetingRulesResponseParser.java
diff --git a/src/main/java/io/split/android/client/service/splits/FeatureFlagProcessStrategy.java b/main/src/main/java/io/split/android/client/service/splits/FeatureFlagProcessStrategy.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/splits/FeatureFlagProcessStrategy.java
rename to main/src/main/java/io/split/android/client/service/splits/FeatureFlagProcessStrategy.java
diff --git a/src/main/java/io/split/android/client/service/splits/FilterSplitsInCacheTask.java b/main/src/main/java/io/split/android/client/service/splits/FilterSplitsInCacheTask.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/splits/FilterSplitsInCacheTask.java
rename to main/src/main/java/io/split/android/client/service/splits/FilterSplitsInCacheTask.java
diff --git a/src/main/java/io/split/android/client/service/splits/LoadSplitsTask.java b/main/src/main/java/io/split/android/client/service/splits/LoadSplitsTask.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/splits/LoadSplitsTask.java
rename to main/src/main/java/io/split/android/client/service/splits/LoadSplitsTask.java
diff --git a/src/main/java/io/split/android/client/service/splits/OutdatedSplitProxyHandler.java b/main/src/main/java/io/split/android/client/service/splits/OutdatedSplitProxyHandler.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/splits/OutdatedSplitProxyHandler.java
rename to main/src/main/java/io/split/android/client/service/splits/OutdatedSplitProxyHandler.java
diff --git a/src/main/java/io/split/android/client/service/splits/RuleBasedSegmentInPlaceUpdateTask.java b/main/src/main/java/io/split/android/client/service/splits/RuleBasedSegmentInPlaceUpdateTask.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/splits/RuleBasedSegmentInPlaceUpdateTask.java
rename to main/src/main/java/io/split/android/client/service/splits/RuleBasedSegmentInPlaceUpdateTask.java
diff --git a/src/main/java/io/split/android/client/service/splits/SplitChangeProcessor.java b/main/src/main/java/io/split/android/client/service/splits/SplitChangeProcessor.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/splits/SplitChangeProcessor.java
rename to main/src/main/java/io/split/android/client/service/splits/SplitChangeProcessor.java
diff --git a/src/main/java/io/split/android/client/service/splits/SplitChangeResponseParser.java b/main/src/main/java/io/split/android/client/service/splits/SplitChangeResponseParser.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/splits/SplitChangeResponseParser.java
rename to main/src/main/java/io/split/android/client/service/splits/SplitChangeResponseParser.java
diff --git a/src/main/java/io/split/android/client/service/splits/SplitInPlaceUpdateTask.java b/main/src/main/java/io/split/android/client/service/splits/SplitInPlaceUpdateTask.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/splits/SplitInPlaceUpdateTask.java
rename to main/src/main/java/io/split/android/client/service/splits/SplitInPlaceUpdateTask.java
diff --git a/src/main/java/io/split/android/client/service/splits/SplitKillTask.java b/main/src/main/java/io/split/android/client/service/splits/SplitKillTask.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/splits/SplitKillTask.java
rename to main/src/main/java/io/split/android/client/service/splits/SplitKillTask.java
diff --git a/src/main/java/io/split/android/client/service/splits/SplitsSyncHelper.java b/main/src/main/java/io/split/android/client/service/splits/SplitsSyncHelper.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/splits/SplitsSyncHelper.java
rename to main/src/main/java/io/split/android/client/service/splits/SplitsSyncHelper.java
diff --git a/src/main/java/io/split/android/client/service/splits/SplitsSyncTask.java b/main/src/main/java/io/split/android/client/service/splits/SplitsSyncTask.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/splits/SplitsSyncTask.java
rename to main/src/main/java/io/split/android/client/service/splits/SplitsSyncTask.java
diff --git a/src/main/java/io/split/android/client/service/splits/SplitsUpdateTask.java b/main/src/main/java/io/split/android/client/service/splits/SplitsUpdateTask.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/splits/SplitsUpdateTask.java
rename to main/src/main/java/io/split/android/client/service/splits/SplitsUpdateTask.java
diff --git a/src/main/java/io/split/android/client/service/splits/TargetingRulesCache.java b/main/src/main/java/io/split/android/client/service/splits/TargetingRulesCache.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/splits/TargetingRulesCache.java
rename to main/src/main/java/io/split/android/client/service/splits/TargetingRulesCache.java
diff --git a/src/main/java/io/split/android/client/service/sseauthentication/SseAuthenticationResponseParser.java b/main/src/main/java/io/split/android/client/service/sseauthentication/SseAuthenticationResponseParser.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/sseauthentication/SseAuthenticationResponseParser.java
rename to main/src/main/java/io/split/android/client/service/sseauthentication/SseAuthenticationResponseParser.java
diff --git a/src/main/java/io/split/android/client/service/sseclient/BackoffCounter.java b/main/src/main/java/io/split/android/client/service/sseclient/BackoffCounter.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/sseclient/BackoffCounter.java
rename to main/src/main/java/io/split/android/client/service/sseclient/BackoffCounter.java
diff --git a/src/main/java/io/split/android/client/service/sseclient/EventStreamParser.java b/main/src/main/java/io/split/android/client/service/sseclient/EventStreamParser.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/sseclient/EventStreamParser.java
rename to main/src/main/java/io/split/android/client/service/sseclient/EventStreamParser.java
diff --git a/src/main/java/io/split/android/client/service/sseclient/FixedIntervalBackoffCounter.java b/main/src/main/java/io/split/android/client/service/sseclient/FixedIntervalBackoffCounter.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/sseclient/FixedIntervalBackoffCounter.java
rename to main/src/main/java/io/split/android/client/service/sseclient/FixedIntervalBackoffCounter.java
diff --git a/src/main/java/io/split/android/client/service/sseclient/InvalidJwtTokenException.java b/main/src/main/java/io/split/android/client/service/sseclient/InvalidJwtTokenException.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/sseclient/InvalidJwtTokenException.java
rename to main/src/main/java/io/split/android/client/service/sseclient/InvalidJwtTokenException.java
diff --git a/src/main/java/io/split/android/client/service/sseclient/ReconnectBackoffCounter.java b/main/src/main/java/io/split/android/client/service/sseclient/ReconnectBackoffCounter.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/sseclient/ReconnectBackoffCounter.java
rename to main/src/main/java/io/split/android/client/service/sseclient/ReconnectBackoffCounter.java
diff --git a/src/main/java/io/split/android/client/service/sseclient/SseAuthToken.java b/main/src/main/java/io/split/android/client/service/sseclient/SseAuthToken.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/sseclient/SseAuthToken.java
rename to main/src/main/java/io/split/android/client/service/sseclient/SseAuthToken.java
diff --git a/src/main/java/io/split/android/client/service/sseclient/SseAuthenticationResponse.java b/main/src/main/java/io/split/android/client/service/sseclient/SseAuthenticationResponse.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/sseclient/SseAuthenticationResponse.java
rename to main/src/main/java/io/split/android/client/service/sseclient/SseAuthenticationResponse.java
diff --git a/src/main/java/io/split/android/client/service/sseclient/SseJwtParser.java b/main/src/main/java/io/split/android/client/service/sseclient/SseJwtParser.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/sseclient/SseJwtParser.java
rename to main/src/main/java/io/split/android/client/service/sseclient/SseJwtParser.java
diff --git a/src/main/java/io/split/android/client/service/sseclient/SseJwtToken.java b/main/src/main/java/io/split/android/client/service/sseclient/SseJwtToken.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/sseclient/SseJwtToken.java
rename to main/src/main/java/io/split/android/client/service/sseclient/SseJwtToken.java
diff --git a/src/main/java/io/split/android/client/service/sseclient/feedbackchannel/BroadcastedEventListener.java b/main/src/main/java/io/split/android/client/service/sseclient/feedbackchannel/BroadcastedEventListener.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/sseclient/feedbackchannel/BroadcastedEventListener.java
rename to main/src/main/java/io/split/android/client/service/sseclient/feedbackchannel/BroadcastedEventListener.java
diff --git a/src/main/java/io/split/android/client/service/sseclient/feedbackchannel/DelayStatusEvent.java b/main/src/main/java/io/split/android/client/service/sseclient/feedbackchannel/DelayStatusEvent.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/sseclient/feedbackchannel/DelayStatusEvent.java
rename to main/src/main/java/io/split/android/client/service/sseclient/feedbackchannel/DelayStatusEvent.java
diff --git a/src/main/java/io/split/android/client/service/sseclient/feedbackchannel/PushManagerEventBroadcaster.java b/main/src/main/java/io/split/android/client/service/sseclient/feedbackchannel/PushManagerEventBroadcaster.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/sseclient/feedbackchannel/PushManagerEventBroadcaster.java
rename to main/src/main/java/io/split/android/client/service/sseclient/feedbackchannel/PushManagerEventBroadcaster.java
diff --git a/src/main/java/io/split/android/client/service/sseclient/feedbackchannel/PushStatusEvent.java b/main/src/main/java/io/split/android/client/service/sseclient/feedbackchannel/PushStatusEvent.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/sseclient/feedbackchannel/PushStatusEvent.java
rename to main/src/main/java/io/split/android/client/service/sseclient/feedbackchannel/PushStatusEvent.java
diff --git a/src/main/java/io/split/android/client/service/sseclient/notifications/ControlNotification.java b/main/src/main/java/io/split/android/client/service/sseclient/notifications/ControlNotification.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/sseclient/notifications/ControlNotification.java
rename to main/src/main/java/io/split/android/client/service/sseclient/notifications/ControlNotification.java
diff --git a/src/main/java/io/split/android/client/service/sseclient/notifications/HashingAlgorithm.java b/main/src/main/java/io/split/android/client/service/sseclient/notifications/HashingAlgorithm.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/sseclient/notifications/HashingAlgorithm.java
rename to main/src/main/java/io/split/android/client/service/sseclient/notifications/HashingAlgorithm.java
diff --git a/src/main/java/io/split/android/client/service/sseclient/notifications/IncomingNotification.java b/main/src/main/java/io/split/android/client/service/sseclient/notifications/IncomingNotification.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/sseclient/notifications/IncomingNotification.java
rename to main/src/main/java/io/split/android/client/service/sseclient/notifications/IncomingNotification.java
diff --git a/src/main/java/io/split/android/client/service/sseclient/notifications/IncomingNotificationType.java b/main/src/main/java/io/split/android/client/service/sseclient/notifications/IncomingNotificationType.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/sseclient/notifications/IncomingNotificationType.java
rename to main/src/main/java/io/split/android/client/service/sseclient/notifications/IncomingNotificationType.java
diff --git a/src/main/java/io/split/android/client/service/sseclient/notifications/InstantUpdateChangeNotification.java b/main/src/main/java/io/split/android/client/service/sseclient/notifications/InstantUpdateChangeNotification.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/sseclient/notifications/InstantUpdateChangeNotification.java
rename to main/src/main/java/io/split/android/client/service/sseclient/notifications/InstantUpdateChangeNotification.java
diff --git a/src/main/java/io/split/android/client/service/sseclient/notifications/KeyList.java b/main/src/main/java/io/split/android/client/service/sseclient/notifications/KeyList.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/sseclient/notifications/KeyList.java
rename to main/src/main/java/io/split/android/client/service/sseclient/notifications/KeyList.java
diff --git a/src/main/java/io/split/android/client/service/sseclient/notifications/MembershipNotification.java b/main/src/main/java/io/split/android/client/service/sseclient/notifications/MembershipNotification.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/sseclient/notifications/MembershipNotification.java
rename to main/src/main/java/io/split/android/client/service/sseclient/notifications/MembershipNotification.java
diff --git a/src/main/java/io/split/android/client/service/sseclient/notifications/MySegmentUpdateStrategy.java b/main/src/main/java/io/split/android/client/service/sseclient/notifications/MySegmentUpdateStrategy.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/sseclient/notifications/MySegmentUpdateStrategy.java
rename to main/src/main/java/io/split/android/client/service/sseclient/notifications/MySegmentUpdateStrategy.java
diff --git a/src/main/java/io/split/android/client/service/sseclient/notifications/MySegmentsV2PayloadDecoder.java b/main/src/main/java/io/split/android/client/service/sseclient/notifications/MySegmentsV2PayloadDecoder.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/sseclient/notifications/MySegmentsV2PayloadDecoder.java
rename to main/src/main/java/io/split/android/client/service/sseclient/notifications/MySegmentsV2PayloadDecoder.java
diff --git a/src/main/java/io/split/android/client/service/sseclient/notifications/NotificationParser.java b/main/src/main/java/io/split/android/client/service/sseclient/notifications/NotificationParser.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/sseclient/notifications/NotificationParser.java
rename to main/src/main/java/io/split/android/client/service/sseclient/notifications/NotificationParser.java
diff --git a/src/main/java/io/split/android/client/service/sseclient/notifications/NotificationProcessor.java b/main/src/main/java/io/split/android/client/service/sseclient/notifications/NotificationProcessor.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/sseclient/notifications/NotificationProcessor.java
rename to main/src/main/java/io/split/android/client/service/sseclient/notifications/NotificationProcessor.java
diff --git a/src/main/java/io/split/android/client/service/sseclient/notifications/NotificationType.java b/main/src/main/java/io/split/android/client/service/sseclient/notifications/NotificationType.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/sseclient/notifications/NotificationType.java
rename to main/src/main/java/io/split/android/client/service/sseclient/notifications/NotificationType.java
diff --git a/src/main/java/io/split/android/client/service/sseclient/notifications/OccupancyNotification.java b/main/src/main/java/io/split/android/client/service/sseclient/notifications/OccupancyNotification.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/sseclient/notifications/OccupancyNotification.java
rename to main/src/main/java/io/split/android/client/service/sseclient/notifications/OccupancyNotification.java
diff --git a/src/main/java/io/split/android/client/service/sseclient/notifications/RawNotification.java b/main/src/main/java/io/split/android/client/service/sseclient/notifications/RawNotification.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/sseclient/notifications/RawNotification.java
rename to main/src/main/java/io/split/android/client/service/sseclient/notifications/RawNotification.java
diff --git a/src/main/java/io/split/android/client/service/sseclient/notifications/RuleBasedSegmentChangeNotification.java b/main/src/main/java/io/split/android/client/service/sseclient/notifications/RuleBasedSegmentChangeNotification.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/sseclient/notifications/RuleBasedSegmentChangeNotification.java
rename to main/src/main/java/io/split/android/client/service/sseclient/notifications/RuleBasedSegmentChangeNotification.java
diff --git a/src/main/java/io/split/android/client/service/sseclient/notifications/SplitKillNotification.java b/main/src/main/java/io/split/android/client/service/sseclient/notifications/SplitKillNotification.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/sseclient/notifications/SplitKillNotification.java
rename to main/src/main/java/io/split/android/client/service/sseclient/notifications/SplitKillNotification.java
diff --git a/src/main/java/io/split/android/client/service/sseclient/notifications/SplitsChangeNotification.java b/main/src/main/java/io/split/android/client/service/sseclient/notifications/SplitsChangeNotification.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/sseclient/notifications/SplitsChangeNotification.java
rename to main/src/main/java/io/split/android/client/service/sseclient/notifications/SplitsChangeNotification.java
diff --git a/src/main/java/io/split/android/client/service/sseclient/notifications/StreamingError.java b/main/src/main/java/io/split/android/client/service/sseclient/notifications/StreamingError.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/sseclient/notifications/StreamingError.java
rename to main/src/main/java/io/split/android/client/service/sseclient/notifications/StreamingError.java
diff --git a/src/main/java/io/split/android/client/service/sseclient/notifications/memberships/MembershipsNotificationProcessor.java b/main/src/main/java/io/split/android/client/service/sseclient/notifications/memberships/MembershipsNotificationProcessor.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/sseclient/notifications/memberships/MembershipsNotificationProcessor.java
rename to main/src/main/java/io/split/android/client/service/sseclient/notifications/memberships/MembershipsNotificationProcessor.java
diff --git a/src/main/java/io/split/android/client/service/sseclient/notifications/memberships/MembershipsNotificationProcessorImpl.java b/main/src/main/java/io/split/android/client/service/sseclient/notifications/memberships/MembershipsNotificationProcessorImpl.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/sseclient/notifications/memberships/MembershipsNotificationProcessorImpl.java
rename to main/src/main/java/io/split/android/client/service/sseclient/notifications/memberships/MembershipsNotificationProcessorImpl.java
diff --git a/src/main/java/io/split/android/client/service/sseclient/notifications/mysegments/MembershipsNotificationProcessorFactory.java b/main/src/main/java/io/split/android/client/service/sseclient/notifications/mysegments/MembershipsNotificationProcessorFactory.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/sseclient/notifications/mysegments/MembershipsNotificationProcessorFactory.java
rename to main/src/main/java/io/split/android/client/service/sseclient/notifications/mysegments/MembershipsNotificationProcessorFactory.java
diff --git a/src/main/java/io/split/android/client/service/sseclient/notifications/mysegments/MembershipsNotificationProcessorFactoryImpl.java b/main/src/main/java/io/split/android/client/service/sseclient/notifications/mysegments/MembershipsNotificationProcessorFactoryImpl.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/sseclient/notifications/mysegments/MembershipsNotificationProcessorFactoryImpl.java
rename to main/src/main/java/io/split/android/client/service/sseclient/notifications/mysegments/MembershipsNotificationProcessorFactoryImpl.java
diff --git a/src/main/java/io/split/android/client/service/sseclient/notifications/mysegments/MySegmentsNotificationProcessorConfiguration.java b/main/src/main/java/io/split/android/client/service/sseclient/notifications/mysegments/MySegmentsNotificationProcessorConfiguration.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/sseclient/notifications/mysegments/MySegmentsNotificationProcessorConfiguration.java
rename to main/src/main/java/io/split/android/client/service/sseclient/notifications/mysegments/MySegmentsNotificationProcessorConfiguration.java
diff --git a/src/main/java/io/split/android/client/service/sseclient/notifications/mysegments/MySegmentsNotificationProcessorRegistry.java b/main/src/main/java/io/split/android/client/service/sseclient/notifications/mysegments/MySegmentsNotificationProcessorRegistry.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/sseclient/notifications/mysegments/MySegmentsNotificationProcessorRegistry.java
rename to main/src/main/java/io/split/android/client/service/sseclient/notifications/mysegments/MySegmentsNotificationProcessorRegistry.java
diff --git a/src/main/java/io/split/android/client/service/sseclient/notifications/mysegments/SyncDelayCalculator.java b/main/src/main/java/io/split/android/client/service/sseclient/notifications/mysegments/SyncDelayCalculator.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/sseclient/notifications/mysegments/SyncDelayCalculator.java
rename to main/src/main/java/io/split/android/client/service/sseclient/notifications/mysegments/SyncDelayCalculator.java
diff --git a/src/main/java/io/split/android/client/service/sseclient/notifications/mysegments/SyncDelayCalculatorImpl.java b/main/src/main/java/io/split/android/client/service/sseclient/notifications/mysegments/SyncDelayCalculatorImpl.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/sseclient/notifications/mysegments/SyncDelayCalculatorImpl.java
rename to main/src/main/java/io/split/android/client/service/sseclient/notifications/mysegments/SyncDelayCalculatorImpl.java
diff --git a/src/main/java/io/split/android/client/service/sseclient/reactor/MySegmentsUpdateWorker.java b/main/src/main/java/io/split/android/client/service/sseclient/reactor/MySegmentsUpdateWorker.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/sseclient/reactor/MySegmentsUpdateWorker.java
rename to main/src/main/java/io/split/android/client/service/sseclient/reactor/MySegmentsUpdateWorker.java
diff --git a/src/main/java/io/split/android/client/service/sseclient/reactor/MySegmentsUpdateWorkerRegistry.java b/main/src/main/java/io/split/android/client/service/sseclient/reactor/MySegmentsUpdateWorkerRegistry.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/sseclient/reactor/MySegmentsUpdateWorkerRegistry.java
rename to main/src/main/java/io/split/android/client/service/sseclient/reactor/MySegmentsUpdateWorkerRegistry.java
diff --git a/src/main/java/io/split/android/client/service/sseclient/reactor/MySegmentsUpdateWorkerRegistryImpl.java b/main/src/main/java/io/split/android/client/service/sseclient/reactor/MySegmentsUpdateWorkerRegistryImpl.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/sseclient/reactor/MySegmentsUpdateWorkerRegistryImpl.java
rename to main/src/main/java/io/split/android/client/service/sseclient/reactor/MySegmentsUpdateWorkerRegistryImpl.java
diff --git a/src/main/java/io/split/android/client/service/sseclient/reactor/SplitUpdatesWorker.java b/main/src/main/java/io/split/android/client/service/sseclient/reactor/SplitUpdatesWorker.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/sseclient/reactor/SplitUpdatesWorker.java
rename to main/src/main/java/io/split/android/client/service/sseclient/reactor/SplitUpdatesWorker.java
diff --git a/src/main/java/io/split/android/client/service/sseclient/reactor/UpdateWorker.java b/main/src/main/java/io/split/android/client/service/sseclient/reactor/UpdateWorker.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/sseclient/reactor/UpdateWorker.java
rename to main/src/main/java/io/split/android/client/service/sseclient/reactor/UpdateWorker.java
diff --git a/src/main/java/io/split/android/client/service/sseclient/sseclient/BackoffCounterTimer.java b/main/src/main/java/io/split/android/client/service/sseclient/sseclient/BackoffCounterTimer.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/sseclient/sseclient/BackoffCounterTimer.java
rename to main/src/main/java/io/split/android/client/service/sseclient/sseclient/BackoffCounterTimer.java
diff --git a/src/main/java/io/split/android/client/service/sseclient/sseclient/NotificationManagerKeeper.java b/main/src/main/java/io/split/android/client/service/sseclient/sseclient/NotificationManagerKeeper.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/sseclient/sseclient/NotificationManagerKeeper.java
rename to main/src/main/java/io/split/android/client/service/sseclient/sseclient/NotificationManagerKeeper.java
diff --git a/src/main/java/io/split/android/client/service/sseclient/sseclient/PushNotificationManager.java b/main/src/main/java/io/split/android/client/service/sseclient/sseclient/PushNotificationManager.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/sseclient/sseclient/PushNotificationManager.java
rename to main/src/main/java/io/split/android/client/service/sseclient/sseclient/PushNotificationManager.java
diff --git a/src/main/java/io/split/android/client/service/sseclient/sseclient/PushNotificationManagerDeferredStartTask.java b/main/src/main/java/io/split/android/client/service/sseclient/sseclient/PushNotificationManagerDeferredStartTask.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/sseclient/sseclient/PushNotificationManagerDeferredStartTask.java
rename to main/src/main/java/io/split/android/client/service/sseclient/sseclient/PushNotificationManagerDeferredStartTask.java
diff --git a/src/main/java/io/split/android/client/service/sseclient/sseclient/RetryBackoffCounterTimer.java b/main/src/main/java/io/split/android/client/service/sseclient/sseclient/RetryBackoffCounterTimer.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/sseclient/sseclient/RetryBackoffCounterTimer.java
rename to main/src/main/java/io/split/android/client/service/sseclient/sseclient/RetryBackoffCounterTimer.java
diff --git a/src/main/java/io/split/android/client/service/sseclient/sseclient/SseAuthenticationResult.java b/main/src/main/java/io/split/android/client/service/sseclient/sseclient/SseAuthenticationResult.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/sseclient/sseclient/SseAuthenticationResult.java
rename to main/src/main/java/io/split/android/client/service/sseclient/sseclient/SseAuthenticationResult.java
diff --git a/src/main/java/io/split/android/client/service/sseclient/sseclient/SseAuthenticator.java b/main/src/main/java/io/split/android/client/service/sseclient/sseclient/SseAuthenticator.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/sseclient/sseclient/SseAuthenticator.java
rename to main/src/main/java/io/split/android/client/service/sseclient/sseclient/SseAuthenticator.java
diff --git a/src/main/java/io/split/android/client/service/sseclient/sseclient/SseClient.java b/main/src/main/java/io/split/android/client/service/sseclient/sseclient/SseClient.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/sseclient/sseclient/SseClient.java
rename to main/src/main/java/io/split/android/client/service/sseclient/sseclient/SseClient.java
diff --git a/src/main/java/io/split/android/client/service/sseclient/sseclient/SseClientImpl.java b/main/src/main/java/io/split/android/client/service/sseclient/sseclient/SseClientImpl.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/sseclient/sseclient/SseClientImpl.java
rename to main/src/main/java/io/split/android/client/service/sseclient/sseclient/SseClientImpl.java
diff --git a/src/main/java/io/split/android/client/service/sseclient/sseclient/SseDisconnectionTimer.java b/main/src/main/java/io/split/android/client/service/sseclient/sseclient/SseDisconnectionTimer.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/sseclient/sseclient/SseDisconnectionTimer.java
rename to main/src/main/java/io/split/android/client/service/sseclient/sseclient/SseDisconnectionTimer.java
diff --git a/src/main/java/io/split/android/client/service/sseclient/sseclient/SseHandler.java b/main/src/main/java/io/split/android/client/service/sseclient/sseclient/SseHandler.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/sseclient/sseclient/SseHandler.java
rename to main/src/main/java/io/split/android/client/service/sseclient/sseclient/SseHandler.java
diff --git a/src/main/java/io/split/android/client/service/sseclient/sseclient/SseRefreshTokenTimer.java b/main/src/main/java/io/split/android/client/service/sseclient/sseclient/SseRefreshTokenTimer.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/sseclient/sseclient/SseRefreshTokenTimer.java
rename to main/src/main/java/io/split/android/client/service/sseclient/sseclient/SseRefreshTokenTimer.java
diff --git a/src/main/java/io/split/android/client/service/sseclient/sseclient/StreamingComponents.java b/main/src/main/java/io/split/android/client/service/sseclient/sseclient/StreamingComponents.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/sseclient/sseclient/StreamingComponents.java
rename to main/src/main/java/io/split/android/client/service/sseclient/sseclient/StreamingComponents.java
diff --git a/src/main/java/io/split/android/client/service/synchronizer/FeatureFlagsSynchronizer.java b/main/src/main/java/io/split/android/client/service/synchronizer/FeatureFlagsSynchronizer.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/synchronizer/FeatureFlagsSynchronizer.java
rename to main/src/main/java/io/split/android/client/service/synchronizer/FeatureFlagsSynchronizer.java
diff --git a/src/main/java/io/split/android/client/service/synchronizer/FeatureFlagsSynchronizerImpl.java b/main/src/main/java/io/split/android/client/service/synchronizer/FeatureFlagsSynchronizerImpl.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/synchronizer/FeatureFlagsSynchronizerImpl.java
rename to main/src/main/java/io/split/android/client/service/synchronizer/FeatureFlagsSynchronizerImpl.java
diff --git a/src/main/java/io/split/android/client/service/synchronizer/LoadLocalDataListener.java b/main/src/main/java/io/split/android/client/service/synchronizer/LoadLocalDataListener.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/synchronizer/LoadLocalDataListener.java
rename to main/src/main/java/io/split/android/client/service/synchronizer/LoadLocalDataListener.java
diff --git a/src/main/java/io/split/android/client/service/synchronizer/MySegmentsChangeChecker.java b/main/src/main/java/io/split/android/client/service/synchronizer/MySegmentsChangeChecker.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/synchronizer/MySegmentsChangeChecker.java
rename to main/src/main/java/io/split/android/client/service/synchronizer/MySegmentsChangeChecker.java
diff --git a/src/main/java/io/split/android/client/service/synchronizer/RecorderSyncHelper.java b/main/src/main/java/io/split/android/client/service/synchronizer/RecorderSyncHelper.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/synchronizer/RecorderSyncHelper.java
rename to main/src/main/java/io/split/android/client/service/synchronizer/RecorderSyncHelper.java
diff --git a/src/main/java/io/split/android/client/service/synchronizer/RecorderSyncHelperImpl.java b/main/src/main/java/io/split/android/client/service/synchronizer/RecorderSyncHelperImpl.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/synchronizer/RecorderSyncHelperImpl.java
rename to main/src/main/java/io/split/android/client/service/synchronizer/RecorderSyncHelperImpl.java
diff --git a/src/main/java/io/split/android/client/service/synchronizer/RolloutCacheManager.java b/main/src/main/java/io/split/android/client/service/synchronizer/RolloutCacheManager.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/synchronizer/RolloutCacheManager.java
rename to main/src/main/java/io/split/android/client/service/synchronizer/RolloutCacheManager.java
diff --git a/src/main/java/io/split/android/client/service/synchronizer/RolloutCacheManagerImpl.java b/main/src/main/java/io/split/android/client/service/synchronizer/RolloutCacheManagerImpl.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/synchronizer/RolloutCacheManagerImpl.java
rename to main/src/main/java/io/split/android/client/service/synchronizer/RolloutCacheManagerImpl.java
diff --git a/src/main/java/io/split/android/client/service/synchronizer/SplitsChangeChecker.java b/main/src/main/java/io/split/android/client/service/synchronizer/SplitsChangeChecker.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/synchronizer/SplitsChangeChecker.java
rename to main/src/main/java/io/split/android/client/service/synchronizer/SplitsChangeChecker.java
diff --git a/src/main/java/io/split/android/client/service/synchronizer/SyncGuardian.java b/main/src/main/java/io/split/android/client/service/synchronizer/SyncGuardian.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/synchronizer/SyncGuardian.java
rename to main/src/main/java/io/split/android/client/service/synchronizer/SyncGuardian.java
diff --git a/src/main/java/io/split/android/client/service/synchronizer/SyncGuardianImpl.java b/main/src/main/java/io/split/android/client/service/synchronizer/SyncGuardianImpl.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/synchronizer/SyncGuardianImpl.java
rename to main/src/main/java/io/split/android/client/service/synchronizer/SyncGuardianImpl.java
diff --git a/src/main/java/io/split/android/client/service/synchronizer/SyncManager.java b/main/src/main/java/io/split/android/client/service/synchronizer/SyncManager.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/synchronizer/SyncManager.java
rename to main/src/main/java/io/split/android/client/service/synchronizer/SyncManager.java
diff --git a/src/main/java/io/split/android/client/service/synchronizer/SyncManagerImpl.java b/main/src/main/java/io/split/android/client/service/synchronizer/SyncManagerImpl.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/synchronizer/SyncManagerImpl.java
rename to main/src/main/java/io/split/android/client/service/synchronizer/SyncManagerImpl.java
diff --git a/src/main/java/io/split/android/client/service/synchronizer/Synchronizer.java b/main/src/main/java/io/split/android/client/service/synchronizer/Synchronizer.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/synchronizer/Synchronizer.java
rename to main/src/main/java/io/split/android/client/service/synchronizer/Synchronizer.java
diff --git a/src/main/java/io/split/android/client/service/synchronizer/SynchronizerImpl.java b/main/src/main/java/io/split/android/client/service/synchronizer/SynchronizerImpl.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/synchronizer/SynchronizerImpl.java
rename to main/src/main/java/io/split/android/client/service/synchronizer/SynchronizerImpl.java
diff --git a/src/main/java/io/split/android/client/service/synchronizer/SynchronizerSpy.java b/main/src/main/java/io/split/android/client/service/synchronizer/SynchronizerSpy.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/synchronizer/SynchronizerSpy.java
rename to main/src/main/java/io/split/android/client/service/synchronizer/SynchronizerSpy.java
diff --git a/src/main/java/io/split/android/client/service/synchronizer/ThreadUtils.java b/main/src/main/java/io/split/android/client/service/synchronizer/ThreadUtils.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/synchronizer/ThreadUtils.java
rename to main/src/main/java/io/split/android/client/service/synchronizer/ThreadUtils.java
diff --git a/src/main/java/io/split/android/client/service/synchronizer/WorkManagerWrapper.java b/main/src/main/java/io/split/android/client/service/synchronizer/WorkManagerWrapper.java
similarity index 99%
rename from src/main/java/io/split/android/client/service/synchronizer/WorkManagerWrapper.java
rename to main/src/main/java/io/split/android/client/service/synchronizer/WorkManagerWrapper.java
index ca3761bca..2b86786fd 100644
--- a/src/main/java/io/split/android/client/service/synchronizer/WorkManagerWrapper.java
+++ b/main/src/main/java/io/split/android/client/service/synchronizer/WorkManagerWrapper.java
@@ -22,7 +22,7 @@
import java.util.Set;
import java.util.concurrent.TimeUnit;
-import io.split.android.android_client.BuildConfig;
+import io.split.android.client.main.BuildConfig;
import io.split.android.client.SplitClientConfig;
import io.split.android.client.SplitFilter;
import io.split.android.client.network.CertificatePin;
diff --git a/src/main/java/io/split/android/client/service/synchronizer/attributes/AttributesSynchronizer.java b/main/src/main/java/io/split/android/client/service/synchronizer/attributes/AttributesSynchronizer.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/synchronizer/attributes/AttributesSynchronizer.java
rename to main/src/main/java/io/split/android/client/service/synchronizer/attributes/AttributesSynchronizer.java
diff --git a/src/main/java/io/split/android/client/service/synchronizer/attributes/AttributesSynchronizerFactory.java b/main/src/main/java/io/split/android/client/service/synchronizer/attributes/AttributesSynchronizerFactory.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/synchronizer/attributes/AttributesSynchronizerFactory.java
rename to main/src/main/java/io/split/android/client/service/synchronizer/attributes/AttributesSynchronizerFactory.java
diff --git a/src/main/java/io/split/android/client/service/synchronizer/attributes/AttributesSynchronizerFactoryImpl.java b/main/src/main/java/io/split/android/client/service/synchronizer/attributes/AttributesSynchronizerFactoryImpl.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/synchronizer/attributes/AttributesSynchronizerFactoryImpl.java
rename to main/src/main/java/io/split/android/client/service/synchronizer/attributes/AttributesSynchronizerFactoryImpl.java
diff --git a/src/main/java/io/split/android/client/service/synchronizer/attributes/AttributesSynchronizerImpl.java b/main/src/main/java/io/split/android/client/service/synchronizer/attributes/AttributesSynchronizerImpl.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/synchronizer/attributes/AttributesSynchronizerImpl.java
rename to main/src/main/java/io/split/android/client/service/synchronizer/attributes/AttributesSynchronizerImpl.java
diff --git a/src/main/java/io/split/android/client/service/synchronizer/attributes/AttributesSynchronizerRegistry.java b/main/src/main/java/io/split/android/client/service/synchronizer/attributes/AttributesSynchronizerRegistry.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/synchronizer/attributes/AttributesSynchronizerRegistry.java
rename to main/src/main/java/io/split/android/client/service/synchronizer/attributes/AttributesSynchronizerRegistry.java
diff --git a/src/main/java/io/split/android/client/service/synchronizer/attributes/AttributesSynchronizerRegistryImpl.java b/main/src/main/java/io/split/android/client/service/synchronizer/attributes/AttributesSynchronizerRegistryImpl.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/synchronizer/attributes/AttributesSynchronizerRegistryImpl.java
rename to main/src/main/java/io/split/android/client/service/synchronizer/attributes/AttributesSynchronizerRegistryImpl.java
diff --git a/src/main/java/io/split/android/client/service/synchronizer/mysegments/MySegmentsBackgroundSyncScheduleTask.java b/main/src/main/java/io/split/android/client/service/synchronizer/mysegments/MySegmentsBackgroundSyncScheduleTask.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/synchronizer/mysegments/MySegmentsBackgroundSyncScheduleTask.java
rename to main/src/main/java/io/split/android/client/service/synchronizer/mysegments/MySegmentsBackgroundSyncScheduleTask.java
diff --git a/src/main/java/io/split/android/client/service/synchronizer/mysegments/MySegmentsSynchronizer.java b/main/src/main/java/io/split/android/client/service/synchronizer/mysegments/MySegmentsSynchronizer.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/synchronizer/mysegments/MySegmentsSynchronizer.java
rename to main/src/main/java/io/split/android/client/service/synchronizer/mysegments/MySegmentsSynchronizer.java
diff --git a/src/main/java/io/split/android/client/service/synchronizer/mysegments/MySegmentsSynchronizerFactory.java b/main/src/main/java/io/split/android/client/service/synchronizer/mysegments/MySegmentsSynchronizerFactory.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/synchronizer/mysegments/MySegmentsSynchronizerFactory.java
rename to main/src/main/java/io/split/android/client/service/synchronizer/mysegments/MySegmentsSynchronizerFactory.java
diff --git a/src/main/java/io/split/android/client/service/synchronizer/mysegments/MySegmentsSynchronizerFactoryImpl.java b/main/src/main/java/io/split/android/client/service/synchronizer/mysegments/MySegmentsSynchronizerFactoryImpl.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/synchronizer/mysegments/MySegmentsSynchronizerFactoryImpl.java
rename to main/src/main/java/io/split/android/client/service/synchronizer/mysegments/MySegmentsSynchronizerFactoryImpl.java
diff --git a/src/main/java/io/split/android/client/service/synchronizer/mysegments/MySegmentsSynchronizerImpl.java b/main/src/main/java/io/split/android/client/service/synchronizer/mysegments/MySegmentsSynchronizerImpl.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/synchronizer/mysegments/MySegmentsSynchronizerImpl.java
rename to main/src/main/java/io/split/android/client/service/synchronizer/mysegments/MySegmentsSynchronizerImpl.java
diff --git a/src/main/java/io/split/android/client/service/synchronizer/mysegments/MySegmentsSynchronizerRegistry.java b/main/src/main/java/io/split/android/client/service/synchronizer/mysegments/MySegmentsSynchronizerRegistry.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/synchronizer/mysegments/MySegmentsSynchronizerRegistry.java
rename to main/src/main/java/io/split/android/client/service/synchronizer/mysegments/MySegmentsSynchronizerRegistry.java
diff --git a/src/main/java/io/split/android/client/service/synchronizer/mysegments/MySegmentsSynchronizerRegistryImpl.java b/main/src/main/java/io/split/android/client/service/synchronizer/mysegments/MySegmentsSynchronizerRegistryImpl.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/synchronizer/mysegments/MySegmentsSynchronizerRegistryImpl.java
rename to main/src/main/java/io/split/android/client/service/synchronizer/mysegments/MySegmentsSynchronizerRegistryImpl.java
diff --git a/src/main/java/io/split/android/client/service/synchronizer/mysegments/MySegmentsWorkManagerWrapper.java b/main/src/main/java/io/split/android/client/service/synchronizer/mysegments/MySegmentsWorkManagerWrapper.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/synchronizer/mysegments/MySegmentsWorkManagerWrapper.java
rename to main/src/main/java/io/split/android/client/service/synchronizer/mysegments/MySegmentsWorkManagerWrapper.java
diff --git a/src/main/java/io/split/android/client/service/telemetry/TelemetryConfigRecorderTask.java b/main/src/main/java/io/split/android/client/service/telemetry/TelemetryConfigRecorderTask.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/telemetry/TelemetryConfigRecorderTask.java
rename to main/src/main/java/io/split/android/client/service/telemetry/TelemetryConfigRecorderTask.java
diff --git a/src/main/java/io/split/android/client/service/telemetry/TelemetryStatsRecorderTask.java b/main/src/main/java/io/split/android/client/service/telemetry/TelemetryStatsRecorderTask.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/telemetry/TelemetryStatsRecorderTask.java
rename to main/src/main/java/io/split/android/client/service/telemetry/TelemetryStatsRecorderTask.java
diff --git a/src/main/java/io/split/android/client/service/telemetry/TelemetryTaskFactory.java b/main/src/main/java/io/split/android/client/service/telemetry/TelemetryTaskFactory.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/telemetry/TelemetryTaskFactory.java
rename to main/src/main/java/io/split/android/client/service/telemetry/TelemetryTaskFactory.java
diff --git a/src/main/java/io/split/android/client/service/telemetry/TelemetryTaskFactoryImpl.java b/main/src/main/java/io/split/android/client/service/telemetry/TelemetryTaskFactoryImpl.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/telemetry/TelemetryTaskFactoryImpl.java
rename to main/src/main/java/io/split/android/client/service/telemetry/TelemetryTaskFactoryImpl.java
diff --git a/src/main/java/io/split/android/client/service/workmanager/BaseSegmentsSyncWorker.java b/main/src/main/java/io/split/android/client/service/workmanager/BaseSegmentsSyncWorker.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/workmanager/BaseSegmentsSyncWorker.java
rename to main/src/main/java/io/split/android/client/service/workmanager/BaseSegmentsSyncWorker.java
diff --git a/src/main/java/io/split/android/client/service/workmanager/EventsRecorderWorker.java b/main/src/main/java/io/split/android/client/service/workmanager/EventsRecorderWorker.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/workmanager/EventsRecorderWorker.java
rename to main/src/main/java/io/split/android/client/service/workmanager/EventsRecorderWorker.java
diff --git a/src/main/java/io/split/android/client/service/workmanager/HttpClientProvider.java b/main/src/main/java/io/split/android/client/service/workmanager/HttpClientProvider.java
similarity index 99%
rename from src/main/java/io/split/android/client/service/workmanager/HttpClientProvider.java
rename to main/src/main/java/io/split/android/client/service/workmanager/HttpClientProvider.java
index ed4a2cdb2..2d7e7119d 100644
--- a/src/main/java/io/split/android/client/service/workmanager/HttpClientProvider.java
+++ b/main/src/main/java/io/split/android/client/service/workmanager/HttpClientProvider.java
@@ -6,7 +6,7 @@
import java.io.InputStream;
import java.nio.charset.StandardCharsets;
-import io.split.android.android_client.BuildConfig;
+import io.split.android.client.main.BuildConfig;
import io.split.android.client.dtos.HttpProxyDto;
import io.split.android.client.network.BasicCredentialsProvider;
import io.split.android.client.network.BearerCredentialsProvider;
diff --git a/src/main/java/io/split/android/client/service/workmanager/ImpressionsRecorderWorker.java b/main/src/main/java/io/split/android/client/service/workmanager/ImpressionsRecorderWorker.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/workmanager/ImpressionsRecorderWorker.java
rename to main/src/main/java/io/split/android/client/service/workmanager/ImpressionsRecorderWorker.java
diff --git a/src/main/java/io/split/android/client/service/workmanager/MySegmentsSyncWorker.java b/main/src/main/java/io/split/android/client/service/workmanager/MySegmentsSyncWorker.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/workmanager/MySegmentsSyncWorker.java
rename to main/src/main/java/io/split/android/client/service/workmanager/MySegmentsSyncWorker.java
diff --git a/src/main/java/io/split/android/client/service/workmanager/SplitWorker.java b/main/src/main/java/io/split/android/client/service/workmanager/SplitWorker.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/workmanager/SplitWorker.java
rename to main/src/main/java/io/split/android/client/service/workmanager/SplitWorker.java
diff --git a/src/main/java/io/split/android/client/service/workmanager/UniqueKeysRecorderWorker.java b/main/src/main/java/io/split/android/client/service/workmanager/UniqueKeysRecorderWorker.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/workmanager/UniqueKeysRecorderWorker.java
rename to main/src/main/java/io/split/android/client/service/workmanager/UniqueKeysRecorderWorker.java
diff --git a/src/main/java/io/split/android/client/service/workmanager/splits/FetcherProvider.java b/main/src/main/java/io/split/android/client/service/workmanager/splits/FetcherProvider.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/workmanager/splits/FetcherProvider.java
rename to main/src/main/java/io/split/android/client/service/workmanager/splits/FetcherProvider.java
diff --git a/src/main/java/io/split/android/client/service/workmanager/splits/SplitChangeProcessorProvider.java b/main/src/main/java/io/split/android/client/service/workmanager/splits/SplitChangeProcessorProvider.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/workmanager/splits/SplitChangeProcessorProvider.java
rename to main/src/main/java/io/split/android/client/service/workmanager/splits/SplitChangeProcessorProvider.java
diff --git a/src/main/java/io/split/android/client/service/workmanager/splits/SplitsSyncWorker.java b/main/src/main/java/io/split/android/client/service/workmanager/splits/SplitsSyncWorker.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/workmanager/splits/SplitsSyncWorker.java
rename to main/src/main/java/io/split/android/client/service/workmanager/splits/SplitsSyncWorker.java
diff --git a/src/main/java/io/split/android/client/service/workmanager/splits/SplitsSyncWorkerFilterBuilder.java b/main/src/main/java/io/split/android/client/service/workmanager/splits/SplitsSyncWorkerFilterBuilder.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/workmanager/splits/SplitsSyncWorkerFilterBuilder.java
rename to main/src/main/java/io/split/android/client/service/workmanager/splits/SplitsSyncWorkerFilterBuilder.java
diff --git a/src/main/java/io/split/android/client/service/workmanager/splits/SplitsSyncWorkerParams.java b/main/src/main/java/io/split/android/client/service/workmanager/splits/SplitsSyncWorkerParams.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/workmanager/splits/SplitsSyncWorkerParams.java
rename to main/src/main/java/io/split/android/client/service/workmanager/splits/SplitsSyncWorkerParams.java
diff --git a/src/main/java/io/split/android/client/service/workmanager/splits/SplitsSyncWorkerTaskBuilder.java b/main/src/main/java/io/split/android/client/service/workmanager/splits/SplitsSyncWorkerTaskBuilder.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/workmanager/splits/SplitsSyncWorkerTaskBuilder.java
rename to main/src/main/java/io/split/android/client/service/workmanager/splits/SplitsSyncWorkerTaskBuilder.java
diff --git a/src/main/java/io/split/android/client/service/workmanager/splits/StorageProvider.java b/main/src/main/java/io/split/android/client/service/workmanager/splits/StorageProvider.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/workmanager/splits/StorageProvider.java
rename to main/src/main/java/io/split/android/client/service/workmanager/splits/StorageProvider.java
diff --git a/src/main/java/io/split/android/client/service/workmanager/splits/SyncHelperProvider.java b/main/src/main/java/io/split/android/client/service/workmanager/splits/SyncHelperProvider.java
similarity index 100%
rename from src/main/java/io/split/android/client/service/workmanager/splits/SyncHelperProvider.java
rename to main/src/main/java/io/split/android/client/service/workmanager/splits/SyncHelperProvider.java
diff --git a/src/main/java/io/split/android/client/shared/BaseSplitClientContainer.java b/main/src/main/java/io/split/android/client/shared/BaseSplitClientContainer.java
similarity index 100%
rename from src/main/java/io/split/android/client/shared/BaseSplitClientContainer.java
rename to main/src/main/java/io/split/android/client/shared/BaseSplitClientContainer.java
diff --git a/src/main/java/io/split/android/client/shared/ClientComponentsRegister.java b/main/src/main/java/io/split/android/client/shared/ClientComponentsRegister.java
similarity index 100%
rename from src/main/java/io/split/android/client/shared/ClientComponentsRegister.java
rename to main/src/main/java/io/split/android/client/shared/ClientComponentsRegister.java
diff --git a/src/main/java/io/split/android/client/shared/ClientComponentsRegisterImpl.java b/main/src/main/java/io/split/android/client/shared/ClientComponentsRegisterImpl.java
similarity index 100%
rename from src/main/java/io/split/android/client/shared/ClientComponentsRegisterImpl.java
rename to main/src/main/java/io/split/android/client/shared/ClientComponentsRegisterImpl.java
diff --git a/src/main/java/io/split/android/client/shared/SplitClientContainer.java b/main/src/main/java/io/split/android/client/shared/SplitClientContainer.java
similarity index 100%
rename from src/main/java/io/split/android/client/shared/SplitClientContainer.java
rename to main/src/main/java/io/split/android/client/shared/SplitClientContainer.java
diff --git a/src/main/java/io/split/android/client/shared/SplitClientContainerImpl.java b/main/src/main/java/io/split/android/client/shared/SplitClientContainerImpl.java
similarity index 100%
rename from src/main/java/io/split/android/client/shared/SplitClientContainerImpl.java
rename to main/src/main/java/io/split/android/client/shared/SplitClientContainerImpl.java
diff --git a/src/main/java/io/split/android/client/shared/UserConsent.java b/main/src/main/java/io/split/android/client/shared/UserConsent.java
similarity index 100%
rename from src/main/java/io/split/android/client/shared/UserConsent.java
rename to main/src/main/java/io/split/android/client/shared/UserConsent.java
diff --git a/src/main/java/io/split/android/client/storage/RolloutDefinitionsCache.java b/main/src/main/java/io/split/android/client/storage/RolloutDefinitionsCache.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/RolloutDefinitionsCache.java
rename to main/src/main/java/io/split/android/client/storage/RolloutDefinitionsCache.java
diff --git a/src/main/java/io/split/android/client/storage/attributes/AttributesStorage.java b/main/src/main/java/io/split/android/client/storage/attributes/AttributesStorage.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/attributes/AttributesStorage.java
rename to main/src/main/java/io/split/android/client/storage/attributes/AttributesStorage.java
diff --git a/src/main/java/io/split/android/client/storage/attributes/AttributesStorageContainer.java b/main/src/main/java/io/split/android/client/storage/attributes/AttributesStorageContainer.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/attributes/AttributesStorageContainer.java
rename to main/src/main/java/io/split/android/client/storage/attributes/AttributesStorageContainer.java
diff --git a/src/main/java/io/split/android/client/storage/attributes/AttributesStorageContainerImpl.java b/main/src/main/java/io/split/android/client/storage/attributes/AttributesStorageContainerImpl.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/attributes/AttributesStorageContainerImpl.java
rename to main/src/main/java/io/split/android/client/storage/attributes/AttributesStorageContainerImpl.java
diff --git a/src/main/java/io/split/android/client/storage/attributes/AttributesStorageImpl.java b/main/src/main/java/io/split/android/client/storage/attributes/AttributesStorageImpl.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/attributes/AttributesStorageImpl.java
rename to main/src/main/java/io/split/android/client/storage/attributes/AttributesStorageImpl.java
diff --git a/src/main/java/io/split/android/client/storage/attributes/PersistentAttributesStorage.java b/main/src/main/java/io/split/android/client/storage/attributes/PersistentAttributesStorage.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/attributes/PersistentAttributesStorage.java
rename to main/src/main/java/io/split/android/client/storage/attributes/PersistentAttributesStorage.java
diff --git a/src/main/java/io/split/android/client/storage/attributes/SqLitePersistentAttributesStorage.java b/main/src/main/java/io/split/android/client/storage/attributes/SqLitePersistentAttributesStorage.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/attributes/SqLitePersistentAttributesStorage.java
rename to main/src/main/java/io/split/android/client/storage/attributes/SqLitePersistentAttributesStorage.java
diff --git a/src/main/java/io/split/android/client/storage/cipher/ApplyCipherTask.java b/main/src/main/java/io/split/android/client/storage/cipher/ApplyCipherTask.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/cipher/ApplyCipherTask.java
rename to main/src/main/java/io/split/android/client/storage/cipher/ApplyCipherTask.java
diff --git a/src/main/java/io/split/android/client/storage/cipher/CBCCipher.java b/main/src/main/java/io/split/android/client/storage/cipher/CBCCipher.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/cipher/CBCCipher.java
rename to main/src/main/java/io/split/android/client/storage/cipher/CBCCipher.java
diff --git a/src/main/java/io/split/android/client/storage/cipher/CBCCipherProvider.java b/main/src/main/java/io/split/android/client/storage/cipher/CBCCipherProvider.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/cipher/CBCCipherProvider.java
rename to main/src/main/java/io/split/android/client/storage/cipher/CBCCipherProvider.java
diff --git a/src/main/java/io/split/android/client/storage/cipher/CipherProvider.java b/main/src/main/java/io/split/android/client/storage/cipher/CipherProvider.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/cipher/CipherProvider.java
rename to main/src/main/java/io/split/android/client/storage/cipher/CipherProvider.java
diff --git a/src/main/java/io/split/android/client/storage/cipher/DBCipher.java b/main/src/main/java/io/split/android/client/storage/cipher/DBCipher.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/cipher/DBCipher.java
rename to main/src/main/java/io/split/android/client/storage/cipher/DBCipher.java
diff --git a/src/main/java/io/split/android/client/storage/cipher/EncryptionMigrationTask.java b/main/src/main/java/io/split/android/client/storage/cipher/EncryptionMigrationTask.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/cipher/EncryptionMigrationTask.java
rename to main/src/main/java/io/split/android/client/storage/cipher/EncryptionMigrationTask.java
diff --git a/src/main/java/io/split/android/client/storage/cipher/KeyManager.java b/main/src/main/java/io/split/android/client/storage/cipher/KeyManager.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/cipher/KeyManager.java
rename to main/src/main/java/io/split/android/client/storage/cipher/KeyManager.java
diff --git a/src/main/java/io/split/android/client/storage/cipher/NoOpCipher.java b/main/src/main/java/io/split/android/client/storage/cipher/NoOpCipher.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/cipher/NoOpCipher.java
rename to main/src/main/java/io/split/android/client/storage/cipher/NoOpCipher.java
diff --git a/src/main/java/io/split/android/client/storage/cipher/ObjectPool.java b/main/src/main/java/io/split/android/client/storage/cipher/ObjectPool.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/cipher/ObjectPool.java
rename to main/src/main/java/io/split/android/client/storage/cipher/ObjectPool.java
diff --git a/src/main/java/io/split/android/client/storage/cipher/ObjectPoolFactory.java b/main/src/main/java/io/split/android/client/storage/cipher/ObjectPoolFactory.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/cipher/ObjectPoolFactory.java
rename to main/src/main/java/io/split/android/client/storage/cipher/ObjectPoolFactory.java
diff --git a/src/main/java/io/split/android/client/storage/cipher/SplitCipher.java b/main/src/main/java/io/split/android/client/storage/cipher/SplitCipher.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/cipher/SplitCipher.java
rename to main/src/main/java/io/split/android/client/storage/cipher/SplitCipher.java
diff --git a/src/main/java/io/split/android/client/storage/cipher/SplitCipherFactory.java b/main/src/main/java/io/split/android/client/storage/cipher/SplitCipherFactory.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/cipher/SplitCipherFactory.java
rename to main/src/main/java/io/split/android/client/storage/cipher/SplitCipherFactory.java
diff --git a/src/main/java/io/split/android/client/storage/cipher/SplitEncryptionLevel.java b/main/src/main/java/io/split/android/client/storage/cipher/SplitEncryptionLevel.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/cipher/SplitEncryptionLevel.java
rename to main/src/main/java/io/split/android/client/storage/cipher/SplitEncryptionLevel.java
diff --git a/src/main/java/io/split/android/client/storage/cipher/provider/KeyProvider.java b/main/src/main/java/io/split/android/client/storage/cipher/provider/KeyProvider.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/cipher/provider/KeyProvider.java
rename to main/src/main/java/io/split/android/client/storage/cipher/provider/KeyProvider.java
diff --git a/src/main/java/io/split/android/client/storage/cipher/provider/LegacyKeyProvider.java b/main/src/main/java/io/split/android/client/storage/cipher/provider/LegacyKeyProvider.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/cipher/provider/LegacyKeyProvider.java
rename to main/src/main/java/io/split/android/client/storage/cipher/provider/LegacyKeyProvider.java
diff --git a/src/main/java/io/split/android/client/storage/cipher/provider/SecureKeyStorageProvider.java b/main/src/main/java/io/split/android/client/storage/cipher/provider/SecureKeyStorageProvider.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/cipher/provider/SecureKeyStorageProvider.java
rename to main/src/main/java/io/split/android/client/storage/cipher/provider/SecureKeyStorageProvider.java
diff --git a/src/main/java/io/split/android/client/storage/common/InBytesSizable.java b/main/src/main/java/io/split/android/client/storage/common/InBytesSizable.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/common/InBytesSizable.java
rename to main/src/main/java/io/split/android/client/storage/common/InBytesSizable.java
diff --git a/src/main/java/io/split/android/client/storage/common/PersistentStorage.java b/main/src/main/java/io/split/android/client/storage/common/PersistentStorage.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/common/PersistentStorage.java
rename to main/src/main/java/io/split/android/client/storage/common/PersistentStorage.java
diff --git a/src/main/java/io/split/android/client/storage/common/RuleBasedSegmentStorageInitializer.java b/main/src/main/java/io/split/android/client/storage/common/RuleBasedSegmentStorageInitializer.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/common/RuleBasedSegmentStorageInitializer.java
rename to main/src/main/java/io/split/android/client/storage/common/RuleBasedSegmentStorageInitializer.java
diff --git a/src/main/java/io/split/android/client/storage/common/SplitStorageContainer.java b/main/src/main/java/io/split/android/client/storage/common/SplitStorageContainer.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/common/SplitStorageContainer.java
rename to main/src/main/java/io/split/android/client/storage/common/SplitStorageContainer.java
diff --git a/src/main/java/io/split/android/client/storage/common/SqLitePersistentStorage.java b/main/src/main/java/io/split/android/client/storage/common/SqLitePersistentStorage.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/common/SqLitePersistentStorage.java
rename to main/src/main/java/io/split/android/client/storage/common/SqLitePersistentStorage.java
diff --git a/src/main/java/io/split/android/client/storage/common/Storage.java b/main/src/main/java/io/split/android/client/storage/common/Storage.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/common/Storage.java
rename to main/src/main/java/io/split/android/client/storage/common/Storage.java
diff --git a/src/main/java/io/split/android/client/storage/common/StoragePusher.java b/main/src/main/java/io/split/android/client/storage/common/StoragePusher.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/common/StoragePusher.java
rename to main/src/main/java/io/split/android/client/storage/common/StoragePusher.java
diff --git a/src/main/java/io/split/android/client/storage/db/EventDao.java b/main/src/main/java/io/split/android/client/storage/db/EventDao.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/db/EventDao.java
rename to main/src/main/java/io/split/android/client/storage/db/EventDao.java
diff --git a/src/main/java/io/split/android/client/storage/db/EventEntity.java b/main/src/main/java/io/split/android/client/storage/db/EventEntity.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/db/EventEntity.java
rename to main/src/main/java/io/split/android/client/storage/db/EventEntity.java
diff --git a/src/main/java/io/split/android/client/storage/db/GeneralInfoDao.java b/main/src/main/java/io/split/android/client/storage/db/GeneralInfoDao.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/db/GeneralInfoDao.java
rename to main/src/main/java/io/split/android/client/storage/db/GeneralInfoDao.java
diff --git a/src/main/java/io/split/android/client/storage/db/GeneralInfoEntity.java b/main/src/main/java/io/split/android/client/storage/db/GeneralInfoEntity.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/db/GeneralInfoEntity.java
rename to main/src/main/java/io/split/android/client/storage/db/GeneralInfoEntity.java
diff --git a/src/main/java/io/split/android/client/storage/db/ImpressionDao.java b/main/src/main/java/io/split/android/client/storage/db/ImpressionDao.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/db/ImpressionDao.java
rename to main/src/main/java/io/split/android/client/storage/db/ImpressionDao.java
diff --git a/src/main/java/io/split/android/client/storage/db/ImpressionEntity.java b/main/src/main/java/io/split/android/client/storage/db/ImpressionEntity.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/db/ImpressionEntity.java
rename to main/src/main/java/io/split/android/client/storage/db/ImpressionEntity.java
diff --git a/src/main/java/io/split/android/client/storage/db/ImpressionsCountDao.java b/main/src/main/java/io/split/android/client/storage/db/ImpressionsCountDao.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/db/ImpressionsCountDao.java
rename to main/src/main/java/io/split/android/client/storage/db/ImpressionsCountDao.java
diff --git a/src/main/java/io/split/android/client/storage/db/ImpressionsCountEntity.java b/main/src/main/java/io/split/android/client/storage/db/ImpressionsCountEntity.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/db/ImpressionsCountEntity.java
rename to main/src/main/java/io/split/android/client/storage/db/ImpressionsCountEntity.java
diff --git a/src/main/java/io/split/android/client/storage/db/MyLargeSegmentDao.java b/main/src/main/java/io/split/android/client/storage/db/MyLargeSegmentDao.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/db/MyLargeSegmentDao.java
rename to main/src/main/java/io/split/android/client/storage/db/MyLargeSegmentDao.java
diff --git a/src/main/java/io/split/android/client/storage/db/MyLargeSegmentEntity.java b/main/src/main/java/io/split/android/client/storage/db/MyLargeSegmentEntity.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/db/MyLargeSegmentEntity.java
rename to main/src/main/java/io/split/android/client/storage/db/MyLargeSegmentEntity.java
diff --git a/src/main/java/io/split/android/client/storage/db/MySegmentDao.java b/main/src/main/java/io/split/android/client/storage/db/MySegmentDao.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/db/MySegmentDao.java
rename to main/src/main/java/io/split/android/client/storage/db/MySegmentDao.java
diff --git a/src/main/java/io/split/android/client/storage/db/MySegmentEntity.java b/main/src/main/java/io/split/android/client/storage/db/MySegmentEntity.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/db/MySegmentEntity.java
rename to main/src/main/java/io/split/android/client/storage/db/MySegmentEntity.java
diff --git a/src/main/java/io/split/android/client/storage/db/SegmentDao.java b/main/src/main/java/io/split/android/client/storage/db/SegmentDao.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/db/SegmentDao.java
rename to main/src/main/java/io/split/android/client/storage/db/SegmentDao.java
diff --git a/src/main/java/io/split/android/client/storage/db/SegmentEntity.java b/main/src/main/java/io/split/android/client/storage/db/SegmentEntity.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/db/SegmentEntity.java
rename to main/src/main/java/io/split/android/client/storage/db/SegmentEntity.java
diff --git a/src/main/java/io/split/android/client/storage/db/SplitDao.java b/main/src/main/java/io/split/android/client/storage/db/SplitDao.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/db/SplitDao.java
rename to main/src/main/java/io/split/android/client/storage/db/SplitDao.java
diff --git a/src/main/java/io/split/android/client/storage/db/SplitEntity.java b/main/src/main/java/io/split/android/client/storage/db/SplitEntity.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/db/SplitEntity.java
rename to main/src/main/java/io/split/android/client/storage/db/SplitEntity.java
diff --git a/src/main/java/io/split/android/client/storage/db/SplitQueryDao.java b/main/src/main/java/io/split/android/client/storage/db/SplitQueryDao.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/db/SplitQueryDao.java
rename to main/src/main/java/io/split/android/client/storage/db/SplitQueryDao.java
diff --git a/src/main/java/io/split/android/client/storage/db/SplitQueryDaoImpl.java b/main/src/main/java/io/split/android/client/storage/db/SplitQueryDaoImpl.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/db/SplitQueryDaoImpl.java
rename to main/src/main/java/io/split/android/client/storage/db/SplitQueryDaoImpl.java
diff --git a/src/main/java/io/split/android/client/storage/db/SplitRoomDatabase.java b/main/src/main/java/io/split/android/client/storage/db/SplitRoomDatabase.java
similarity index 98%
rename from src/main/java/io/split/android/client/storage/db/SplitRoomDatabase.java
rename to main/src/main/java/io/split/android/client/storage/db/SplitRoomDatabase.java
index 0d9d7cc66..c423f3c86 100644
--- a/src/main/java/io/split/android/client/storage/db/SplitRoomDatabase.java
+++ b/main/src/main/java/io/split/android/client/storage/db/SplitRoomDatabase.java
@@ -30,7 +30,8 @@
AttributesEntity.class, UniqueKeyEntity.class, ImpressionsObserverCacheEntity.class,
MyLargeSegmentEntity.class, RuleBasedSegmentEntity.class
},
- version = 7
+ version = 7,
+ exportSchema = false
)
public abstract class SplitRoomDatabase extends RoomDatabase {
diff --git a/src/main/java/io/split/android/client/storage/db/StorageFactory.java b/main/src/main/java/io/split/android/client/storage/db/StorageFactory.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/db/StorageFactory.java
rename to main/src/main/java/io/split/android/client/storage/db/StorageFactory.java
diff --git a/src/main/java/io/split/android/client/storage/db/StorageRecordStatus.java b/main/src/main/java/io/split/android/client/storage/db/StorageRecordStatus.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/db/StorageRecordStatus.java
rename to main/src/main/java/io/split/android/client/storage/db/StorageRecordStatus.java
diff --git a/src/main/java/io/split/android/client/storage/db/attributes/AttributesDao.java b/main/src/main/java/io/split/android/client/storage/db/attributes/AttributesDao.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/db/attributes/AttributesDao.java
rename to main/src/main/java/io/split/android/client/storage/db/attributes/AttributesDao.java
diff --git a/src/main/java/io/split/android/client/storage/db/attributes/AttributesEntity.java b/main/src/main/java/io/split/android/client/storage/db/attributes/AttributesEntity.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/db/attributes/AttributesEntity.java
rename to main/src/main/java/io/split/android/client/storage/db/attributes/AttributesEntity.java
diff --git a/src/main/java/io/split/android/client/storage/db/impressions/observer/ImpressionsObserverCacheDao.java b/main/src/main/java/io/split/android/client/storage/db/impressions/observer/ImpressionsObserverCacheDao.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/db/impressions/observer/ImpressionsObserverCacheDao.java
rename to main/src/main/java/io/split/android/client/storage/db/impressions/observer/ImpressionsObserverCacheDao.java
diff --git a/src/main/java/io/split/android/client/storage/db/impressions/observer/ImpressionsObserverCacheEntity.java b/main/src/main/java/io/split/android/client/storage/db/impressions/observer/ImpressionsObserverCacheEntity.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/db/impressions/observer/ImpressionsObserverCacheEntity.java
rename to main/src/main/java/io/split/android/client/storage/db/impressions/observer/ImpressionsObserverCacheEntity.java
diff --git a/src/main/java/io/split/android/client/storage/db/impressions/unique/UniqueKeyEntity.java b/main/src/main/java/io/split/android/client/storage/db/impressions/unique/UniqueKeyEntity.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/db/impressions/unique/UniqueKeyEntity.java
rename to main/src/main/java/io/split/android/client/storage/db/impressions/unique/UniqueKeyEntity.java
diff --git a/src/main/java/io/split/android/client/storage/db/impressions/unique/UniqueKeysDao.java b/main/src/main/java/io/split/android/client/storage/db/impressions/unique/UniqueKeysDao.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/db/impressions/unique/UniqueKeysDao.java
rename to main/src/main/java/io/split/android/client/storage/db/impressions/unique/UniqueKeysDao.java
diff --git a/src/main/java/io/split/android/client/storage/db/rbs/RuleBasedSegmentDao.java b/main/src/main/java/io/split/android/client/storage/db/rbs/RuleBasedSegmentDao.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/db/rbs/RuleBasedSegmentDao.java
rename to main/src/main/java/io/split/android/client/storage/db/rbs/RuleBasedSegmentDao.java
diff --git a/src/main/java/io/split/android/client/storage/db/rbs/RuleBasedSegmentEntity.java b/main/src/main/java/io/split/android/client/storage/db/rbs/RuleBasedSegmentEntity.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/db/rbs/RuleBasedSegmentEntity.java
rename to main/src/main/java/io/split/android/client/storage/db/rbs/RuleBasedSegmentEntity.java
diff --git a/src/main/java/io/split/android/client/storage/events/EventsStorage.java b/main/src/main/java/io/split/android/client/storage/events/EventsStorage.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/events/EventsStorage.java
rename to main/src/main/java/io/split/android/client/storage/events/EventsStorage.java
diff --git a/src/main/java/io/split/android/client/storage/events/PersistentEventsStorage.java b/main/src/main/java/io/split/android/client/storage/events/PersistentEventsStorage.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/events/PersistentEventsStorage.java
rename to main/src/main/java/io/split/android/client/storage/events/PersistentEventsStorage.java
diff --git a/src/main/java/io/split/android/client/storage/events/SqLitePersistentEventsStorage.java b/main/src/main/java/io/split/android/client/storage/events/SqLitePersistentEventsStorage.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/events/SqLitePersistentEventsStorage.java
rename to main/src/main/java/io/split/android/client/storage/events/SqLitePersistentEventsStorage.java
diff --git a/src/main/java/io/split/android/client/storage/general/GeneralInfoStorage.java b/main/src/main/java/io/split/android/client/storage/general/GeneralInfoStorage.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/general/GeneralInfoStorage.java
rename to main/src/main/java/io/split/android/client/storage/general/GeneralInfoStorage.java
diff --git a/src/main/java/io/split/android/client/storage/general/GeneralInfoStorageImpl.java b/main/src/main/java/io/split/android/client/storage/general/GeneralInfoStorageImpl.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/general/GeneralInfoStorageImpl.java
rename to main/src/main/java/io/split/android/client/storage/general/GeneralInfoStorageImpl.java
diff --git a/src/main/java/io/split/android/client/storage/impressions/ImpressionsStorage.java b/main/src/main/java/io/split/android/client/storage/impressions/ImpressionsStorage.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/impressions/ImpressionsStorage.java
rename to main/src/main/java/io/split/android/client/storage/impressions/ImpressionsStorage.java
diff --git a/src/main/java/io/split/android/client/storage/impressions/PersistentImpressionsCountStorage.java b/main/src/main/java/io/split/android/client/storage/impressions/PersistentImpressionsCountStorage.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/impressions/PersistentImpressionsCountStorage.java
rename to main/src/main/java/io/split/android/client/storage/impressions/PersistentImpressionsCountStorage.java
diff --git a/src/main/java/io/split/android/client/storage/impressions/PersistentImpressionsStorage.java b/main/src/main/java/io/split/android/client/storage/impressions/PersistentImpressionsStorage.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/impressions/PersistentImpressionsStorage.java
rename to main/src/main/java/io/split/android/client/storage/impressions/PersistentImpressionsStorage.java
diff --git a/src/main/java/io/split/android/client/storage/impressions/PersistentImpressionsUniqueStorage.java b/main/src/main/java/io/split/android/client/storage/impressions/PersistentImpressionsUniqueStorage.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/impressions/PersistentImpressionsUniqueStorage.java
rename to main/src/main/java/io/split/android/client/storage/impressions/PersistentImpressionsUniqueStorage.java
diff --git a/src/main/java/io/split/android/client/storage/impressions/SqLitePersistentImpressionsCountStorage.java b/main/src/main/java/io/split/android/client/storage/impressions/SqLitePersistentImpressionsCountStorage.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/impressions/SqLitePersistentImpressionsCountStorage.java
rename to main/src/main/java/io/split/android/client/storage/impressions/SqLitePersistentImpressionsCountStorage.java
diff --git a/src/main/java/io/split/android/client/storage/impressions/SqLitePersistentImpressionsStorage.java b/main/src/main/java/io/split/android/client/storage/impressions/SqLitePersistentImpressionsStorage.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/impressions/SqLitePersistentImpressionsStorage.java
rename to main/src/main/java/io/split/android/client/storage/impressions/SqLitePersistentImpressionsStorage.java
diff --git a/src/main/java/io/split/android/client/storage/impressions/SqlitePersistentUniqueStorage.java b/main/src/main/java/io/split/android/client/storage/impressions/SqlitePersistentUniqueStorage.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/impressions/SqlitePersistentUniqueStorage.java
rename to main/src/main/java/io/split/android/client/storage/impressions/SqlitePersistentUniqueStorage.java
diff --git a/src/main/java/io/split/android/client/storage/legacy/FileStorage.java b/main/src/main/java/io/split/android/client/storage/legacy/FileStorage.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/legacy/FileStorage.java
rename to main/src/main/java/io/split/android/client/storage/legacy/FileStorage.java
diff --git a/src/main/java/io/split/android/client/storage/legacy/FileStorageHelper.java b/main/src/main/java/io/split/android/client/storage/legacy/FileStorageHelper.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/legacy/FileStorageHelper.java
rename to main/src/main/java/io/split/android/client/storage/legacy/FileStorageHelper.java
diff --git a/src/main/java/io/split/android/client/storage/legacy/IStorage.java b/main/src/main/java/io/split/android/client/storage/legacy/IStorage.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/legacy/IStorage.java
rename to main/src/main/java/io/split/android/client/storage/legacy/IStorage.java
diff --git a/src/main/java/io/split/android/client/storage/mysegments/EmptyMySegmentsStorage.java b/main/src/main/java/io/split/android/client/storage/mysegments/EmptyMySegmentsStorage.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/mysegments/EmptyMySegmentsStorage.java
rename to main/src/main/java/io/split/android/client/storage/mysegments/EmptyMySegmentsStorage.java
diff --git a/src/main/java/io/split/android/client/storage/mysegments/MySegmentsStorage.java b/main/src/main/java/io/split/android/client/storage/mysegments/MySegmentsStorage.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/mysegments/MySegmentsStorage.java
rename to main/src/main/java/io/split/android/client/storage/mysegments/MySegmentsStorage.java
diff --git a/src/main/java/io/split/android/client/storage/mysegments/MySegmentsStorageContainer.java b/main/src/main/java/io/split/android/client/storage/mysegments/MySegmentsStorageContainer.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/mysegments/MySegmentsStorageContainer.java
rename to main/src/main/java/io/split/android/client/storage/mysegments/MySegmentsStorageContainer.java
diff --git a/src/main/java/io/split/android/client/storage/mysegments/MySegmentsStorageContainerImpl.java b/main/src/main/java/io/split/android/client/storage/mysegments/MySegmentsStorageContainerImpl.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/mysegments/MySegmentsStorageContainerImpl.java
rename to main/src/main/java/io/split/android/client/storage/mysegments/MySegmentsStorageContainerImpl.java
diff --git a/src/main/java/io/split/android/client/storage/mysegments/MySegmentsStorageImpl.java b/main/src/main/java/io/split/android/client/storage/mysegments/MySegmentsStorageImpl.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/mysegments/MySegmentsStorageImpl.java
rename to main/src/main/java/io/split/android/client/storage/mysegments/MySegmentsStorageImpl.java
diff --git a/src/main/java/io/split/android/client/storage/mysegments/PersistentMySegmentsStorage.java b/main/src/main/java/io/split/android/client/storage/mysegments/PersistentMySegmentsStorage.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/mysegments/PersistentMySegmentsStorage.java
rename to main/src/main/java/io/split/android/client/storage/mysegments/PersistentMySegmentsStorage.java
diff --git a/src/main/java/io/split/android/client/storage/mysegments/SqLitePersistentMySegmentsStorage.java b/main/src/main/java/io/split/android/client/storage/mysegments/SqLitePersistentMySegmentsStorage.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/mysegments/SqLitePersistentMySegmentsStorage.java
rename to main/src/main/java/io/split/android/client/storage/mysegments/SqLitePersistentMySegmentsStorage.java
diff --git a/src/main/java/io/split/android/client/storage/rbs/Clearer.java b/main/src/main/java/io/split/android/client/storage/rbs/Clearer.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/rbs/Clearer.java
rename to main/src/main/java/io/split/android/client/storage/rbs/Clearer.java
diff --git a/src/main/java/io/split/android/client/storage/rbs/LazyRuleBasedSegmentStorageProvider.java b/main/src/main/java/io/split/android/client/storage/rbs/LazyRuleBasedSegmentStorageProvider.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/rbs/LazyRuleBasedSegmentStorageProvider.java
rename to main/src/main/java/io/split/android/client/storage/rbs/LazyRuleBasedSegmentStorageProvider.java
diff --git a/src/main/java/io/split/android/client/storage/rbs/PersistentRuleBasedSegmentStorage.java b/main/src/main/java/io/split/android/client/storage/rbs/PersistentRuleBasedSegmentStorage.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/rbs/PersistentRuleBasedSegmentStorage.java
rename to main/src/main/java/io/split/android/client/storage/rbs/PersistentRuleBasedSegmentStorage.java
diff --git a/src/main/java/io/split/android/client/storage/rbs/RuleBasedSegmentSnapshot.java b/main/src/main/java/io/split/android/client/storage/rbs/RuleBasedSegmentSnapshot.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/rbs/RuleBasedSegmentSnapshot.java
rename to main/src/main/java/io/split/android/client/storage/rbs/RuleBasedSegmentSnapshot.java
diff --git a/src/main/java/io/split/android/client/storage/rbs/RuleBasedSegmentStorage.java b/main/src/main/java/io/split/android/client/storage/rbs/RuleBasedSegmentStorage.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/rbs/RuleBasedSegmentStorage.java
rename to main/src/main/java/io/split/android/client/storage/rbs/RuleBasedSegmentStorage.java
diff --git a/src/main/java/io/split/android/client/storage/rbs/RuleBasedSegmentStorageConsumer.java b/main/src/main/java/io/split/android/client/storage/rbs/RuleBasedSegmentStorageConsumer.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/rbs/RuleBasedSegmentStorageConsumer.java
rename to main/src/main/java/io/split/android/client/storage/rbs/RuleBasedSegmentStorageConsumer.java
diff --git a/src/main/java/io/split/android/client/storage/rbs/RuleBasedSegmentStorageImpl.java b/main/src/main/java/io/split/android/client/storage/rbs/RuleBasedSegmentStorageImpl.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/rbs/RuleBasedSegmentStorageImpl.java
rename to main/src/main/java/io/split/android/client/storage/rbs/RuleBasedSegmentStorageImpl.java
diff --git a/src/main/java/io/split/android/client/storage/rbs/RuleBasedSegmentStorageProducer.java b/main/src/main/java/io/split/android/client/storage/rbs/RuleBasedSegmentStorageProducer.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/rbs/RuleBasedSegmentStorageProducer.java
rename to main/src/main/java/io/split/android/client/storage/rbs/RuleBasedSegmentStorageProducer.java
diff --git a/src/main/java/io/split/android/client/storage/rbs/RuleBasedSegmentStorageProducerImpl.java b/main/src/main/java/io/split/android/client/storage/rbs/RuleBasedSegmentStorageProducerImpl.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/rbs/RuleBasedSegmentStorageProducerImpl.java
rename to main/src/main/java/io/split/android/client/storage/rbs/RuleBasedSegmentStorageProducerImpl.java
diff --git a/src/main/java/io/split/android/client/storage/rbs/RuleBasedSegmentStorageProvider.java b/main/src/main/java/io/split/android/client/storage/rbs/RuleBasedSegmentStorageProvider.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/rbs/RuleBasedSegmentStorageProvider.java
rename to main/src/main/java/io/split/android/client/storage/rbs/RuleBasedSegmentStorageProvider.java
diff --git a/src/main/java/io/split/android/client/storage/rbs/SnapshotLoader.java b/main/src/main/java/io/split/android/client/storage/rbs/SnapshotLoader.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/rbs/SnapshotLoader.java
rename to main/src/main/java/io/split/android/client/storage/rbs/SnapshotLoader.java
diff --git a/src/main/java/io/split/android/client/storage/rbs/SqLitePersistentRuleBasedSegmentStorage.java b/main/src/main/java/io/split/android/client/storage/rbs/SqLitePersistentRuleBasedSegmentStorage.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/rbs/SqLitePersistentRuleBasedSegmentStorage.java
rename to main/src/main/java/io/split/android/client/storage/rbs/SqLitePersistentRuleBasedSegmentStorage.java
diff --git a/src/main/java/io/split/android/client/storage/rbs/SqLitePersistentRuleBasedSegmentStorageProvider.java b/main/src/main/java/io/split/android/client/storage/rbs/SqLitePersistentRuleBasedSegmentStorageProvider.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/rbs/SqLitePersistentRuleBasedSegmentStorageProvider.java
rename to main/src/main/java/io/split/android/client/storage/rbs/SqLitePersistentRuleBasedSegmentStorageProvider.java
diff --git a/src/main/java/io/split/android/client/storage/rbs/Updater.java b/main/src/main/java/io/split/android/client/storage/rbs/Updater.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/rbs/Updater.java
rename to main/src/main/java/io/split/android/client/storage/rbs/Updater.java
diff --git a/src/main/java/io/split/android/client/storage/splits/MetadataHelper.java b/main/src/main/java/io/split/android/client/storage/splits/MetadataHelper.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/splits/MetadataHelper.java
rename to main/src/main/java/io/split/android/client/storage/splits/MetadataHelper.java
diff --git a/src/main/java/io/split/android/client/storage/splits/PersistentSplitsStorage.java b/main/src/main/java/io/split/android/client/storage/splits/PersistentSplitsStorage.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/splits/PersistentSplitsStorage.java
rename to main/src/main/java/io/split/android/client/storage/splits/PersistentSplitsStorage.java
diff --git a/src/main/java/io/split/android/client/storage/splits/ProcessedSplitChange.java b/main/src/main/java/io/split/android/client/storage/splits/ProcessedSplitChange.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/splits/ProcessedSplitChange.java
rename to main/src/main/java/io/split/android/client/storage/splits/ProcessedSplitChange.java
diff --git a/src/main/java/io/split/android/client/storage/splits/SplitEntityToSplitTransformer.java b/main/src/main/java/io/split/android/client/storage/splits/SplitEntityToSplitTransformer.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/splits/SplitEntityToSplitTransformer.java
rename to main/src/main/java/io/split/android/client/storage/splits/SplitEntityToSplitTransformer.java
diff --git a/src/main/java/io/split/android/client/storage/splits/SplitListTransformer.java b/main/src/main/java/io/split/android/client/storage/splits/SplitListTransformer.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/splits/SplitListTransformer.java
rename to main/src/main/java/io/split/android/client/storage/splits/SplitListTransformer.java
diff --git a/src/main/java/io/split/android/client/storage/splits/SplitToSplitEntityTransformer.java b/main/src/main/java/io/split/android/client/storage/splits/SplitToSplitEntityTransformer.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/splits/SplitToSplitEntityTransformer.java
rename to main/src/main/java/io/split/android/client/storage/splits/SplitToSplitEntityTransformer.java
diff --git a/src/main/java/io/split/android/client/storage/splits/SplitsSnapshot.java b/main/src/main/java/io/split/android/client/storage/splits/SplitsSnapshot.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/splits/SplitsSnapshot.java
rename to main/src/main/java/io/split/android/client/storage/splits/SplitsSnapshot.java
diff --git a/src/main/java/io/split/android/client/storage/splits/SplitsStorage.java b/main/src/main/java/io/split/android/client/storage/splits/SplitsStorage.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/splits/SplitsStorage.java
rename to main/src/main/java/io/split/android/client/storage/splits/SplitsStorage.java
diff --git a/src/main/java/io/split/android/client/storage/splits/SplitsStorageImpl.java b/main/src/main/java/io/split/android/client/storage/splits/SplitsStorageImpl.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/splits/SplitsStorageImpl.java
rename to main/src/main/java/io/split/android/client/storage/splits/SplitsStorageImpl.java
diff --git a/src/main/java/io/split/android/client/storage/splits/SqLitePersistentSplitsStorage.java b/main/src/main/java/io/split/android/client/storage/splits/SqLitePersistentSplitsStorage.java
similarity index 100%
rename from src/main/java/io/split/android/client/storage/splits/SqLitePersistentSplitsStorage.java
rename to main/src/main/java/io/split/android/client/storage/splits/SqLitePersistentSplitsStorage.java
diff --git a/src/main/java/io/split/android/client/telemetry/TelemetryConfigBodySerializer.java b/main/src/main/java/io/split/android/client/telemetry/TelemetryConfigBodySerializer.java
similarity index 100%
rename from src/main/java/io/split/android/client/telemetry/TelemetryConfigBodySerializer.java
rename to main/src/main/java/io/split/android/client/telemetry/TelemetryConfigBodySerializer.java
diff --git a/src/main/java/io/split/android/client/telemetry/TelemetryHelper.java b/main/src/main/java/io/split/android/client/telemetry/TelemetryHelper.java
similarity index 100%
rename from src/main/java/io/split/android/client/telemetry/TelemetryHelper.java
rename to main/src/main/java/io/split/android/client/telemetry/TelemetryHelper.java
diff --git a/src/main/java/io/split/android/client/telemetry/TelemetryHelperImpl.java b/main/src/main/java/io/split/android/client/telemetry/TelemetryHelperImpl.java
similarity index 100%
rename from src/main/java/io/split/android/client/telemetry/TelemetryHelperImpl.java
rename to main/src/main/java/io/split/android/client/telemetry/TelemetryHelperImpl.java
diff --git a/src/main/java/io/split/android/client/telemetry/TelemetryStatsBodySerializer.java b/main/src/main/java/io/split/android/client/telemetry/TelemetryStatsBodySerializer.java
similarity index 100%
rename from src/main/java/io/split/android/client/telemetry/TelemetryStatsBodySerializer.java
rename to main/src/main/java/io/split/android/client/telemetry/TelemetryStatsBodySerializer.java
diff --git a/src/main/java/io/split/android/client/telemetry/TelemetrySynchronizer.java b/main/src/main/java/io/split/android/client/telemetry/TelemetrySynchronizer.java
similarity index 100%
rename from src/main/java/io/split/android/client/telemetry/TelemetrySynchronizer.java
rename to main/src/main/java/io/split/android/client/telemetry/TelemetrySynchronizer.java
diff --git a/src/main/java/io/split/android/client/telemetry/TelemetrySynchronizerImpl.java b/main/src/main/java/io/split/android/client/telemetry/TelemetrySynchronizerImpl.java
similarity index 100%
rename from src/main/java/io/split/android/client/telemetry/TelemetrySynchronizerImpl.java
rename to main/src/main/java/io/split/android/client/telemetry/TelemetrySynchronizerImpl.java
diff --git a/src/main/java/io/split/android/client/telemetry/TelemetrySynchronizerStub.java b/main/src/main/java/io/split/android/client/telemetry/TelemetrySynchronizerStub.java
similarity index 100%
rename from src/main/java/io/split/android/client/telemetry/TelemetrySynchronizerStub.java
rename to main/src/main/java/io/split/android/client/telemetry/TelemetrySynchronizerStub.java
diff --git a/src/main/java/io/split/android/client/telemetry/model/Config.java b/main/src/main/java/io/split/android/client/telemetry/model/Config.java
similarity index 100%
rename from src/main/java/io/split/android/client/telemetry/model/Config.java
rename to main/src/main/java/io/split/android/client/telemetry/model/Config.java
diff --git a/src/main/java/io/split/android/client/telemetry/model/EventTypeEnum.java b/main/src/main/java/io/split/android/client/telemetry/model/EventTypeEnum.java
similarity index 100%
rename from src/main/java/io/split/android/client/telemetry/model/EventTypeEnum.java
rename to main/src/main/java/io/split/android/client/telemetry/model/EventTypeEnum.java
diff --git a/src/main/java/io/split/android/client/telemetry/model/EventsDataRecordsEnum.java b/main/src/main/java/io/split/android/client/telemetry/model/EventsDataRecordsEnum.java
similarity index 100%
rename from src/main/java/io/split/android/client/telemetry/model/EventsDataRecordsEnum.java
rename to main/src/main/java/io/split/android/client/telemetry/model/EventsDataRecordsEnum.java
diff --git a/src/main/java/io/split/android/client/telemetry/model/FactoryCounter.java b/main/src/main/java/io/split/android/client/telemetry/model/FactoryCounter.java
similarity index 100%
rename from src/main/java/io/split/android/client/telemetry/model/FactoryCounter.java
rename to main/src/main/java/io/split/android/client/telemetry/model/FactoryCounter.java
diff --git a/src/main/java/io/split/android/client/telemetry/model/HttpErrors.java b/main/src/main/java/io/split/android/client/telemetry/model/HttpErrors.java
similarity index 100%
rename from src/main/java/io/split/android/client/telemetry/model/HttpErrors.java
rename to main/src/main/java/io/split/android/client/telemetry/model/HttpErrors.java
diff --git a/src/main/java/io/split/android/client/telemetry/model/HttpLatencies.java b/main/src/main/java/io/split/android/client/telemetry/model/HttpLatencies.java
similarity index 100%
rename from src/main/java/io/split/android/client/telemetry/model/HttpLatencies.java
rename to main/src/main/java/io/split/android/client/telemetry/model/HttpLatencies.java
diff --git a/src/main/java/io/split/android/client/telemetry/model/ImpressionsDataType.java b/main/src/main/java/io/split/android/client/telemetry/model/ImpressionsDataType.java
similarity index 100%
rename from src/main/java/io/split/android/client/telemetry/model/ImpressionsDataType.java
rename to main/src/main/java/io/split/android/client/telemetry/model/ImpressionsDataType.java
diff --git a/src/main/java/io/split/android/client/telemetry/model/ImpressionsMode.java b/main/src/main/java/io/split/android/client/telemetry/model/ImpressionsMode.java
similarity index 100%
rename from src/main/java/io/split/android/client/telemetry/model/ImpressionsMode.java
rename to main/src/main/java/io/split/android/client/telemetry/model/ImpressionsMode.java
diff --git a/src/main/java/io/split/android/client/telemetry/model/LastSync.java b/main/src/main/java/io/split/android/client/telemetry/model/LastSync.java
similarity index 100%
rename from src/main/java/io/split/android/client/telemetry/model/LastSync.java
rename to main/src/main/java/io/split/android/client/telemetry/model/LastSync.java
diff --git a/src/main/java/io/split/android/client/telemetry/model/Method.java b/main/src/main/java/io/split/android/client/telemetry/model/Method.java
similarity index 100%
rename from src/main/java/io/split/android/client/telemetry/model/Method.java
rename to main/src/main/java/io/split/android/client/telemetry/model/Method.java
diff --git a/src/main/java/io/split/android/client/telemetry/model/MethodExceptions.java b/main/src/main/java/io/split/android/client/telemetry/model/MethodExceptions.java
similarity index 100%
rename from src/main/java/io/split/android/client/telemetry/model/MethodExceptions.java
rename to main/src/main/java/io/split/android/client/telemetry/model/MethodExceptions.java
diff --git a/src/main/java/io/split/android/client/telemetry/model/MethodLatencies.java b/main/src/main/java/io/split/android/client/telemetry/model/MethodLatencies.java
similarity index 100%
rename from src/main/java/io/split/android/client/telemetry/model/MethodLatencies.java
rename to main/src/main/java/io/split/android/client/telemetry/model/MethodLatencies.java
diff --git a/src/main/java/io/split/android/client/telemetry/model/OperationMode.java b/main/src/main/java/io/split/android/client/telemetry/model/OperationMode.java
similarity index 100%
rename from src/main/java/io/split/android/client/telemetry/model/OperationMode.java
rename to main/src/main/java/io/split/android/client/telemetry/model/OperationMode.java
diff --git a/src/main/java/io/split/android/client/telemetry/model/OperationType.java b/main/src/main/java/io/split/android/client/telemetry/model/OperationType.java
similarity index 100%
rename from src/main/java/io/split/android/client/telemetry/model/OperationType.java
rename to main/src/main/java/io/split/android/client/telemetry/model/OperationType.java
diff --git a/src/main/java/io/split/android/client/telemetry/model/PushCounterEvent.java b/main/src/main/java/io/split/android/client/telemetry/model/PushCounterEvent.java
similarity index 100%
rename from src/main/java/io/split/android/client/telemetry/model/PushCounterEvent.java
rename to main/src/main/java/io/split/android/client/telemetry/model/PushCounterEvent.java
diff --git a/src/main/java/io/split/android/client/telemetry/model/RefreshRates.java b/main/src/main/java/io/split/android/client/telemetry/model/RefreshRates.java
similarity index 100%
rename from src/main/java/io/split/android/client/telemetry/model/RefreshRates.java
rename to main/src/main/java/io/split/android/client/telemetry/model/RefreshRates.java
diff --git a/src/main/java/io/split/android/client/telemetry/model/Stats.java b/main/src/main/java/io/split/android/client/telemetry/model/Stats.java
similarity index 100%
rename from src/main/java/io/split/android/client/telemetry/model/Stats.java
rename to main/src/main/java/io/split/android/client/telemetry/model/Stats.java
diff --git a/src/main/java/io/split/android/client/telemetry/model/UpdatesFromSSE.java b/main/src/main/java/io/split/android/client/telemetry/model/UpdatesFromSSE.java
similarity index 100%
rename from src/main/java/io/split/android/client/telemetry/model/UpdatesFromSSE.java
rename to main/src/main/java/io/split/android/client/telemetry/model/UpdatesFromSSE.java
diff --git a/src/main/java/io/split/android/client/telemetry/model/UrlOverrides.java b/main/src/main/java/io/split/android/client/telemetry/model/UrlOverrides.java
similarity index 100%
rename from src/main/java/io/split/android/client/telemetry/model/UrlOverrides.java
rename to main/src/main/java/io/split/android/client/telemetry/model/UrlOverrides.java
diff --git a/src/main/java/io/split/android/client/telemetry/model/streaming/AblyErrorStreamingEvent.java b/main/src/main/java/io/split/android/client/telemetry/model/streaming/AblyErrorStreamingEvent.java
similarity index 100%
rename from src/main/java/io/split/android/client/telemetry/model/streaming/AblyErrorStreamingEvent.java
rename to main/src/main/java/io/split/android/client/telemetry/model/streaming/AblyErrorStreamingEvent.java
diff --git a/src/main/java/io/split/android/client/telemetry/model/streaming/ConnectionEstablishedStreamingEvent.java b/main/src/main/java/io/split/android/client/telemetry/model/streaming/ConnectionEstablishedStreamingEvent.java
similarity index 100%
rename from src/main/java/io/split/android/client/telemetry/model/streaming/ConnectionEstablishedStreamingEvent.java
rename to main/src/main/java/io/split/android/client/telemetry/model/streaming/ConnectionEstablishedStreamingEvent.java
diff --git a/src/main/java/io/split/android/client/telemetry/model/streaming/OccupancyPriStreamingEvent.java b/main/src/main/java/io/split/android/client/telemetry/model/streaming/OccupancyPriStreamingEvent.java
similarity index 100%
rename from src/main/java/io/split/android/client/telemetry/model/streaming/OccupancyPriStreamingEvent.java
rename to main/src/main/java/io/split/android/client/telemetry/model/streaming/OccupancyPriStreamingEvent.java
diff --git a/src/main/java/io/split/android/client/telemetry/model/streaming/OccupancySecStreamingEvent.java b/main/src/main/java/io/split/android/client/telemetry/model/streaming/OccupancySecStreamingEvent.java
similarity index 100%
rename from src/main/java/io/split/android/client/telemetry/model/streaming/OccupancySecStreamingEvent.java
rename to main/src/main/java/io/split/android/client/telemetry/model/streaming/OccupancySecStreamingEvent.java
diff --git a/src/main/java/io/split/android/client/telemetry/model/streaming/SseConnectionErrorStreamingEvent.java b/main/src/main/java/io/split/android/client/telemetry/model/streaming/SseConnectionErrorStreamingEvent.java
similarity index 100%
rename from src/main/java/io/split/android/client/telemetry/model/streaming/SseConnectionErrorStreamingEvent.java
rename to main/src/main/java/io/split/android/client/telemetry/model/streaming/SseConnectionErrorStreamingEvent.java
diff --git a/src/main/java/io/split/android/client/telemetry/model/streaming/StreamingEvent.java b/main/src/main/java/io/split/android/client/telemetry/model/streaming/StreamingEvent.java
similarity index 100%
rename from src/main/java/io/split/android/client/telemetry/model/streaming/StreamingEvent.java
rename to main/src/main/java/io/split/android/client/telemetry/model/streaming/StreamingEvent.java
diff --git a/src/main/java/io/split/android/client/telemetry/model/streaming/StreamingStatusStreamingEvent.java b/main/src/main/java/io/split/android/client/telemetry/model/streaming/StreamingStatusStreamingEvent.java
similarity index 100%
rename from src/main/java/io/split/android/client/telemetry/model/streaming/StreamingStatusStreamingEvent.java
rename to main/src/main/java/io/split/android/client/telemetry/model/streaming/StreamingStatusStreamingEvent.java
diff --git a/src/main/java/io/split/android/client/telemetry/model/streaming/SyncModeUpdateStreamingEvent.java b/main/src/main/java/io/split/android/client/telemetry/model/streaming/SyncModeUpdateStreamingEvent.java
similarity index 100%
rename from src/main/java/io/split/android/client/telemetry/model/streaming/SyncModeUpdateStreamingEvent.java
rename to main/src/main/java/io/split/android/client/telemetry/model/streaming/SyncModeUpdateStreamingEvent.java
diff --git a/src/main/java/io/split/android/client/telemetry/model/streaming/TokenRefreshStreamingEvent.java b/main/src/main/java/io/split/android/client/telemetry/model/streaming/TokenRefreshStreamingEvent.java
similarity index 100%
rename from src/main/java/io/split/android/client/telemetry/model/streaming/TokenRefreshStreamingEvent.java
rename to main/src/main/java/io/split/android/client/telemetry/model/streaming/TokenRefreshStreamingEvent.java
diff --git a/src/main/java/io/split/android/client/telemetry/model/streaming/UpdatesFromSSEEnum.java b/main/src/main/java/io/split/android/client/telemetry/model/streaming/UpdatesFromSSEEnum.java
similarity index 100%
rename from src/main/java/io/split/android/client/telemetry/model/streaming/UpdatesFromSSEEnum.java
rename to main/src/main/java/io/split/android/client/telemetry/model/streaming/UpdatesFromSSEEnum.java
diff --git a/src/main/java/io/split/android/client/telemetry/storage/BinarySearchLatencyTracker.java b/main/src/main/java/io/split/android/client/telemetry/storage/BinarySearchLatencyTracker.java
similarity index 100%
rename from src/main/java/io/split/android/client/telemetry/storage/BinarySearchLatencyTracker.java
rename to main/src/main/java/io/split/android/client/telemetry/storage/BinarySearchLatencyTracker.java
diff --git a/src/main/java/io/split/android/client/telemetry/storage/ILatencyTracker.java b/main/src/main/java/io/split/android/client/telemetry/storage/ILatencyTracker.java
similarity index 100%
rename from src/main/java/io/split/android/client/telemetry/storage/ILatencyTracker.java
rename to main/src/main/java/io/split/android/client/telemetry/storage/ILatencyTracker.java
diff --git a/src/main/java/io/split/android/client/telemetry/storage/InMemoryTelemetryStorage.java b/main/src/main/java/io/split/android/client/telemetry/storage/InMemoryTelemetryStorage.java
similarity index 100%
rename from src/main/java/io/split/android/client/telemetry/storage/InMemoryTelemetryStorage.java
rename to main/src/main/java/io/split/android/client/telemetry/storage/InMemoryTelemetryStorage.java
diff --git a/src/main/java/io/split/android/client/telemetry/storage/NoOpTelemetryStorage.java b/main/src/main/java/io/split/android/client/telemetry/storage/NoOpTelemetryStorage.java
similarity index 100%
rename from src/main/java/io/split/android/client/telemetry/storage/NoOpTelemetryStorage.java
rename to main/src/main/java/io/split/android/client/telemetry/storage/NoOpTelemetryStorage.java
diff --git a/src/main/java/io/split/android/client/telemetry/storage/TelemetryConfigProvider.java b/main/src/main/java/io/split/android/client/telemetry/storage/TelemetryConfigProvider.java
similarity index 100%
rename from src/main/java/io/split/android/client/telemetry/storage/TelemetryConfigProvider.java
rename to main/src/main/java/io/split/android/client/telemetry/storage/TelemetryConfigProvider.java
diff --git a/src/main/java/io/split/android/client/telemetry/storage/TelemetryConfigProviderImpl.java b/main/src/main/java/io/split/android/client/telemetry/storage/TelemetryConfigProviderImpl.java
similarity index 100%
rename from src/main/java/io/split/android/client/telemetry/storage/TelemetryConfigProviderImpl.java
rename to main/src/main/java/io/split/android/client/telemetry/storage/TelemetryConfigProviderImpl.java
diff --git a/src/main/java/io/split/android/client/telemetry/storage/TelemetryEvaluationConsumer.java b/main/src/main/java/io/split/android/client/telemetry/storage/TelemetryEvaluationConsumer.java
similarity index 100%
rename from src/main/java/io/split/android/client/telemetry/storage/TelemetryEvaluationConsumer.java
rename to main/src/main/java/io/split/android/client/telemetry/storage/TelemetryEvaluationConsumer.java
diff --git a/src/main/java/io/split/android/client/telemetry/storage/TelemetryEvaluationProducer.java b/main/src/main/java/io/split/android/client/telemetry/storage/TelemetryEvaluationProducer.java
similarity index 100%
rename from src/main/java/io/split/android/client/telemetry/storage/TelemetryEvaluationProducer.java
rename to main/src/main/java/io/split/android/client/telemetry/storage/TelemetryEvaluationProducer.java
diff --git a/src/main/java/io/split/android/client/telemetry/storage/TelemetryInitConsumer.java b/main/src/main/java/io/split/android/client/telemetry/storage/TelemetryInitConsumer.java
similarity index 100%
rename from src/main/java/io/split/android/client/telemetry/storage/TelemetryInitConsumer.java
rename to main/src/main/java/io/split/android/client/telemetry/storage/TelemetryInitConsumer.java
diff --git a/src/main/java/io/split/android/client/telemetry/storage/TelemetryInitProducer.java b/main/src/main/java/io/split/android/client/telemetry/storage/TelemetryInitProducer.java
similarity index 100%
rename from src/main/java/io/split/android/client/telemetry/storage/TelemetryInitProducer.java
rename to main/src/main/java/io/split/android/client/telemetry/storage/TelemetryInitProducer.java
diff --git a/src/main/java/io/split/android/client/telemetry/storage/TelemetryRuntimeConsumer.java b/main/src/main/java/io/split/android/client/telemetry/storage/TelemetryRuntimeConsumer.java
similarity index 100%
rename from src/main/java/io/split/android/client/telemetry/storage/TelemetryRuntimeConsumer.java
rename to main/src/main/java/io/split/android/client/telemetry/storage/TelemetryRuntimeConsumer.java
diff --git a/src/main/java/io/split/android/client/telemetry/storage/TelemetryRuntimeProducer.java b/main/src/main/java/io/split/android/client/telemetry/storage/TelemetryRuntimeProducer.java
similarity index 100%
rename from src/main/java/io/split/android/client/telemetry/storage/TelemetryRuntimeProducer.java
rename to main/src/main/java/io/split/android/client/telemetry/storage/TelemetryRuntimeProducer.java
diff --git a/src/main/java/io/split/android/client/telemetry/storage/TelemetryStatsProvider.java b/main/src/main/java/io/split/android/client/telemetry/storage/TelemetryStatsProvider.java
similarity index 100%
rename from src/main/java/io/split/android/client/telemetry/storage/TelemetryStatsProvider.java
rename to main/src/main/java/io/split/android/client/telemetry/storage/TelemetryStatsProvider.java
diff --git a/src/main/java/io/split/android/client/telemetry/storage/TelemetryStatsProviderImpl.java b/main/src/main/java/io/split/android/client/telemetry/storage/TelemetryStatsProviderImpl.java
similarity index 100%
rename from src/main/java/io/split/android/client/telemetry/storage/TelemetryStatsProviderImpl.java
rename to main/src/main/java/io/split/android/client/telemetry/storage/TelemetryStatsProviderImpl.java
diff --git a/src/main/java/io/split/android/client/telemetry/storage/TelemetryStorage.java b/main/src/main/java/io/split/android/client/telemetry/storage/TelemetryStorage.java
similarity index 100%
rename from src/main/java/io/split/android/client/telemetry/storage/TelemetryStorage.java
rename to main/src/main/java/io/split/android/client/telemetry/storage/TelemetryStorage.java
diff --git a/src/main/java/io/split/android/client/telemetry/storage/TelemetryStorageConsumer.java b/main/src/main/java/io/split/android/client/telemetry/storage/TelemetryStorageConsumer.java
similarity index 100%
rename from src/main/java/io/split/android/client/telemetry/storage/TelemetryStorageConsumer.java
rename to main/src/main/java/io/split/android/client/telemetry/storage/TelemetryStorageConsumer.java
diff --git a/src/main/java/io/split/android/client/telemetry/storage/TelemetryStorageProducer.java b/main/src/main/java/io/split/android/client/telemetry/storage/TelemetryStorageProducer.java
similarity index 100%
rename from src/main/java/io/split/android/client/telemetry/storage/TelemetryStorageProducer.java
rename to main/src/main/java/io/split/android/client/telemetry/storage/TelemetryStorageProducer.java
diff --git a/src/main/java/io/split/android/client/telemetry/util/AtomicLongArray.java b/main/src/main/java/io/split/android/client/telemetry/util/AtomicLongArray.java
similarity index 100%
rename from src/main/java/io/split/android/client/telemetry/util/AtomicLongArray.java
rename to main/src/main/java/io/split/android/client/telemetry/util/AtomicLongArray.java
diff --git a/src/main/java/io/split/android/client/utils/BCrypt.java b/main/src/main/java/io/split/android/client/utils/BCrypt.java
similarity index 100%
rename from src/main/java/io/split/android/client/utils/BCrypt.java
rename to main/src/main/java/io/split/android/client/utils/BCrypt.java
diff --git a/src/main/java/io/split/android/client/utils/Base64Util.java b/main/src/main/java/io/split/android/client/utils/Base64Util.java
similarity index 100%
rename from src/main/java/io/split/android/client/utils/Base64Util.java
rename to main/src/main/java/io/split/android/client/utils/Base64Util.java
diff --git a/src/main/java/io/split/android/client/utils/CompressionUtil.java b/main/src/main/java/io/split/android/client/utils/CompressionUtil.java
similarity index 100%
rename from src/main/java/io/split/android/client/utils/CompressionUtil.java
rename to main/src/main/java/io/split/android/client/utils/CompressionUtil.java
diff --git a/src/main/java/io/split/android/client/utils/FileUtils.java b/main/src/main/java/io/split/android/client/utils/FileUtils.java
similarity index 100%
rename from src/main/java/io/split/android/client/utils/FileUtils.java
rename to main/src/main/java/io/split/android/client/utils/FileUtils.java
diff --git a/src/main/java/io/split/android/client/utils/Gzip.java b/main/src/main/java/io/split/android/client/utils/Gzip.java
similarity index 100%
rename from src/main/java/io/split/android/client/utils/Gzip.java
rename to main/src/main/java/io/split/android/client/utils/Gzip.java
diff --git a/src/main/java/io/split/android/client/utils/HttpProxySerializer.java b/main/src/main/java/io/split/android/client/utils/HttpProxySerializer.java
similarity index 100%
rename from src/main/java/io/split/android/client/utils/HttpProxySerializer.java
rename to main/src/main/java/io/split/android/client/utils/HttpProxySerializer.java
diff --git a/src/main/java/io/split/android/client/utils/Json.java b/main/src/main/java/io/split/android/client/utils/Json.java
similarity index 100%
rename from src/main/java/io/split/android/client/utils/Json.java
rename to main/src/main/java/io/split/android/client/utils/Json.java
diff --git a/src/main/java/io/split/android/client/utils/MemoryUtils.java b/main/src/main/java/io/split/android/client/utils/MemoryUtils.java
similarity index 100%
rename from src/main/java/io/split/android/client/utils/MemoryUtils.java
rename to main/src/main/java/io/split/android/client/utils/MemoryUtils.java
diff --git a/src/main/java/io/split/android/client/utils/MemoryUtilsImpl.java b/main/src/main/java/io/split/android/client/utils/MemoryUtilsImpl.java
similarity index 100%
rename from src/main/java/io/split/android/client/utils/MemoryUtilsImpl.java
rename to main/src/main/java/io/split/android/client/utils/MemoryUtilsImpl.java
diff --git a/src/main/java/io/split/android/client/utils/MurmurHash3.java b/main/src/main/java/io/split/android/client/utils/MurmurHash3.java
similarity index 100%
rename from src/main/java/io/split/android/client/utils/MurmurHash3.java
rename to main/src/main/java/io/split/android/client/utils/MurmurHash3.java
diff --git a/src/main/java/io/split/android/client/utils/StringHelper.java b/main/src/main/java/io/split/android/client/utils/StringHelper.java
similarity index 100%
rename from src/main/java/io/split/android/client/utils/StringHelper.java
rename to main/src/main/java/io/split/android/client/utils/StringHelper.java
diff --git a/src/main/java/io/split/android/client/utils/Utils.java b/main/src/main/java/io/split/android/client/utils/Utils.java
similarity index 100%
rename from src/main/java/io/split/android/client/utils/Utils.java
rename to main/src/main/java/io/split/android/client/utils/Utils.java
diff --git a/src/main/java/io/split/android/client/utils/YamlParser.java b/main/src/main/java/io/split/android/client/utils/YamlParser.java
similarity index 100%
rename from src/main/java/io/split/android/client/utils/YamlParser.java
rename to main/src/main/java/io/split/android/client/utils/YamlParser.java
diff --git a/src/main/java/io/split/android/client/utils/Zlib.java b/main/src/main/java/io/split/android/client/utils/Zlib.java
similarity index 100%
rename from src/main/java/io/split/android/client/utils/Zlib.java
rename to main/src/main/java/io/split/android/client/utils/Zlib.java
diff --git a/src/main/java/io/split/android/client/utils/deserializer/EventDeserializer.java b/main/src/main/java/io/split/android/client/utils/deserializer/EventDeserializer.java
similarity index 100%
rename from src/main/java/io/split/android/client/utils/deserializer/EventDeserializer.java
rename to main/src/main/java/io/split/android/client/utils/deserializer/EventDeserializer.java
diff --git a/src/main/java/io/split/android/client/utils/serializer/DoubleSerializer.java b/main/src/main/java/io/split/android/client/utils/serializer/DoubleSerializer.java
similarity index 100%
rename from src/main/java/io/split/android/client/utils/serializer/DoubleSerializer.java
rename to main/src/main/java/io/split/android/client/utils/serializer/DoubleSerializer.java
diff --git a/src/main/java/io/split/android/client/validators/ApiKeyValidator.java b/main/src/main/java/io/split/android/client/validators/ApiKeyValidator.java
similarity index 100%
rename from src/main/java/io/split/android/client/validators/ApiKeyValidator.java
rename to main/src/main/java/io/split/android/client/validators/ApiKeyValidator.java
diff --git a/src/main/java/io/split/android/client/validators/ApiKeyValidatorImpl.java b/main/src/main/java/io/split/android/client/validators/ApiKeyValidatorImpl.java
similarity index 100%
rename from src/main/java/io/split/android/client/validators/ApiKeyValidatorImpl.java
rename to main/src/main/java/io/split/android/client/validators/ApiKeyValidatorImpl.java
diff --git a/src/main/java/io/split/android/client/validators/AttributesValidator.java b/main/src/main/java/io/split/android/client/validators/AttributesValidator.java
similarity index 100%
rename from src/main/java/io/split/android/client/validators/AttributesValidator.java
rename to main/src/main/java/io/split/android/client/validators/AttributesValidator.java
diff --git a/src/main/java/io/split/android/client/validators/AttributesValidatorImpl.java b/main/src/main/java/io/split/android/client/validators/AttributesValidatorImpl.java
similarity index 100%
rename from src/main/java/io/split/android/client/validators/AttributesValidatorImpl.java
rename to main/src/main/java/io/split/android/client/validators/AttributesValidatorImpl.java
diff --git a/src/main/java/io/split/android/client/validators/EventValidator.java b/main/src/main/java/io/split/android/client/validators/EventValidator.java
similarity index 100%
rename from src/main/java/io/split/android/client/validators/EventValidator.java
rename to main/src/main/java/io/split/android/client/validators/EventValidator.java
diff --git a/src/main/java/io/split/android/client/validators/EventValidatorImpl.java b/main/src/main/java/io/split/android/client/validators/EventValidatorImpl.java
similarity index 100%
rename from src/main/java/io/split/android/client/validators/EventValidatorImpl.java
rename to main/src/main/java/io/split/android/client/validators/EventValidatorImpl.java
diff --git a/src/main/java/io/split/android/client/validators/FlagSetsValidatorImpl.java b/main/src/main/java/io/split/android/client/validators/FlagSetsValidatorImpl.java
similarity index 100%
rename from src/main/java/io/split/android/client/validators/FlagSetsValidatorImpl.java
rename to main/src/main/java/io/split/android/client/validators/FlagSetsValidatorImpl.java
diff --git a/src/main/java/io/split/android/client/validators/KeyValidator.java b/main/src/main/java/io/split/android/client/validators/KeyValidator.java
similarity index 100%
rename from src/main/java/io/split/android/client/validators/KeyValidator.java
rename to main/src/main/java/io/split/android/client/validators/KeyValidator.java
diff --git a/src/main/java/io/split/android/client/validators/KeyValidatorImpl.java b/main/src/main/java/io/split/android/client/validators/KeyValidatorImpl.java
similarity index 100%
rename from src/main/java/io/split/android/client/validators/KeyValidatorImpl.java
rename to main/src/main/java/io/split/android/client/validators/KeyValidatorImpl.java
diff --git a/src/main/java/io/split/android/client/validators/PrefixValidator.java b/main/src/main/java/io/split/android/client/validators/PrefixValidator.java
similarity index 100%
rename from src/main/java/io/split/android/client/validators/PrefixValidator.java
rename to main/src/main/java/io/split/android/client/validators/PrefixValidator.java
diff --git a/src/main/java/io/split/android/client/validators/PrefixValidatorImpl.java b/main/src/main/java/io/split/android/client/validators/PrefixValidatorImpl.java
similarity index 100%
rename from src/main/java/io/split/android/client/validators/PrefixValidatorImpl.java
rename to main/src/main/java/io/split/android/client/validators/PrefixValidatorImpl.java
diff --git a/src/main/java/io/split/android/client/validators/PropertyValidator.java b/main/src/main/java/io/split/android/client/validators/PropertyValidator.java
similarity index 100%
rename from src/main/java/io/split/android/client/validators/PropertyValidator.java
rename to main/src/main/java/io/split/android/client/validators/PropertyValidator.java
diff --git a/src/main/java/io/split/android/client/validators/SplitFilterValidator.java b/main/src/main/java/io/split/android/client/validators/SplitFilterValidator.java
similarity index 100%
rename from src/main/java/io/split/android/client/validators/SplitFilterValidator.java
rename to main/src/main/java/io/split/android/client/validators/SplitFilterValidator.java
diff --git a/src/main/java/io/split/android/client/validators/SplitValidator.java b/main/src/main/java/io/split/android/client/validators/SplitValidator.java
similarity index 100%
rename from src/main/java/io/split/android/client/validators/SplitValidator.java
rename to main/src/main/java/io/split/android/client/validators/SplitValidator.java
diff --git a/src/main/java/io/split/android/client/validators/SplitValidatorImpl.java b/main/src/main/java/io/split/android/client/validators/SplitValidatorImpl.java
similarity index 100%
rename from src/main/java/io/split/android/client/validators/SplitValidatorImpl.java
rename to main/src/main/java/io/split/android/client/validators/SplitValidatorImpl.java
diff --git a/src/main/java/io/split/android/client/validators/TreatmentManager.java b/main/src/main/java/io/split/android/client/validators/TreatmentManager.java
similarity index 100%
rename from src/main/java/io/split/android/client/validators/TreatmentManager.java
rename to main/src/main/java/io/split/android/client/validators/TreatmentManager.java
diff --git a/src/main/java/io/split/android/client/validators/TreatmentManagerFactory.java b/main/src/main/java/io/split/android/client/validators/TreatmentManagerFactory.java
similarity index 100%
rename from src/main/java/io/split/android/client/validators/TreatmentManagerFactory.java
rename to main/src/main/java/io/split/android/client/validators/TreatmentManagerFactory.java
diff --git a/src/main/java/io/split/android/client/validators/TreatmentManagerFactoryImpl.java b/main/src/main/java/io/split/android/client/validators/TreatmentManagerFactoryImpl.java
similarity index 100%
rename from src/main/java/io/split/android/client/validators/TreatmentManagerFactoryImpl.java
rename to main/src/main/java/io/split/android/client/validators/TreatmentManagerFactoryImpl.java
diff --git a/src/main/java/io/split/android/client/validators/TreatmentManagerHelper.java b/main/src/main/java/io/split/android/client/validators/TreatmentManagerHelper.java
similarity index 100%
rename from src/main/java/io/split/android/client/validators/TreatmentManagerHelper.java
rename to main/src/main/java/io/split/android/client/validators/TreatmentManagerHelper.java
diff --git a/src/main/java/io/split/android/client/validators/TreatmentManagerImpl.java b/main/src/main/java/io/split/android/client/validators/TreatmentManagerImpl.java
similarity index 100%
rename from src/main/java/io/split/android/client/validators/TreatmentManagerImpl.java
rename to main/src/main/java/io/split/android/client/validators/TreatmentManagerImpl.java
diff --git a/src/main/java/io/split/android/client/validators/ValidationConfig.java b/main/src/main/java/io/split/android/client/validators/ValidationConfig.java
similarity index 100%
rename from src/main/java/io/split/android/client/validators/ValidationConfig.java
rename to main/src/main/java/io/split/android/client/validators/ValidationConfig.java
diff --git a/src/main/java/io/split/android/client/validators/ValidationErrorInfo.java b/main/src/main/java/io/split/android/client/validators/ValidationErrorInfo.java
similarity index 100%
rename from src/main/java/io/split/android/client/validators/ValidationErrorInfo.java
rename to main/src/main/java/io/split/android/client/validators/ValidationErrorInfo.java
diff --git a/src/main/java/io/split/android/client/validators/ValidationMessageLogger.java b/main/src/main/java/io/split/android/client/validators/ValidationMessageLogger.java
similarity index 100%
rename from src/main/java/io/split/android/client/validators/ValidationMessageLogger.java
rename to main/src/main/java/io/split/android/client/validators/ValidationMessageLogger.java
diff --git a/src/main/java/io/split/android/client/validators/ValidationMessageLoggerImpl.java b/main/src/main/java/io/split/android/client/validators/ValidationMessageLoggerImpl.java
similarity index 100%
rename from src/main/java/io/split/android/client/validators/ValidationMessageLoggerImpl.java
rename to main/src/main/java/io/split/android/client/validators/ValidationMessageLoggerImpl.java
diff --git a/src/main/java/io/split/android/engine/experiments/DefaultConditionsProvider.java b/main/src/main/java/io/split/android/engine/experiments/DefaultConditionsProvider.java
similarity index 100%
rename from src/main/java/io/split/android/engine/experiments/DefaultConditionsProvider.java
rename to main/src/main/java/io/split/android/engine/experiments/DefaultConditionsProvider.java
diff --git a/src/main/java/io/split/android/engine/experiments/FetcherPolicy.java b/main/src/main/java/io/split/android/engine/experiments/FetcherPolicy.java
similarity index 100%
rename from src/main/java/io/split/android/engine/experiments/FetcherPolicy.java
rename to main/src/main/java/io/split/android/engine/experiments/FetcherPolicy.java
diff --git a/src/main/java/io/split/android/engine/experiments/ParsedCondition.java b/main/src/main/java/io/split/android/engine/experiments/ParsedCondition.java
similarity index 100%
rename from src/main/java/io/split/android/engine/experiments/ParsedCondition.java
rename to main/src/main/java/io/split/android/engine/experiments/ParsedCondition.java
diff --git a/src/main/java/io/split/android/engine/experiments/ParsedRuleBasedSegment.java b/main/src/main/java/io/split/android/engine/experiments/ParsedRuleBasedSegment.java
similarity index 100%
rename from src/main/java/io/split/android/engine/experiments/ParsedRuleBasedSegment.java
rename to main/src/main/java/io/split/android/engine/experiments/ParsedRuleBasedSegment.java
diff --git a/src/main/java/io/split/android/engine/experiments/ParsedSplit.java b/main/src/main/java/io/split/android/engine/experiments/ParsedSplit.java
similarity index 100%
rename from src/main/java/io/split/android/engine/experiments/ParsedSplit.java
rename to main/src/main/java/io/split/android/engine/experiments/ParsedSplit.java
diff --git a/src/main/java/io/split/android/engine/experiments/Parser.java b/main/src/main/java/io/split/android/engine/experiments/Parser.java
similarity index 100%
rename from src/main/java/io/split/android/engine/experiments/Parser.java
rename to main/src/main/java/io/split/android/engine/experiments/Parser.java
diff --git a/src/main/java/io/split/android/engine/experiments/ParserCommons.java b/main/src/main/java/io/split/android/engine/experiments/ParserCommons.java
similarity index 100%
rename from src/main/java/io/split/android/engine/experiments/ParserCommons.java
rename to main/src/main/java/io/split/android/engine/experiments/ParserCommons.java
diff --git a/src/main/java/io/split/android/engine/experiments/RuleBasedSegmentParser.java b/main/src/main/java/io/split/android/engine/experiments/RuleBasedSegmentParser.java
similarity index 100%
rename from src/main/java/io/split/android/engine/experiments/RuleBasedSegmentParser.java
rename to main/src/main/java/io/split/android/engine/experiments/RuleBasedSegmentParser.java
diff --git a/src/main/java/io/split/android/engine/experiments/SplitFetcher.java b/main/src/main/java/io/split/android/engine/experiments/SplitFetcher.java
similarity index 100%
rename from src/main/java/io/split/android/engine/experiments/SplitFetcher.java
rename to main/src/main/java/io/split/android/engine/experiments/SplitFetcher.java
diff --git a/src/main/java/io/split/android/engine/experiments/SplitParser.java b/main/src/main/java/io/split/android/engine/experiments/SplitParser.java
similarity index 100%
rename from src/main/java/io/split/android/engine/experiments/SplitParser.java
rename to main/src/main/java/io/split/android/engine/experiments/SplitParser.java
diff --git a/src/main/java/io/split/android/engine/experiments/UnsupportedMatcherException.java b/main/src/main/java/io/split/android/engine/experiments/UnsupportedMatcherException.java
similarity index 100%
rename from src/main/java/io/split/android/engine/experiments/UnsupportedMatcherException.java
rename to main/src/main/java/io/split/android/engine/experiments/UnsupportedMatcherException.java
diff --git a/src/main/java/io/split/android/engine/matchers/AllKeysMatcher.java b/main/src/main/java/io/split/android/engine/matchers/AllKeysMatcher.java
similarity index 100%
rename from src/main/java/io/split/android/engine/matchers/AllKeysMatcher.java
rename to main/src/main/java/io/split/android/engine/matchers/AllKeysMatcher.java
diff --git a/src/main/java/io/split/android/engine/matchers/AttributeMatcher.java b/main/src/main/java/io/split/android/engine/matchers/AttributeMatcher.java
similarity index 100%
rename from src/main/java/io/split/android/engine/matchers/AttributeMatcher.java
rename to main/src/main/java/io/split/android/engine/matchers/AttributeMatcher.java
diff --git a/src/main/java/io/split/android/engine/matchers/BetweenMatcher.java b/main/src/main/java/io/split/android/engine/matchers/BetweenMatcher.java
similarity index 100%
rename from src/main/java/io/split/android/engine/matchers/BetweenMatcher.java
rename to main/src/main/java/io/split/android/engine/matchers/BetweenMatcher.java
diff --git a/src/main/java/io/split/android/engine/matchers/BooleanMatcher.java b/main/src/main/java/io/split/android/engine/matchers/BooleanMatcher.java
similarity index 100%
rename from src/main/java/io/split/android/engine/matchers/BooleanMatcher.java
rename to main/src/main/java/io/split/android/engine/matchers/BooleanMatcher.java
diff --git a/src/main/java/io/split/android/engine/matchers/CombiningMatcher.java b/main/src/main/java/io/split/android/engine/matchers/CombiningMatcher.java
similarity index 100%
rename from src/main/java/io/split/android/engine/matchers/CombiningMatcher.java
rename to main/src/main/java/io/split/android/engine/matchers/CombiningMatcher.java
diff --git a/src/main/java/io/split/android/engine/matchers/DependencyMatcher.java b/main/src/main/java/io/split/android/engine/matchers/DependencyMatcher.java
similarity index 100%
rename from src/main/java/io/split/android/engine/matchers/DependencyMatcher.java
rename to main/src/main/java/io/split/android/engine/matchers/DependencyMatcher.java
diff --git a/src/main/java/io/split/android/engine/matchers/EqualToMatcher.java b/main/src/main/java/io/split/android/engine/matchers/EqualToMatcher.java
similarity index 100%
rename from src/main/java/io/split/android/engine/matchers/EqualToMatcher.java
rename to main/src/main/java/io/split/android/engine/matchers/EqualToMatcher.java
diff --git a/src/main/java/io/split/android/engine/matchers/GreaterThanOrEqualToMatcher.java b/main/src/main/java/io/split/android/engine/matchers/GreaterThanOrEqualToMatcher.java
similarity index 100%
rename from src/main/java/io/split/android/engine/matchers/GreaterThanOrEqualToMatcher.java
rename to main/src/main/java/io/split/android/engine/matchers/GreaterThanOrEqualToMatcher.java
diff --git a/src/main/java/io/split/android/engine/matchers/InRuleBasedSegmentMatcher.java b/main/src/main/java/io/split/android/engine/matchers/InRuleBasedSegmentMatcher.java
similarity index 100%
rename from src/main/java/io/split/android/engine/matchers/InRuleBasedSegmentMatcher.java
rename to main/src/main/java/io/split/android/engine/matchers/InRuleBasedSegmentMatcher.java
diff --git a/src/main/java/io/split/android/engine/matchers/LessThanOrEqualToMatcher.java b/main/src/main/java/io/split/android/engine/matchers/LessThanOrEqualToMatcher.java
similarity index 100%
rename from src/main/java/io/split/android/engine/matchers/LessThanOrEqualToMatcher.java
rename to main/src/main/java/io/split/android/engine/matchers/LessThanOrEqualToMatcher.java
diff --git a/src/main/java/io/split/android/engine/matchers/Matcher.java b/main/src/main/java/io/split/android/engine/matchers/Matcher.java
similarity index 100%
rename from src/main/java/io/split/android/engine/matchers/Matcher.java
rename to main/src/main/java/io/split/android/engine/matchers/Matcher.java
diff --git a/src/main/java/io/split/android/engine/matchers/MySegmentsMatcher.java b/main/src/main/java/io/split/android/engine/matchers/MySegmentsMatcher.java
similarity index 100%
rename from src/main/java/io/split/android/engine/matchers/MySegmentsMatcher.java
rename to main/src/main/java/io/split/android/engine/matchers/MySegmentsMatcher.java
diff --git a/src/main/java/io/split/android/engine/matchers/PrerequisitesMatcher.java b/main/src/main/java/io/split/android/engine/matchers/PrerequisitesMatcher.java
similarity index 100%
rename from src/main/java/io/split/android/engine/matchers/PrerequisitesMatcher.java
rename to main/src/main/java/io/split/android/engine/matchers/PrerequisitesMatcher.java
diff --git a/src/main/java/io/split/android/engine/matchers/Transformers.java b/main/src/main/java/io/split/android/engine/matchers/Transformers.java
similarity index 100%
rename from src/main/java/io/split/android/engine/matchers/Transformers.java
rename to main/src/main/java/io/split/android/engine/matchers/Transformers.java
diff --git a/src/main/java/io/split/android/engine/matchers/collections/ContainsAllOfSetMatcher.java b/main/src/main/java/io/split/android/engine/matchers/collections/ContainsAllOfSetMatcher.java
similarity index 100%
rename from src/main/java/io/split/android/engine/matchers/collections/ContainsAllOfSetMatcher.java
rename to main/src/main/java/io/split/android/engine/matchers/collections/ContainsAllOfSetMatcher.java
diff --git a/src/main/java/io/split/android/engine/matchers/collections/ContainsAnyOfSetMatcher.java b/main/src/main/java/io/split/android/engine/matchers/collections/ContainsAnyOfSetMatcher.java
similarity index 100%
rename from src/main/java/io/split/android/engine/matchers/collections/ContainsAnyOfSetMatcher.java
rename to main/src/main/java/io/split/android/engine/matchers/collections/ContainsAnyOfSetMatcher.java
diff --git a/src/main/java/io/split/android/engine/matchers/collections/EqualToSetMatcher.java b/main/src/main/java/io/split/android/engine/matchers/collections/EqualToSetMatcher.java
similarity index 100%
rename from src/main/java/io/split/android/engine/matchers/collections/EqualToSetMatcher.java
rename to main/src/main/java/io/split/android/engine/matchers/collections/EqualToSetMatcher.java
diff --git a/src/main/java/io/split/android/engine/matchers/collections/PartOfSetMatcher.java b/main/src/main/java/io/split/android/engine/matchers/collections/PartOfSetMatcher.java
similarity index 100%
rename from src/main/java/io/split/android/engine/matchers/collections/PartOfSetMatcher.java
rename to main/src/main/java/io/split/android/engine/matchers/collections/PartOfSetMatcher.java
diff --git a/src/main/java/io/split/android/engine/matchers/semver/BetweenSemverMatcher.java b/main/src/main/java/io/split/android/engine/matchers/semver/BetweenSemverMatcher.java
similarity index 100%
rename from src/main/java/io/split/android/engine/matchers/semver/BetweenSemverMatcher.java
rename to main/src/main/java/io/split/android/engine/matchers/semver/BetweenSemverMatcher.java
diff --git a/src/main/java/io/split/android/engine/matchers/semver/EqualToSemverMatcher.java b/main/src/main/java/io/split/android/engine/matchers/semver/EqualToSemverMatcher.java
similarity index 100%
rename from src/main/java/io/split/android/engine/matchers/semver/EqualToSemverMatcher.java
rename to main/src/main/java/io/split/android/engine/matchers/semver/EqualToSemverMatcher.java
diff --git a/src/main/java/io/split/android/engine/matchers/semver/GreaterThanOrEqualToSemverMatcher.java b/main/src/main/java/io/split/android/engine/matchers/semver/GreaterThanOrEqualToSemverMatcher.java
similarity index 100%
rename from src/main/java/io/split/android/engine/matchers/semver/GreaterThanOrEqualToSemverMatcher.java
rename to main/src/main/java/io/split/android/engine/matchers/semver/GreaterThanOrEqualToSemverMatcher.java
diff --git a/src/main/java/io/split/android/engine/matchers/semver/InListSemverMatcher.java b/main/src/main/java/io/split/android/engine/matchers/semver/InListSemverMatcher.java
similarity index 100%
rename from src/main/java/io/split/android/engine/matchers/semver/InListSemverMatcher.java
rename to main/src/main/java/io/split/android/engine/matchers/semver/InListSemverMatcher.java
diff --git a/src/main/java/io/split/android/engine/matchers/semver/LessThanOrEqualToSemverMatcher.java b/main/src/main/java/io/split/android/engine/matchers/semver/LessThanOrEqualToSemverMatcher.java
similarity index 100%
rename from src/main/java/io/split/android/engine/matchers/semver/LessThanOrEqualToSemverMatcher.java
rename to main/src/main/java/io/split/android/engine/matchers/semver/LessThanOrEqualToSemverMatcher.java
diff --git a/src/main/java/io/split/android/engine/matchers/semver/Semver.java b/main/src/main/java/io/split/android/engine/matchers/semver/Semver.java
similarity index 100%
rename from src/main/java/io/split/android/engine/matchers/semver/Semver.java
rename to main/src/main/java/io/split/android/engine/matchers/semver/Semver.java
diff --git a/src/main/java/io/split/android/engine/matchers/semver/SemverParseException.java b/main/src/main/java/io/split/android/engine/matchers/semver/SemverParseException.java
similarity index 100%
rename from src/main/java/io/split/android/engine/matchers/semver/SemverParseException.java
rename to main/src/main/java/io/split/android/engine/matchers/semver/SemverParseException.java
diff --git a/src/main/java/io/split/android/engine/matchers/strings/ContainsAnyOfMatcher.java b/main/src/main/java/io/split/android/engine/matchers/strings/ContainsAnyOfMatcher.java
similarity index 100%
rename from src/main/java/io/split/android/engine/matchers/strings/ContainsAnyOfMatcher.java
rename to main/src/main/java/io/split/android/engine/matchers/strings/ContainsAnyOfMatcher.java
diff --git a/src/main/java/io/split/android/engine/matchers/strings/EndsWithAnyOfMatcher.java b/main/src/main/java/io/split/android/engine/matchers/strings/EndsWithAnyOfMatcher.java
similarity index 100%
rename from src/main/java/io/split/android/engine/matchers/strings/EndsWithAnyOfMatcher.java
rename to main/src/main/java/io/split/android/engine/matchers/strings/EndsWithAnyOfMatcher.java
diff --git a/src/main/java/io/split/android/engine/matchers/strings/RegularExpressionMatcher.java b/main/src/main/java/io/split/android/engine/matchers/strings/RegularExpressionMatcher.java
similarity index 100%
rename from src/main/java/io/split/android/engine/matchers/strings/RegularExpressionMatcher.java
rename to main/src/main/java/io/split/android/engine/matchers/strings/RegularExpressionMatcher.java
diff --git a/src/main/java/io/split/android/engine/matchers/strings/StartsWithAnyOfMatcher.java b/main/src/main/java/io/split/android/engine/matchers/strings/StartsWithAnyOfMatcher.java
similarity index 100%
rename from src/main/java/io/split/android/engine/matchers/strings/StartsWithAnyOfMatcher.java
rename to main/src/main/java/io/split/android/engine/matchers/strings/StartsWithAnyOfMatcher.java
diff --git a/src/main/java/io/split/android/engine/matchers/strings/WhitelistMatcher.java b/main/src/main/java/io/split/android/engine/matchers/strings/WhitelistMatcher.java
similarity index 100%
rename from src/main/java/io/split/android/engine/matchers/strings/WhitelistMatcher.java
rename to main/src/main/java/io/split/android/engine/matchers/strings/WhitelistMatcher.java
diff --git a/src/main/java/io/split/android/engine/scheduler/PausableScheduledThreadPoolExecutor.java b/main/src/main/java/io/split/android/engine/scheduler/PausableScheduledThreadPoolExecutor.java
similarity index 100%
rename from src/main/java/io/split/android/engine/scheduler/PausableScheduledThreadPoolExecutor.java
rename to main/src/main/java/io/split/android/engine/scheduler/PausableScheduledThreadPoolExecutor.java
diff --git a/src/main/java/io/split/android/engine/scheduler/PausableScheduledThreadPoolExecutorImpl.java b/main/src/main/java/io/split/android/engine/scheduler/PausableScheduledThreadPoolExecutorImpl.java
similarity index 100%
rename from src/main/java/io/split/android/engine/scheduler/PausableScheduledThreadPoolExecutorImpl.java
rename to main/src/main/java/io/split/android/engine/scheduler/PausableScheduledThreadPoolExecutorImpl.java
diff --git a/src/main/java/io/split/android/engine/scheduler/PausableThreadPoolExecutor.java b/main/src/main/java/io/split/android/engine/scheduler/PausableThreadPoolExecutor.java
similarity index 100%
rename from src/main/java/io/split/android/engine/scheduler/PausableThreadPoolExecutor.java
rename to main/src/main/java/io/split/android/engine/scheduler/PausableThreadPoolExecutor.java
diff --git a/src/main/java/io/split/android/engine/scheduler/PausableThreadPoolExecutorImpl.java b/main/src/main/java/io/split/android/engine/scheduler/PausableThreadPoolExecutorImpl.java
similarity index 100%
rename from src/main/java/io/split/android/engine/scheduler/PausableThreadPoolExecutorImpl.java
rename to main/src/main/java/io/split/android/engine/scheduler/PausableThreadPoolExecutorImpl.java
diff --git a/src/main/java/io/split/android/engine/splitter/Splitter.java b/main/src/main/java/io/split/android/engine/splitter/Splitter.java
similarity index 100%
rename from src/main/java/io/split/android/engine/splitter/Splitter.java
rename to main/src/main/java/io/split/android/engine/splitter/Splitter.java
diff --git a/src/main/java/io/split/android/grammar/Treatments.java b/main/src/main/java/io/split/android/grammar/Treatments.java
similarity index 100%
rename from src/main/java/io/split/android/grammar/Treatments.java
rename to main/src/main/java/io/split/android/grammar/Treatments.java
diff --git a/src/sharedTest/java/helper/CompressionHelper.java b/main/src/sharedTest/java/helper/CompressionHelper.java
similarity index 100%
rename from src/sharedTest/java/helper/CompressionHelper.java
rename to main/src/sharedTest/java/helper/CompressionHelper.java
diff --git a/src/sharedTest/java/helper/TestingData.java b/main/src/sharedTest/java/helper/TestingData.java
similarity index 100%
rename from src/sharedTest/java/helper/TestingData.java
rename to main/src/sharedTest/java/helper/TestingData.java
diff --git a/src/sharedTest/java/helper/TestingHelper.java b/main/src/sharedTest/java/helper/TestingHelper.java
similarity index 100%
rename from src/sharedTest/java/helper/TestingHelper.java
rename to main/src/sharedTest/java/helper/TestingHelper.java
diff --git a/main/src/sharedTest/java/io/split/android/client/utils/logger/LogPrinterStub.java b/main/src/sharedTest/java/io/split/android/client/utils/logger/LogPrinterStub.java
new file mode 100644
index 000000000..e8c53ef3d
--- /dev/null
+++ b/main/src/sharedTest/java/io/split/android/client/utils/logger/LogPrinterStub.java
@@ -0,0 +1,66 @@
+package io.split.android.client.utils.logger;
+
+import android.util.Log;
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentLinkedDeque;
+
+public class LogPrinterStub implements LogPrinter {
+ private final Set calls = new HashSet<>();
+ private final Map> logs = new ConcurrentHashMap<>();
+
+ public LogPrinterStub() {
+ // Initialize for all Android log levels: VERBOSE(2) .. ASSERT(7)
+ for (int level = Log.VERBOSE; level <= Log.ASSERT; level++) {
+ logs.put(level, new ConcurrentLinkedDeque<>());
+ }
+ }
+
+ @Override
+ public void v(String tag, String msg, Throwable tr) {
+ logs.get(Log.VERBOSE).add(msg);
+ calls.add(Log.VERBOSE);
+ }
+
+ @Override
+ public void d(String tag, String msg, Throwable tr) {
+ logs.get(Log.DEBUG).add(msg);
+ calls.add(Log.DEBUG);
+ }
+
+ @Override
+ public void i(String tag, String msg, Throwable tr) {
+ logs.get(Log.INFO).add(msg);
+ calls.add(Log.INFO);
+ }
+
+ @Override
+ public void w(String tag, String msg, Throwable tr) {
+ logs.get(Log.WARN).add(msg);
+ calls.add(Log.WARN);
+ }
+
+ @Override
+ public void e(String tag, String msg, Throwable tr) {
+ logs.get(Log.ERROR).add(msg);
+ calls.add(Log.ERROR);
+ }
+
+ @Override
+ public void wtf(String tag, String msg, Throwable tr) {
+ logs.get(Log.ASSERT).add(msg);
+ calls.add(Log.ASSERT);
+ }
+
+ public boolean isCalled(Integer type) {
+ return calls.contains(type);
+ }
+
+ public Map> getLoggedMessages() {
+ return new HashMap<>(logs);
+ }
+}
diff --git a/src/sharedTest/java/io/split/sharedtest/fake/HttpStreamResponseMock.java b/main/src/sharedTest/java/io/split/sharedtest/fake/HttpStreamResponseMock.java
similarity index 100%
rename from src/sharedTest/java/io/split/sharedtest/fake/HttpStreamResponseMock.java
rename to main/src/sharedTest/java/io/split/sharedtest/fake/HttpStreamResponseMock.java
diff --git a/src/test/java/android/util/Base64.java b/main/src/test/java/android/util/Base64.java
similarity index 100%
rename from src/test/java/android/util/Base64.java
rename to main/src/test/java/android/util/Base64.java
diff --git a/src/test/java/io/split/android/BCryptTest.java b/main/src/test/java/io/split/android/BCryptTest.java
similarity index 100%
rename from src/test/java/io/split/android/BCryptTest.java
rename to main/src/test/java/io/split/android/BCryptTest.java
diff --git a/src/test/java/io/split/android/FolderForApiKeyTest.java b/main/src/test/java/io/split/android/FolderForApiKeyTest.java
similarity index 100%
rename from src/test/java/io/split/android/FolderForApiKeyTest.java
rename to main/src/test/java/io/split/android/FolderForApiKeyTest.java
diff --git a/src/test/java/io/split/android/SplitConfigurationsParsingTests.java b/main/src/test/java/io/split/android/SplitConfigurationsParsingTests.java
similarity index 100%
rename from src/test/java/io/split/android/SplitConfigurationsParsingTests.java
rename to main/src/test/java/io/split/android/SplitConfigurationsParsingTests.java
diff --git a/src/test/java/io/split/android/client/DestroyerTest.java b/main/src/test/java/io/split/android/client/DestroyerTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/DestroyerTest.java
rename to main/src/test/java/io/split/android/client/DestroyerTest.java
diff --git a/src/test/java/io/split/android/client/EvaluationOptionsTest.java b/main/src/test/java/io/split/android/client/EvaluationOptionsTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/EvaluationOptionsTest.java
rename to main/src/test/java/io/split/android/client/EvaluationOptionsTest.java
diff --git a/src/test/java/io/split/android/client/FactoryMonitorTest.java b/main/src/test/java/io/split/android/client/FactoryMonitorTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/FactoryMonitorTest.java
rename to main/src/test/java/io/split/android/client/FactoryMonitorTest.java
diff --git a/src/test/java/io/split/android/client/FileStorageTest.java b/main/src/test/java/io/split/android/client/FileStorageTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/FileStorageTest.java
rename to main/src/test/java/io/split/android/client/FileStorageTest.java
diff --git a/src/test/java/io/split/android/client/FilterBuilderTest.java b/main/src/test/java/io/split/android/client/FilterBuilderTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/FilterBuilderTest.java
rename to main/src/test/java/io/split/android/client/FilterBuilderTest.java
diff --git a/src/test/java/io/split/android/client/FilterGrouperTest.java b/main/src/test/java/io/split/android/client/FilterGrouperTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/FilterGrouperTest.java
rename to main/src/test/java/io/split/android/client/FilterGrouperTest.java
diff --git a/src/test/java/io/split/android/client/FlagSetsFilterImplTest.java b/main/src/test/java/io/split/android/client/FlagSetsFilterImplTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/FlagSetsFilterImplTest.java
rename to main/src/test/java/io/split/android/client/FlagSetsFilterImplTest.java
diff --git a/src/test/java/io/split/android/client/ImpressionsModeTest.java b/main/src/test/java/io/split/android/client/ImpressionsModeTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/ImpressionsModeTest.java
rename to main/src/test/java/io/split/android/client/ImpressionsModeTest.java
diff --git a/src/test/java/io/split/android/client/MySegmentsUriBuildersTest.java b/main/src/test/java/io/split/android/client/MySegmentsUriBuildersTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/MySegmentsUriBuildersTest.java
rename to main/src/test/java/io/split/android/client/MySegmentsUriBuildersTest.java
diff --git a/src/test/java/io/split/android/client/RolloutCacheConfigurationTest.java b/main/src/test/java/io/split/android/client/RolloutCacheConfigurationTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/RolloutCacheConfigurationTest.java
rename to main/src/test/java/io/split/android/client/RolloutCacheConfigurationTest.java
diff --git a/src/test/java/io/split/android/client/SplitClientConfigTest.java b/main/src/test/java/io/split/android/client/SplitClientConfigTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/SplitClientConfigTest.java
rename to main/src/test/java/io/split/android/client/SplitClientConfigTest.java
diff --git a/src/test/java/io/split/android/client/SplitClientImplAttributesTest.java b/main/src/test/java/io/split/android/client/SplitClientImplAttributesTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/SplitClientImplAttributesTest.java
rename to main/src/test/java/io/split/android/client/SplitClientImplAttributesTest.java
diff --git a/src/test/java/io/split/android/client/SplitClientImplBaseTest.java b/main/src/test/java/io/split/android/client/SplitClientImplBaseTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/SplitClientImplBaseTest.java
rename to main/src/test/java/io/split/android/client/SplitClientImplBaseTest.java
diff --git a/src/test/java/io/split/android/client/SplitClientImplEvaluationOptionsTest.java b/main/src/test/java/io/split/android/client/SplitClientImplEvaluationOptionsTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/SplitClientImplEvaluationOptionsTest.java
rename to main/src/test/java/io/split/android/client/SplitClientImplEvaluationOptionsTest.java
diff --git a/src/test/java/io/split/android/client/SplitClientImplFlagSetsTest.java b/main/src/test/java/io/split/android/client/SplitClientImplFlagSetsTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/SplitClientImplFlagSetsTest.java
rename to main/src/test/java/io/split/android/client/SplitClientImplFlagSetsTest.java
diff --git a/src/test/java/io/split/android/client/SplitClientImplLegacyTest.java b/main/src/test/java/io/split/android/client/SplitClientImplLegacyTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/SplitClientImplLegacyTest.java
rename to main/src/test/java/io/split/android/client/SplitClientImplLegacyTest.java
diff --git a/src/test/java/io/split/android/client/SplitFactoryHelperTest.kt b/main/src/test/java/io/split/android/client/SplitFactoryHelperTest.kt
similarity index 100%
rename from src/test/java/io/split/android/client/SplitFactoryHelperTest.kt
rename to main/src/test/java/io/split/android/client/SplitFactoryHelperTest.kt
diff --git a/src/test/java/io/split/android/client/SplitManagerImplTest.java b/main/src/test/java/io/split/android/client/SplitManagerImplTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/SplitManagerImplTest.java
rename to main/src/test/java/io/split/android/client/SplitManagerImplTest.java
diff --git a/src/test/java/io/split/android/client/SyncConfigTest.java b/main/src/test/java/io/split/android/client/SyncConfigTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/SyncConfigTest.java
rename to main/src/test/java/io/split/android/client/SyncConfigTest.java
diff --git a/src/test/java/io/split/android/client/TreatmentLabelsTest.java b/main/src/test/java/io/split/android/client/TreatmentLabelsTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/TreatmentLabelsTest.java
rename to main/src/test/java/io/split/android/client/TreatmentLabelsTest.java
diff --git a/src/test/java/io/split/android/client/TreatmentManagerEvaluationOptionsTest.java b/main/src/test/java/io/split/android/client/TreatmentManagerEvaluationOptionsTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/TreatmentManagerEvaluationOptionsTest.java
rename to main/src/test/java/io/split/android/client/TreatmentManagerEvaluationOptionsTest.java
diff --git a/src/test/java/io/split/android/client/TreatmentManagerExceptionsTest.java b/main/src/test/java/io/split/android/client/TreatmentManagerExceptionsTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/TreatmentManagerExceptionsTest.java
rename to main/src/test/java/io/split/android/client/TreatmentManagerExceptionsTest.java
diff --git a/src/test/java/io/split/android/client/TreatmentManagerTelemetryTest.java b/main/src/test/java/io/split/android/client/TreatmentManagerTelemetryTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/TreatmentManagerTelemetryTest.java
rename to main/src/test/java/io/split/android/client/TreatmentManagerTelemetryTest.java
diff --git a/src/test/java/io/split/android/client/TreatmentManagerTest.java b/main/src/test/java/io/split/android/client/TreatmentManagerTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/TreatmentManagerTest.java
rename to main/src/test/java/io/split/android/client/TreatmentManagerTest.java
diff --git a/src/test/java/io/split/android/client/TreatmentManagerWithFlagSetsTest.java b/main/src/test/java/io/split/android/client/TreatmentManagerWithFlagSetsTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/TreatmentManagerWithFlagSetsTest.java
rename to main/src/test/java/io/split/android/client/TreatmentManagerWithFlagSetsTest.java
diff --git a/src/test/java/io/split/android/client/UserConsentManagerTest.java b/main/src/test/java/io/split/android/client/UserConsentManagerTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/UserConsentManagerTest.java
rename to main/src/test/java/io/split/android/client/UserConsentManagerTest.java
diff --git a/src/test/java/io/split/android/client/attributes/AttributesManagerImplTest.java b/main/src/test/java/io/split/android/client/attributes/AttributesManagerImplTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/attributes/AttributesManagerImplTest.java
rename to main/src/test/java/io/split/android/client/attributes/AttributesManagerImplTest.java
diff --git a/src/test/java/io/split/android/client/attributes/AttributesMergerImplTest.java b/main/src/test/java/io/split/android/client/attributes/AttributesMergerImplTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/attributes/AttributesMergerImplTest.java
rename to main/src/test/java/io/split/android/client/attributes/AttributesMergerImplTest.java
diff --git a/src/test/java/io/split/android/client/dtos/SplitDeserializationTest.java b/main/src/test/java/io/split/android/client/dtos/SplitDeserializationTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/dtos/SplitDeserializationTest.java
rename to main/src/test/java/io/split/android/client/dtos/SplitDeserializationTest.java
diff --git a/src/test/java/io/split/android/client/events/EventsManagerCoordinatorTest.java b/main/src/test/java/io/split/android/client/events/EventsManagerCoordinatorTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/events/EventsManagerCoordinatorTest.java
rename to main/src/test/java/io/split/android/client/events/EventsManagerCoordinatorTest.java
diff --git a/src/test/java/io/split/android/client/events/EventsManagerTest.java b/main/src/test/java/io/split/android/client/events/EventsManagerTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/events/EventsManagerTest.java
rename to main/src/test/java/io/split/android/client/events/EventsManagerTest.java
diff --git a/src/test/java/io/split/android/client/events/PropertyValidatorTest.java b/main/src/test/java/io/split/android/client/events/PropertyValidatorTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/events/PropertyValidatorTest.java
rename to main/src/test/java/io/split/android/client/events/PropertyValidatorTest.java
diff --git a/src/test/java/io/split/android/client/events/executors/ClientEventSplitTaskTest.java b/main/src/test/java/io/split/android/client/events/executors/ClientEventSplitTaskTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/events/executors/ClientEventSplitTaskTest.java
rename to main/src/test/java/io/split/android/client/events/executors/ClientEventSplitTaskTest.java
diff --git a/src/test/java/io/split/android/client/events/executors/SplitEventExecutorFactoryTest.java b/main/src/test/java/io/split/android/client/events/executors/SplitEventExecutorFactoryTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/events/executors/SplitEventExecutorFactoryTest.java
rename to main/src/test/java/io/split/android/client/events/executors/SplitEventExecutorFactoryTest.java
diff --git a/src/test/java/io/split/android/client/events/executors/SplitEventExecutorResourcesImplTest.java b/main/src/test/java/io/split/android/client/events/executors/SplitEventExecutorResourcesImplTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/events/executors/SplitEventExecutorResourcesImplTest.java
rename to main/src/test/java/io/split/android/client/events/executors/SplitEventExecutorResourcesImplTest.java
diff --git a/src/test/java/io/split/android/client/events/executors/SplitEventExecutorWithClientTest.java b/main/src/test/java/io/split/android/client/events/executors/SplitEventExecutorWithClientTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/events/executors/SplitEventExecutorWithClientTest.java
rename to main/src/test/java/io/split/android/client/events/executors/SplitEventExecutorWithClientTest.java
diff --git a/src/test/java/io/split/android/client/fallback/FallbackTreatmentTest.java b/main/src/test/java/io/split/android/client/fallback/FallbackTreatmentTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/fallback/FallbackTreatmentTest.java
rename to main/src/test/java/io/split/android/client/fallback/FallbackTreatmentTest.java
diff --git a/src/test/java/io/split/android/client/fallback/FallbackTreatmentsCalculatorTest.java b/main/src/test/java/io/split/android/client/fallback/FallbackTreatmentsCalculatorTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/fallback/FallbackTreatmentsCalculatorTest.java
rename to main/src/test/java/io/split/android/client/fallback/FallbackTreatmentsCalculatorTest.java
diff --git a/src/test/java/io/split/android/client/fallback/FallbackTreatmentsConfigurationTest.java b/main/src/test/java/io/split/android/client/fallback/FallbackTreatmentsConfigurationTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/fallback/FallbackTreatmentsConfigurationTest.java
rename to main/src/test/java/io/split/android/client/fallback/FallbackTreatmentsConfigurationTest.java
diff --git a/src/test/java/io/split/android/client/fallback/FallbacksSanitizerImplTest.java b/main/src/test/java/io/split/android/client/fallback/FallbacksSanitizerImplTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/fallback/FallbacksSanitizerImplTest.java
rename to main/src/test/java/io/split/android/client/fallback/FallbacksSanitizerImplTest.java
diff --git a/src/test/java/io/split/android/client/impressions/ImpressionLoggingTaskTest.java b/main/src/test/java/io/split/android/client/impressions/ImpressionLoggingTaskTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/impressions/ImpressionLoggingTaskTest.java
rename to main/src/test/java/io/split/android/client/impressions/ImpressionLoggingTaskTest.java
diff --git a/src/test/java/io/split/android/client/impressions/SyncImpressionListenerTest.java b/main/src/test/java/io/split/android/client/impressions/SyncImpressionListenerTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/impressions/SyncImpressionListenerTest.java
rename to main/src/test/java/io/split/android/client/impressions/SyncImpressionListenerTest.java
diff --git a/src/test/java/io/split/android/client/localhost/LocalhostSplitClientTest.java b/main/src/test/java/io/split/android/client/localhost/LocalhostSplitClientTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/localhost/LocalhostSplitClientTest.java
rename to main/src/test/java/io/split/android/client/localhost/LocalhostSplitClientTest.java
diff --git a/src/test/java/io/split/android/client/localhost/LocalhostSplitFactoryTest.java b/main/src/test/java/io/split/android/client/localhost/LocalhostSplitFactoryTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/localhost/LocalhostSplitFactoryTest.java
rename to main/src/test/java/io/split/android/client/localhost/LocalhostSplitFactoryTest.java
diff --git a/src/test/java/io/split/android/client/localhost/LocalhostSplitFactoryTestBuilder.java b/main/src/test/java/io/split/android/client/localhost/LocalhostSplitFactoryTestBuilder.java
similarity index 100%
rename from src/test/java/io/split/android/client/localhost/LocalhostSplitFactoryTestBuilder.java
rename to main/src/test/java/io/split/android/client/localhost/LocalhostSplitFactoryTestBuilder.java
diff --git a/src/test/java/io/split/android/client/localhost/LocalhostYamlParserTest.java b/main/src/test/java/io/split/android/client/localhost/LocalhostYamlParserTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/localhost/LocalhostYamlParserTest.java
rename to main/src/test/java/io/split/android/client/localhost/LocalhostYamlParserTest.java
diff --git a/src/test/java/io/split/android/client/localhost/shared/LocalhostSplitClientContainerImplTest.java b/main/src/test/java/io/split/android/client/localhost/shared/LocalhostSplitClientContainerImplTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/localhost/shared/LocalhostSplitClientContainerImplTest.java
rename to main/src/test/java/io/split/android/client/localhost/shared/LocalhostSplitClientContainerImplTest.java
diff --git a/src/test/java/io/split/android/client/metrics/BinarySearchLatencyTrackerTest.java b/main/src/test/java/io/split/android/client/metrics/BinarySearchLatencyTrackerTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/metrics/BinarySearchLatencyTrackerTest.java
rename to main/src/test/java/io/split/android/client/metrics/BinarySearchLatencyTrackerTest.java
diff --git a/src/test/java/io/split/android/client/network/CertificateCheckerHelperTest.java b/main/src/test/java/io/split/android/client/network/CertificateCheckerHelperTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/network/CertificateCheckerHelperTest.java
rename to main/src/test/java/io/split/android/client/network/CertificateCheckerHelperTest.java
diff --git a/src/test/java/io/split/android/client/network/CertificateCheckerImplTest.java b/main/src/test/java/io/split/android/client/network/CertificateCheckerImplTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/network/CertificateCheckerImplTest.java
rename to main/src/test/java/io/split/android/client/network/CertificateCheckerImplTest.java
diff --git a/src/test/java/io/split/android/client/network/CertificatePinningConfigurationProviderTest.java b/main/src/test/java/io/split/android/client/network/CertificatePinningConfigurationProviderTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/network/CertificatePinningConfigurationProviderTest.java
rename to main/src/test/java/io/split/android/client/network/CertificatePinningConfigurationProviderTest.java
diff --git a/src/test/java/io/split/android/client/network/CertificatePinningConfigurationTest.java b/main/src/test/java/io/split/android/client/network/CertificatePinningConfigurationTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/network/CertificatePinningConfigurationTest.java
rename to main/src/test/java/io/split/android/client/network/CertificatePinningConfigurationTest.java
diff --git a/src/test/java/io/split/android/client/network/ChainCleanerImplTest.java b/main/src/test/java/io/split/android/client/network/ChainCleanerImplTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/network/ChainCleanerImplTest.java
rename to main/src/test/java/io/split/android/client/network/ChainCleanerImplTest.java
diff --git a/src/test/java/io/split/android/client/network/DefaultBase64EncoderTest.java b/main/src/test/java/io/split/android/client/network/DefaultBase64EncoderTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/network/DefaultBase64EncoderTest.java
rename to main/src/test/java/io/split/android/client/network/DefaultBase64EncoderTest.java
diff --git a/src/test/java/io/split/android/client/network/HttpClientTest.java b/main/src/test/java/io/split/android/client/network/HttpClientTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/network/HttpClientTest.java
rename to main/src/test/java/io/split/android/client/network/HttpClientTest.java
diff --git a/src/test/java/io/split/android/client/network/HttpClientTunnellingProxyTest.java b/main/src/test/java/io/split/android/client/network/HttpClientTunnellingProxyTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/network/HttpClientTunnellingProxyTest.java
rename to main/src/test/java/io/split/android/client/network/HttpClientTunnellingProxyTest.java
diff --git a/src/test/java/io/split/android/client/network/HttpOverTunnelExecutorTest.java b/main/src/test/java/io/split/android/client/network/HttpOverTunnelExecutorTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/network/HttpOverTunnelExecutorTest.java
rename to main/src/test/java/io/split/android/client/network/HttpOverTunnelExecutorTest.java
diff --git a/src/test/java/io/split/android/client/network/HttpRequestHelperTest.java b/main/src/test/java/io/split/android/client/network/HttpRequestHelperTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/network/HttpRequestHelperTest.java
rename to main/src/test/java/io/split/android/client/network/HttpRequestHelperTest.java
diff --git a/src/test/java/io/split/android/client/network/HttpResponseConnectionAdapterTest.java b/main/src/test/java/io/split/android/client/network/HttpResponseConnectionAdapterTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/network/HttpResponseConnectionAdapterTest.java
rename to main/src/test/java/io/split/android/client/network/HttpResponseConnectionAdapterTest.java
diff --git a/src/test/java/io/split/android/client/network/HttpStreamResponseTest.java b/main/src/test/java/io/split/android/client/network/HttpStreamResponseTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/network/HttpStreamResponseTest.java
rename to main/src/test/java/io/split/android/client/network/HttpStreamResponseTest.java
diff --git a/src/test/java/io/split/android/client/network/PinEncoderImplTest.java b/main/src/test/java/io/split/android/client/network/PinEncoderImplTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/network/PinEncoderImplTest.java
rename to main/src/test/java/io/split/android/client/network/PinEncoderImplTest.java
diff --git a/src/test/java/io/split/android/client/network/ProxyConfigurationTest.java b/main/src/test/java/io/split/android/client/network/ProxyConfigurationTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/network/ProxyConfigurationTest.java
rename to main/src/test/java/io/split/android/client/network/ProxyConfigurationTest.java
diff --git a/src/test/java/io/split/android/client/network/ProxySslSocketFactoryProviderImplTest.java b/main/src/test/java/io/split/android/client/network/ProxySslSocketFactoryProviderImplTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/network/ProxySslSocketFactoryProviderImplTest.java
rename to main/src/test/java/io/split/android/client/network/ProxySslSocketFactoryProviderImplTest.java
diff --git a/src/test/java/io/split/android/client/network/RawHttpResponseParserTest.java b/main/src/test/java/io/split/android/client/network/RawHttpResponseParserTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/network/RawHttpResponseParserTest.java
rename to main/src/test/java/io/split/android/client/network/RawHttpResponseParserTest.java
diff --git a/src/test/java/io/split/android/client/network/SdkTargetPathTest.java b/main/src/test/java/io/split/android/client/network/SdkTargetPathTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/network/SdkTargetPathTest.java
rename to main/src/test/java/io/split/android/client/network/SdkTargetPathTest.java
diff --git a/src/test/java/io/split/android/client/network/SplitAuthenticatorTest.java b/main/src/test/java/io/split/android/client/network/SplitAuthenticatorTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/network/SplitAuthenticatorTest.java
rename to main/src/test/java/io/split/android/client/network/SplitAuthenticatorTest.java
diff --git a/src/test/java/io/split/android/client/network/SplitBasicAuthenticatorTest.java b/main/src/test/java/io/split/android/client/network/SplitBasicAuthenticatorTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/network/SplitBasicAuthenticatorTest.java
rename to main/src/test/java/io/split/android/client/network/SplitBasicAuthenticatorTest.java
diff --git a/src/test/java/io/split/android/client/network/SplitUrlConnectionAuthenticatorTest.java b/main/src/test/java/io/split/android/client/network/SplitUrlConnectionAuthenticatorTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/network/SplitUrlConnectionAuthenticatorTest.java
rename to main/src/test/java/io/split/android/client/network/SplitUrlConnectionAuthenticatorTest.java
diff --git a/src/test/java/io/split/android/client/network/SslProxyTunnelEstablisherTest.java b/main/src/test/java/io/split/android/client/network/SslProxyTunnelEstablisherTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/network/SslProxyTunnelEstablisherTest.java
rename to main/src/test/java/io/split/android/client/network/SslProxyTunnelEstablisherTest.java
diff --git a/src/test/java/io/split/android/client/network/TrustManagerProviderTest.java b/main/src/test/java/io/split/android/client/network/TrustManagerProviderTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/network/TrustManagerProviderTest.java
rename to main/src/test/java/io/split/android/client/network/TrustManagerProviderTest.java
diff --git a/src/test/java/io/split/android/client/service/EventsRecorderTaskTest.java b/main/src/test/java/io/split/android/client/service/EventsRecorderTaskTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/service/EventsRecorderTaskTest.java
rename to main/src/test/java/io/split/android/client/service/EventsRecorderTaskTest.java
diff --git a/src/test/java/io/split/android/client/service/FilterSplitsInCacheTaskTest.java b/main/src/test/java/io/split/android/client/service/FilterSplitsInCacheTaskTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/service/FilterSplitsInCacheTaskTest.java
rename to main/src/test/java/io/split/android/client/service/FilterSplitsInCacheTaskTest.java
diff --git a/src/test/java/io/split/android/client/service/HttpFetcherTest.java b/main/src/test/java/io/split/android/client/service/HttpFetcherTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/service/HttpFetcherTest.java
rename to main/src/test/java/io/split/android/client/service/HttpFetcherTest.java
diff --git a/src/test/java/io/split/android/client/service/HttpRecorderTest.java b/main/src/test/java/io/split/android/client/service/HttpRecorderTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/service/HttpRecorderTest.java
rename to main/src/test/java/io/split/android/client/service/HttpRecorderTest.java
diff --git a/src/test/java/io/split/android/client/service/ImpressionHasherTest.java b/main/src/test/java/io/split/android/client/service/ImpressionHasherTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/service/ImpressionHasherTest.java
rename to main/src/test/java/io/split/android/client/service/ImpressionHasherTest.java
diff --git a/src/test/java/io/split/android/client/service/ImpressionsCountRecorderTaskTest.java b/main/src/test/java/io/split/android/client/service/ImpressionsCountRecorderTaskTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/service/ImpressionsCountRecorderTaskTest.java
rename to main/src/test/java/io/split/android/client/service/ImpressionsCountRecorderTaskTest.java
diff --git a/src/test/java/io/split/android/client/service/ImpressionsCounterTest.java b/main/src/test/java/io/split/android/client/service/ImpressionsCounterTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/service/ImpressionsCounterTest.java
rename to main/src/test/java/io/split/android/client/service/ImpressionsCounterTest.java
diff --git a/src/test/java/io/split/android/client/service/ImpressionsRecorderTaskTest.java b/main/src/test/java/io/split/android/client/service/ImpressionsRecorderTaskTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/service/ImpressionsRecorderTaskTest.java
rename to main/src/test/java/io/split/android/client/service/ImpressionsRecorderTaskTest.java
diff --git a/src/test/java/io/split/android/client/service/ImpressionsRequestParserTest.java b/main/src/test/java/io/split/android/client/service/ImpressionsRequestParserTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/service/ImpressionsRequestParserTest.java
rename to main/src/test/java/io/split/android/client/service/ImpressionsRequestParserTest.java
diff --git a/src/test/java/io/split/android/client/service/LoadSplitsTaskTest.java b/main/src/test/java/io/split/android/client/service/LoadSplitsTaskTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/service/LoadSplitsTaskTest.java
rename to main/src/test/java/io/split/android/client/service/LoadSplitsTaskTest.java
diff --git a/src/test/java/io/split/android/client/service/MySegmentsChangesCheckerTest.java b/main/src/test/java/io/split/android/client/service/MySegmentsChangesCheckerTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/service/MySegmentsChangesCheckerTest.java
rename to main/src/test/java/io/split/android/client/service/MySegmentsChangesCheckerTest.java
diff --git a/src/test/java/io/split/android/client/service/MySegmentsSyncTaskTest.java b/main/src/test/java/io/split/android/client/service/MySegmentsSyncTaskTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/service/MySegmentsSyncTaskTest.java
rename to main/src/test/java/io/split/android/client/service/MySegmentsSyncTaskTest.java
diff --git a/src/test/java/io/split/android/client/service/MySegmentsUpdateTaskTest.java b/main/src/test/java/io/split/android/client/service/MySegmentsUpdateTaskTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/service/MySegmentsUpdateTaskTest.java
rename to main/src/test/java/io/split/android/client/service/MySegmentsUpdateTaskTest.java
diff --git a/src/test/java/io/split/android/client/service/SplitInPlaceUpdateTaskTest.java b/main/src/test/java/io/split/android/client/service/SplitInPlaceUpdateTaskTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/service/SplitInPlaceUpdateTaskTest.java
rename to main/src/test/java/io/split/android/client/service/SplitInPlaceUpdateTaskTest.java
diff --git a/src/test/java/io/split/android/client/service/SplitKillTaskTest.java b/main/src/test/java/io/split/android/client/service/SplitKillTaskTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/service/SplitKillTaskTest.java
rename to main/src/test/java/io/split/android/client/service/SplitKillTaskTest.java
diff --git a/src/test/java/io/split/android/client/service/SplitSyncTaskTest.java b/main/src/test/java/io/split/android/client/service/SplitSyncTaskTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/service/SplitSyncTaskTest.java
rename to main/src/test/java/io/split/android/client/service/SplitSyncTaskTest.java
diff --git a/src/test/java/io/split/android/client/service/SplitTaskExecutorTest.java b/main/src/test/java/io/split/android/client/service/SplitTaskExecutorTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/service/SplitTaskExecutorTest.java
rename to main/src/test/java/io/split/android/client/service/SplitTaskExecutorTest.java
diff --git a/src/test/java/io/split/android/client/service/SplitUpdateTaskTest.java b/main/src/test/java/io/split/android/client/service/SplitUpdateTaskTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/service/SplitUpdateTaskTest.java
rename to main/src/test/java/io/split/android/client/service/SplitUpdateTaskTest.java
diff --git a/src/test/java/io/split/android/client/service/SplitsChangesCheckerTest.java b/main/src/test/java/io/split/android/client/service/SplitsChangesCheckerTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/service/SplitsChangesCheckerTest.java
rename to main/src/test/java/io/split/android/client/service/SplitsChangesCheckerTest.java
diff --git a/src/test/java/io/split/android/client/service/SplitsSyncHelperTest.java b/main/src/test/java/io/split/android/client/service/SplitsSyncHelperTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/service/SplitsSyncHelperTest.java
rename to main/src/test/java/io/split/android/client/service/SplitsSyncHelperTest.java
diff --git a/src/test/java/io/split/android/client/service/SynchronizerTest.java b/main/src/test/java/io/split/android/client/service/SynchronizerTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/service/SynchronizerTest.java
rename to main/src/test/java/io/split/android/client/service/SynchronizerTest.java
diff --git a/src/test/java/io/split/android/client/service/attributes/ClearAttributesInPersistentStorageTaskTest.java b/main/src/test/java/io/split/android/client/service/attributes/ClearAttributesInPersistentStorageTaskTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/service/attributes/ClearAttributesInPersistentStorageTaskTest.java
rename to main/src/test/java/io/split/android/client/service/attributes/ClearAttributesInPersistentStorageTaskTest.java
diff --git a/src/test/java/io/split/android/client/service/attributes/LoadAttributesTaskTest.java b/main/src/test/java/io/split/android/client/service/attributes/LoadAttributesTaskTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/service/attributes/LoadAttributesTaskTest.java
rename to main/src/test/java/io/split/android/client/service/attributes/LoadAttributesTaskTest.java
diff --git a/src/test/java/io/split/android/client/service/attributes/UpdateAttributesInPersistentStorageTaskTest.java b/main/src/test/java/io/split/android/client/service/attributes/UpdateAttributesInPersistentStorageTaskTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/service/attributes/UpdateAttributesInPersistentStorageTaskTest.java
rename to main/src/test/java/io/split/android/client/service/attributes/UpdateAttributesInPersistentStorageTaskTest.java
diff --git a/src/test/java/io/split/android/client/service/events/EventsRequestBodySerializerTest.java b/main/src/test/java/io/split/android/client/service/events/EventsRequestBodySerializerTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/service/events/EventsRequestBodySerializerTest.java
rename to main/src/test/java/io/split/android/client/service/events/EventsRequestBodySerializerTest.java
diff --git a/src/test/java/io/split/android/client/service/events/EventsTrackerTest.java b/main/src/test/java/io/split/android/client/service/events/EventsTrackerTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/service/events/EventsTrackerTest.java
rename to main/src/test/java/io/split/android/client/service/events/EventsTrackerTest.java
diff --git a/src/test/java/io/split/android/client/service/executor/SplitTaskSerialWrapperTest.java b/main/src/test/java/io/split/android/client/service/executor/SplitTaskSerialWrapperTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/service/executor/SplitTaskSerialWrapperTest.java
rename to main/src/test/java/io/split/android/client/service/executor/SplitTaskSerialWrapperTest.java
diff --git a/src/test/java/io/split/android/client/service/executor/ThreadFactoryBuilderTest.java b/main/src/test/java/io/split/android/client/service/executor/ThreadFactoryBuilderTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/service/executor/ThreadFactoryBuilderTest.java
rename to main/src/test/java/io/split/android/client/service/executor/ThreadFactoryBuilderTest.java
diff --git a/src/test/java/io/split/android/client/service/executor/parallel/SplitParallelTaskExecutorImplTest.java b/main/src/test/java/io/split/android/client/service/executor/parallel/SplitParallelTaskExecutorImplTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/service/executor/parallel/SplitParallelTaskExecutorImplTest.java
rename to main/src/test/java/io/split/android/client/service/executor/parallel/SplitParallelTaskExecutorImplTest.java
diff --git a/src/test/java/io/split/android/client/service/http/HttpSseAuthTokenFetcherTest.java b/main/src/test/java/io/split/android/client/service/http/HttpSseAuthTokenFetcherTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/service/http/HttpSseAuthTokenFetcherTest.java
rename to main/src/test/java/io/split/android/client/service/http/HttpSseAuthTokenFetcherTest.java
diff --git a/src/test/java/io/split/android/client/service/http/mysegments/MySegmentsFetcherFactoryImplTest.java b/main/src/test/java/io/split/android/client/service/http/mysegments/MySegmentsFetcherFactoryImplTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/service/http/mysegments/MySegmentsFetcherFactoryImplTest.java
rename to main/src/test/java/io/split/android/client/service/http/mysegments/MySegmentsFetcherFactoryImplTest.java
diff --git a/src/test/java/io/split/android/client/service/impressions/ImpressionManagerRetryTimerProviderImplTest.kt b/main/src/test/java/io/split/android/client/service/impressions/ImpressionManagerRetryTimerProviderImplTest.kt
similarity index 100%
rename from src/test/java/io/split/android/client/service/impressions/ImpressionManagerRetryTimerProviderImplTest.kt
rename to main/src/test/java/io/split/android/client/service/impressions/ImpressionManagerRetryTimerProviderImplTest.kt
diff --git a/src/test/java/io/split/android/client/service/impressions/ImpressionsRequestBodySerializerTest.java b/main/src/test/java/io/split/android/client/service/impressions/ImpressionsRequestBodySerializerTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/service/impressions/ImpressionsRequestBodySerializerTest.java
rename to main/src/test/java/io/split/android/client/service/impressions/ImpressionsRequestBodySerializerTest.java
diff --git a/src/test/java/io/split/android/client/service/impressions/MemoizedSupplierTest.java b/main/src/test/java/io/split/android/client/service/impressions/MemoizedSupplierTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/service/impressions/MemoizedSupplierTest.java
rename to main/src/test/java/io/split/android/client/service/impressions/MemoizedSupplierTest.java
diff --git a/src/test/java/io/split/android/client/service/impressions/StrategyImpressionManagerTest.kt b/main/src/test/java/io/split/android/client/service/impressions/StrategyImpressionManagerTest.kt
similarity index 100%
rename from src/test/java/io/split/android/client/service/impressions/StrategyImpressionManagerTest.kt
rename to main/src/test/java/io/split/android/client/service/impressions/StrategyImpressionManagerTest.kt
diff --git a/src/test/java/io/split/android/client/service/impressions/observer/ImpressionsObserverCacheImplTest.java b/main/src/test/java/io/split/android/client/service/impressions/observer/ImpressionsObserverCacheImplTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/service/impressions/observer/ImpressionsObserverCacheImplTest.java
rename to main/src/test/java/io/split/android/client/service/impressions/observer/ImpressionsObserverCacheImplTest.java
diff --git a/src/test/java/io/split/android/client/service/impressions/observer/PeriodicPersistenceTaskTest.java b/main/src/test/java/io/split/android/client/service/impressions/observer/PeriodicPersistenceTaskTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/service/impressions/observer/PeriodicPersistenceTaskTest.java
rename to main/src/test/java/io/split/android/client/service/impressions/observer/PeriodicPersistenceTaskTest.java
diff --git a/src/test/java/io/split/android/client/service/impressions/observer/SqlitePersistentImpressionsObserverCacheStorageTest.java b/main/src/test/java/io/split/android/client/service/impressions/observer/SqlitePersistentImpressionsObserverCacheStorageTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/service/impressions/observer/SqlitePersistentImpressionsObserverCacheStorageTest.java
rename to main/src/test/java/io/split/android/client/service/impressions/observer/SqlitePersistentImpressionsObserverCacheStorageTest.java
diff --git a/src/test/java/io/split/android/client/service/impressions/strategy/DebugStrategyTest.kt b/main/src/test/java/io/split/android/client/service/impressions/strategy/DebugStrategyTest.kt
similarity index 100%
rename from src/test/java/io/split/android/client/service/impressions/strategy/DebugStrategyTest.kt
rename to main/src/test/java/io/split/android/client/service/impressions/strategy/DebugStrategyTest.kt
diff --git a/src/test/java/io/split/android/client/service/impressions/strategy/DebugTrackerTest.kt b/main/src/test/java/io/split/android/client/service/impressions/strategy/DebugTrackerTest.kt
similarity index 100%
rename from src/test/java/io/split/android/client/service/impressions/strategy/DebugTrackerTest.kt
rename to main/src/test/java/io/split/android/client/service/impressions/strategy/DebugTrackerTest.kt
diff --git a/src/test/java/io/split/android/client/service/impressions/strategy/NoneStrategyTest.kt b/main/src/test/java/io/split/android/client/service/impressions/strategy/NoneStrategyTest.kt
similarity index 100%
rename from src/test/java/io/split/android/client/service/impressions/strategy/NoneStrategyTest.kt
rename to main/src/test/java/io/split/android/client/service/impressions/strategy/NoneStrategyTest.kt
diff --git a/src/test/java/io/split/android/client/service/impressions/strategy/NoneTrackerTest.kt b/main/src/test/java/io/split/android/client/service/impressions/strategy/NoneTrackerTest.kt
similarity index 100%
rename from src/test/java/io/split/android/client/service/impressions/strategy/NoneTrackerTest.kt
rename to main/src/test/java/io/split/android/client/service/impressions/strategy/NoneTrackerTest.kt
diff --git a/src/test/java/io/split/android/client/service/impressions/strategy/OptimizedStrategyTest.kt b/main/src/test/java/io/split/android/client/service/impressions/strategy/OptimizedStrategyTest.kt
similarity index 100%
rename from src/test/java/io/split/android/client/service/impressions/strategy/OptimizedStrategyTest.kt
rename to main/src/test/java/io/split/android/client/service/impressions/strategy/OptimizedStrategyTest.kt
diff --git a/src/test/java/io/split/android/client/service/impressions/strategy/OptimizedTrackerTest.kt b/main/src/test/java/io/split/android/client/service/impressions/strategy/OptimizedTrackerTest.kt
similarity index 100%
rename from src/test/java/io/split/android/client/service/impressions/strategy/OptimizedTrackerTest.kt
rename to main/src/test/java/io/split/android/client/service/impressions/strategy/OptimizedTrackerTest.kt
diff --git a/src/test/java/io/split/android/client/service/impressions/strategy/UtilsTest.java b/main/src/test/java/io/split/android/client/service/impressions/strategy/UtilsTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/service/impressions/strategy/UtilsTest.java
rename to main/src/test/java/io/split/android/client/service/impressions/strategy/UtilsTest.java
diff --git a/src/test/java/io/split/android/client/service/impressions/unique/MTKRequestBodySerializerTest.java b/main/src/test/java/io/split/android/client/service/impressions/unique/MTKRequestBodySerializerTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/service/impressions/unique/MTKRequestBodySerializerTest.java
rename to main/src/test/java/io/split/android/client/service/impressions/unique/MTKRequestBodySerializerTest.java
diff --git a/src/test/java/io/split/android/client/service/impressions/unique/SaveUniqueImpressionsTaskTest.java b/main/src/test/java/io/split/android/client/service/impressions/unique/SaveUniqueImpressionsTaskTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/service/impressions/unique/SaveUniqueImpressionsTaskTest.java
rename to main/src/test/java/io/split/android/client/service/impressions/unique/SaveUniqueImpressionsTaskTest.java
diff --git a/src/test/java/io/split/android/client/service/impressions/unique/UniqueKeysRecorderTaskTest.java b/main/src/test/java/io/split/android/client/service/impressions/unique/UniqueKeysRecorderTaskTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/service/impressions/unique/UniqueKeysRecorderTaskTest.java
rename to main/src/test/java/io/split/android/client/service/impressions/unique/UniqueKeysRecorderTaskTest.java
diff --git a/src/test/java/io/split/android/client/service/impressions/unique/UniqueKeysTrackerImplTest.java b/main/src/test/java/io/split/android/client/service/impressions/unique/UniqueKeysTrackerImplTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/service/impressions/unique/UniqueKeysTrackerImplTest.java
rename to main/src/test/java/io/split/android/client/service/impressions/unique/UniqueKeysTrackerImplTest.java
diff --git a/src/test/java/io/split/android/client/service/mysegments/AllSegmentsResponseParserTest.java b/main/src/test/java/io/split/android/client/service/mysegments/AllSegmentsResponseParserTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/service/mysegments/AllSegmentsResponseParserTest.java
rename to main/src/test/java/io/split/android/client/service/mysegments/AllSegmentsResponseParserTest.java
diff --git a/src/test/java/io/split/android/client/service/mysegments/LoadMySegmentsTaskConfigTest.java b/main/src/test/java/io/split/android/client/service/mysegments/LoadMySegmentsTaskConfigTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/service/mysegments/LoadMySegmentsTaskConfigTest.java
rename to main/src/test/java/io/split/android/client/service/mysegments/LoadMySegmentsTaskConfigTest.java
diff --git a/src/test/java/io/split/android/client/service/mysegments/MySegmentsBulkSyncTaskTest.java b/main/src/test/java/io/split/android/client/service/mysegments/MySegmentsBulkSyncTaskTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/service/mysegments/MySegmentsBulkSyncTaskTest.java
rename to main/src/test/java/io/split/android/client/service/mysegments/MySegmentsBulkSyncTaskTest.java
diff --git a/src/test/java/io/split/android/client/service/mysegments/MySegmentsSyncTaskConfigTest.java b/main/src/test/java/io/split/android/client/service/mysegments/MySegmentsSyncTaskConfigTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/service/mysegments/MySegmentsSyncTaskConfigTest.java
rename to main/src/test/java/io/split/android/client/service/mysegments/MySegmentsSyncTaskConfigTest.java
diff --git a/src/test/java/io/split/android/client/service/mysegments/MySegmentsTaskFactoryConfigurationTest.java b/main/src/test/java/io/split/android/client/service/mysegments/MySegmentsTaskFactoryConfigurationTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/service/mysegments/MySegmentsTaskFactoryConfigurationTest.java
rename to main/src/test/java/io/split/android/client/service/mysegments/MySegmentsTaskFactoryConfigurationTest.java
diff --git a/src/test/java/io/split/android/client/service/mysegments/MySegmentsUpdateTaskConfigTest.java b/main/src/test/java/io/split/android/client/service/mysegments/MySegmentsUpdateTaskConfigTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/service/mysegments/MySegmentsUpdateTaskConfigTest.java
rename to main/src/test/java/io/split/android/client/service/mysegments/MySegmentsUpdateTaskConfigTest.java
diff --git a/src/test/java/io/split/android/client/service/rules/RuleBasedSegmentChangeProcessorTest.java b/main/src/test/java/io/split/android/client/service/rules/RuleBasedSegmentChangeProcessorTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/service/rules/RuleBasedSegmentChangeProcessorTest.java
rename to main/src/test/java/io/split/android/client/service/rules/RuleBasedSegmentChangeProcessorTest.java
diff --git a/src/test/java/io/split/android/client/service/rules/RuleBasedSegmentInPlaceUpdateTaskTest.java b/main/src/test/java/io/split/android/client/service/rules/RuleBasedSegmentInPlaceUpdateTaskTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/service/rules/RuleBasedSegmentInPlaceUpdateTaskTest.java
rename to main/src/test/java/io/split/android/client/service/rules/RuleBasedSegmentInPlaceUpdateTaskTest.java
diff --git a/src/test/java/io/split/android/client/service/rules/TargetingRulesResponseParserTest.java b/main/src/test/java/io/split/android/client/service/rules/TargetingRulesResponseParserTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/service/rules/TargetingRulesResponseParserTest.java
rename to main/src/test/java/io/split/android/client/service/rules/TargetingRulesResponseParserTest.java
diff --git a/src/test/java/io/split/android/client/service/splits/LoadSplitsTaskTest.java b/main/src/test/java/io/split/android/client/service/splits/LoadSplitsTaskTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/service/splits/LoadSplitsTaskTest.java
rename to main/src/test/java/io/split/android/client/service/splits/LoadSplitsTaskTest.java
diff --git a/src/test/java/io/split/android/client/service/splits/OutdatedSplitProxyHandlerTest.java b/main/src/test/java/io/split/android/client/service/splits/OutdatedSplitProxyHandlerTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/service/splits/OutdatedSplitProxyHandlerTest.java
rename to main/src/test/java/io/split/android/client/service/splits/OutdatedSplitProxyHandlerTest.java
diff --git a/src/test/java/io/split/android/client/service/splits/SplitChangeProcessorTest.java b/main/src/test/java/io/split/android/client/service/splits/SplitChangeProcessorTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/service/splits/SplitChangeProcessorTest.java
rename to main/src/test/java/io/split/android/client/service/splits/SplitChangeProcessorTest.java
diff --git a/src/test/java/io/split/android/client/service/splits/SplitsSyncHelperFreshInstallTest.java b/main/src/test/java/io/split/android/client/service/splits/SplitsSyncHelperFreshInstallTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/service/splits/SplitsSyncHelperFreshInstallTest.java
rename to main/src/test/java/io/split/android/client/service/splits/SplitsSyncHelperFreshInstallTest.java
diff --git a/src/test/java/io/split/android/client/service/splits/TargetingRulesCacheTest.java b/main/src/test/java/io/split/android/client/service/splits/TargetingRulesCacheTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/service/splits/TargetingRulesCacheTest.java
rename to main/src/test/java/io/split/android/client/service/splits/TargetingRulesCacheTest.java
diff --git a/src/test/java/io/split/android/client/service/sseclient/BackgroundDisconnectionTaskTest.java b/main/src/test/java/io/split/android/client/service/sseclient/BackgroundDisconnectionTaskTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/service/sseclient/BackgroundDisconnectionTaskTest.java
rename to main/src/test/java/io/split/android/client/service/sseclient/BackgroundDisconnectionTaskTest.java
diff --git a/src/test/java/io/split/android/client/service/sseclient/EventStreamParserTest.java b/main/src/test/java/io/split/android/client/service/sseclient/EventStreamParserTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/service/sseclient/EventStreamParserTest.java
rename to main/src/test/java/io/split/android/client/service/sseclient/EventStreamParserTest.java
diff --git a/src/test/java/io/split/android/client/service/sseclient/MySegmentsUpdateWorkerTest.java b/main/src/test/java/io/split/android/client/service/sseclient/MySegmentsUpdateWorkerTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/service/sseclient/MySegmentsUpdateWorkerTest.java
rename to main/src/test/java/io/split/android/client/service/sseclient/MySegmentsUpdateWorkerTest.java
diff --git a/src/test/java/io/split/android/client/service/sseclient/NotificationManagerKeeperTest.java b/main/src/test/java/io/split/android/client/service/sseclient/NotificationManagerKeeperTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/service/sseclient/NotificationManagerKeeperTest.java
rename to main/src/test/java/io/split/android/client/service/sseclient/NotificationManagerKeeperTest.java
diff --git a/src/test/java/io/split/android/client/service/sseclient/NotificationParserTest.java b/main/src/test/java/io/split/android/client/service/sseclient/NotificationParserTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/service/sseclient/NotificationParserTest.java
rename to main/src/test/java/io/split/android/client/service/sseclient/NotificationParserTest.java
diff --git a/src/test/java/io/split/android/client/service/sseclient/NotificationProcessorTest.java b/main/src/test/java/io/split/android/client/service/sseclient/NotificationProcessorTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/service/sseclient/NotificationProcessorTest.java
rename to main/src/test/java/io/split/android/client/service/sseclient/NotificationProcessorTest.java
diff --git a/src/test/java/io/split/android/client/service/sseclient/PushNotificationManagerTest.java b/main/src/test/java/io/split/android/client/service/sseclient/PushNotificationManagerTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/service/sseclient/PushNotificationManagerTest.java
rename to main/src/test/java/io/split/android/client/service/sseclient/PushNotificationManagerTest.java
diff --git a/src/test/java/io/split/android/client/service/sseclient/ReconnectBackoffCounterTest.java b/main/src/test/java/io/split/android/client/service/sseclient/ReconnectBackoffCounterTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/service/sseclient/ReconnectBackoffCounterTest.java
rename to main/src/test/java/io/split/android/client/service/sseclient/ReconnectBackoffCounterTest.java
diff --git a/src/test/java/io/split/android/client/service/sseclient/SplitUpdateWorkerTest.java b/main/src/test/java/io/split/android/client/service/sseclient/SplitUpdateWorkerTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/service/sseclient/SplitUpdateWorkerTest.java
rename to main/src/test/java/io/split/android/client/service/sseclient/SplitUpdateWorkerTest.java
diff --git a/src/test/java/io/split/android/client/service/sseclient/SseAuthenticatorTest.java b/main/src/test/java/io/split/android/client/service/sseclient/SseAuthenticatorTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/service/sseclient/SseAuthenticatorTest.java
rename to main/src/test/java/io/split/android/client/service/sseclient/SseAuthenticatorTest.java
diff --git a/src/test/java/io/split/android/client/service/sseclient/SseClientTest.java b/main/src/test/java/io/split/android/client/service/sseclient/SseClientTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/service/sseclient/SseClientTest.java
rename to main/src/test/java/io/split/android/client/service/sseclient/SseClientTest.java
diff --git a/src/test/java/io/split/android/client/service/sseclient/SseHandlerTest.java b/main/src/test/java/io/split/android/client/service/sseclient/SseHandlerTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/service/sseclient/SseHandlerTest.java
rename to main/src/test/java/io/split/android/client/service/sseclient/SseHandlerTest.java
diff --git a/src/test/java/io/split/android/client/service/sseclient/SyncManagerChannelMessageTest.java b/main/src/test/java/io/split/android/client/service/sseclient/SyncManagerChannelMessageTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/service/sseclient/SyncManagerChannelMessageTest.java
rename to main/src/test/java/io/split/android/client/service/sseclient/SyncManagerChannelMessageTest.java
diff --git a/src/test/java/io/split/android/client/service/sseclient/SyncManagerTest.java b/main/src/test/java/io/split/android/client/service/sseclient/SyncManagerTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/service/sseclient/SyncManagerTest.java
rename to main/src/test/java/io/split/android/client/service/sseclient/SyncManagerTest.java
diff --git a/src/test/java/io/split/android/client/service/sseclient/notifications/mysegments/MySegmentsNotificationProcessorImplTest.java b/main/src/test/java/io/split/android/client/service/sseclient/notifications/mysegments/MySegmentsNotificationProcessorImplTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/service/sseclient/notifications/mysegments/MySegmentsNotificationProcessorImplTest.java
rename to main/src/test/java/io/split/android/client/service/sseclient/notifications/mysegments/MySegmentsNotificationProcessorImplTest.java
diff --git a/src/test/java/io/split/android/client/service/sseclient/notifications/mysegments/SyncDelayCalculatorTest.java b/main/src/test/java/io/split/android/client/service/sseclient/notifications/mysegments/SyncDelayCalculatorTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/service/sseclient/notifications/mysegments/SyncDelayCalculatorTest.java
rename to main/src/test/java/io/split/android/client/service/sseclient/notifications/mysegments/SyncDelayCalculatorTest.java
diff --git a/src/test/java/io/split/android/client/service/sseclient/reactor/MySegmentsUpdateWorkerRegistryImplTest.java b/main/src/test/java/io/split/android/client/service/sseclient/reactor/MySegmentsUpdateWorkerRegistryImplTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/service/sseclient/reactor/MySegmentsUpdateWorkerRegistryImplTest.java
rename to main/src/test/java/io/split/android/client/service/sseclient/reactor/MySegmentsUpdateWorkerRegistryImplTest.java
diff --git a/src/test/java/io/split/android/client/service/sseclient/sseclient/PushNotificationManagerDeferredStartTaskTest.java b/main/src/test/java/io/split/android/client/service/sseclient/sseclient/PushNotificationManagerDeferredStartTaskTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/service/sseclient/sseclient/PushNotificationManagerDeferredStartTaskTest.java
rename to main/src/test/java/io/split/android/client/service/sseclient/sseclient/PushNotificationManagerDeferredStartTaskTest.java
diff --git a/src/test/java/io/split/android/client/service/sseclient/sseclient/RetryBackoffCounterTimerTest.java b/main/src/test/java/io/split/android/client/service/sseclient/sseclient/RetryBackoffCounterTimerTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/service/sseclient/sseclient/RetryBackoffCounterTimerTest.java
rename to main/src/test/java/io/split/android/client/service/sseclient/sseclient/RetryBackoffCounterTimerTest.java
diff --git a/src/test/java/io/split/android/client/service/sseclient/sseclient/SseDisconnectionTimerTest.java b/main/src/test/java/io/split/android/client/service/sseclient/sseclient/SseDisconnectionTimerTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/service/sseclient/sseclient/SseDisconnectionTimerTest.java
rename to main/src/test/java/io/split/android/client/service/sseclient/sseclient/SseDisconnectionTimerTest.java
diff --git a/src/test/java/io/split/android/client/service/sseclient/sseclient/notifications/SplitsChangeNotificationTest.java b/main/src/test/java/io/split/android/client/service/sseclient/sseclient/notifications/SplitsChangeNotificationTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/service/sseclient/sseclient/notifications/SplitsChangeNotificationTest.java
rename to main/src/test/java/io/split/android/client/service/sseclient/sseclient/notifications/SplitsChangeNotificationTest.java
diff --git a/src/test/java/io/split/android/client/service/synchronizer/FeatureFlagsSynchronizerImplTest.java b/main/src/test/java/io/split/android/client/service/synchronizer/FeatureFlagsSynchronizerImplTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/service/synchronizer/FeatureFlagsSynchronizerImplTest.java
rename to main/src/test/java/io/split/android/client/service/synchronizer/FeatureFlagsSynchronizerImplTest.java
diff --git a/src/test/java/io/split/android/client/service/synchronizer/RecorderSyncHelperImplTest.java b/main/src/test/java/io/split/android/client/service/synchronizer/RecorderSyncHelperImplTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/service/synchronizer/RecorderSyncHelperImplTest.java
rename to main/src/test/java/io/split/android/client/service/synchronizer/RecorderSyncHelperImplTest.java
diff --git a/src/test/java/io/split/android/client/service/synchronizer/RolloutCacheManagerTest.kt b/main/src/test/java/io/split/android/client/service/synchronizer/RolloutCacheManagerTest.kt
similarity index 100%
rename from src/test/java/io/split/android/client/service/synchronizer/RolloutCacheManagerTest.kt
rename to main/src/test/java/io/split/android/client/service/synchronizer/RolloutCacheManagerTest.kt
diff --git a/src/test/java/io/split/android/client/service/synchronizer/SyncGuardianImplTest.java b/main/src/test/java/io/split/android/client/service/synchronizer/SyncGuardianImplTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/service/synchronizer/SyncGuardianImplTest.java
rename to main/src/test/java/io/split/android/client/service/synchronizer/SyncGuardianImplTest.java
diff --git a/src/test/java/io/split/android/client/service/synchronizer/attributes/AttributesSynchronizerImplTest.java b/main/src/test/java/io/split/android/client/service/synchronizer/attributes/AttributesSynchronizerImplTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/service/synchronizer/attributes/AttributesSynchronizerImplTest.java
rename to main/src/test/java/io/split/android/client/service/synchronizer/attributes/AttributesSynchronizerImplTest.java
diff --git a/src/test/java/io/split/android/client/service/synchronizer/attributes/AttributesSynchronizerRegistryImplTest.java b/main/src/test/java/io/split/android/client/service/synchronizer/attributes/AttributesSynchronizerRegistryImplTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/service/synchronizer/attributes/AttributesSynchronizerRegistryImplTest.java
rename to main/src/test/java/io/split/android/client/service/synchronizer/attributes/AttributesSynchronizerRegistryImplTest.java
diff --git a/src/test/java/io/split/android/client/service/synchronizer/mysegments/MySegmentsSynchronizerImplTest.java b/main/src/test/java/io/split/android/client/service/synchronizer/mysegments/MySegmentsSynchronizerImplTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/service/synchronizer/mysegments/MySegmentsSynchronizerImplTest.java
rename to main/src/test/java/io/split/android/client/service/synchronizer/mysegments/MySegmentsSynchronizerImplTest.java
diff --git a/src/test/java/io/split/android/client/service/synchronizer/mysegments/MySegmentsSynchronizerRegistryImplTest.java b/main/src/test/java/io/split/android/client/service/synchronizer/mysegments/MySegmentsSynchronizerRegistryImplTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/service/synchronizer/mysegments/MySegmentsSynchronizerRegistryImplTest.java
rename to main/src/test/java/io/split/android/client/service/synchronizer/mysegments/MySegmentsSynchronizerRegistryImplTest.java
diff --git a/src/test/java/io/split/android/client/service/telemetry/SynchronizerImplTelemetryTest.java b/main/src/test/java/io/split/android/client/service/telemetry/SynchronizerImplTelemetryTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/service/telemetry/SynchronizerImplTelemetryTest.java
rename to main/src/test/java/io/split/android/client/service/telemetry/SynchronizerImplTelemetryTest.java
diff --git a/src/test/java/io/split/android/client/service/telemetry/TelemetryConfigRecorderTaskTest.java b/main/src/test/java/io/split/android/client/service/telemetry/TelemetryConfigRecorderTaskTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/service/telemetry/TelemetryConfigRecorderTaskTest.java
rename to main/src/test/java/io/split/android/client/service/telemetry/TelemetryConfigRecorderTaskTest.java
diff --git a/src/test/java/io/split/android/client/service/telemetry/TelemetryStatsRecorderTaskTest.java b/main/src/test/java/io/split/android/client/service/telemetry/TelemetryStatsRecorderTaskTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/service/telemetry/TelemetryStatsRecorderTaskTest.java
rename to main/src/test/java/io/split/android/client/service/telemetry/TelemetryStatsRecorderTaskTest.java
diff --git a/src/test/java/io/split/android/client/service/workmanager/HttpClientProviderTest.java b/main/src/test/java/io/split/android/client/service/workmanager/HttpClientProviderTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/service/workmanager/HttpClientProviderTest.java
rename to main/src/test/java/io/split/android/client/service/workmanager/HttpClientProviderTest.java
diff --git a/src/test/java/io/split/android/client/service/workmanager/splits/FetcherProviderTest.java b/main/src/test/java/io/split/android/client/service/workmanager/splits/FetcherProviderTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/service/workmanager/splits/FetcherProviderTest.java
rename to main/src/test/java/io/split/android/client/service/workmanager/splits/FetcherProviderTest.java
diff --git a/src/test/java/io/split/android/client/service/workmanager/splits/SplitsSyncWorkerFilterBuilderTest.java b/main/src/test/java/io/split/android/client/service/workmanager/splits/SplitsSyncWorkerFilterBuilderTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/service/workmanager/splits/SplitsSyncWorkerFilterBuilderTest.java
rename to main/src/test/java/io/split/android/client/service/workmanager/splits/SplitsSyncWorkerFilterBuilderTest.java
diff --git a/src/test/java/io/split/android/client/service/workmanager/splits/SplitsSyncWorkerParamsTest.java b/main/src/test/java/io/split/android/client/service/workmanager/splits/SplitsSyncWorkerParamsTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/service/workmanager/splits/SplitsSyncWorkerParamsTest.java
rename to main/src/test/java/io/split/android/client/service/workmanager/splits/SplitsSyncWorkerParamsTest.java
diff --git a/src/test/java/io/split/android/client/service/workmanager/splits/SplitsSyncWorkerTaskBuilderTest.java b/main/src/test/java/io/split/android/client/service/workmanager/splits/SplitsSyncWorkerTaskBuilderTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/service/workmanager/splits/SplitsSyncWorkerTaskBuilderTest.java
rename to main/src/test/java/io/split/android/client/service/workmanager/splits/SplitsSyncWorkerTaskBuilderTest.java
diff --git a/src/test/java/io/split/android/client/service/workmanager/splits/StorageProviderTest.java b/main/src/test/java/io/split/android/client/service/workmanager/splits/StorageProviderTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/service/workmanager/splits/StorageProviderTest.java
rename to main/src/test/java/io/split/android/client/service/workmanager/splits/StorageProviderTest.java
diff --git a/src/test/java/io/split/android/client/shared/ClientComponentsRegisterImplTest.java b/main/src/test/java/io/split/android/client/shared/ClientComponentsRegisterImplTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/shared/ClientComponentsRegisterImplTest.java
rename to main/src/test/java/io/split/android/client/shared/ClientComponentsRegisterImplTest.java
diff --git a/src/test/java/io/split/android/client/shared/SplitClientContainerImplTest.java b/main/src/test/java/io/split/android/client/shared/SplitClientContainerImplTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/shared/SplitClientContainerImplTest.java
rename to main/src/test/java/io/split/android/client/shared/SplitClientContainerImplTest.java
diff --git a/src/test/java/io/split/android/client/storage/attributes/AttributesStorageImplTest.java b/main/src/test/java/io/split/android/client/storage/attributes/AttributesStorageImplTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/storage/attributes/AttributesStorageImplTest.java
rename to main/src/test/java/io/split/android/client/storage/attributes/AttributesStorageImplTest.java
diff --git a/src/test/java/io/split/android/client/storage/attributes/SqLitePersistentAttributesStorageTest.java b/main/src/test/java/io/split/android/client/storage/attributes/SqLitePersistentAttributesStorageTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/storage/attributes/SqLitePersistentAttributesStorageTest.java
rename to main/src/test/java/io/split/android/client/storage/attributes/SqLitePersistentAttributesStorageTest.java
diff --git a/src/test/java/io/split/android/client/storage/cipher/ApplyCipherTaskTest.kt b/main/src/test/java/io/split/android/client/storage/cipher/ApplyCipherTaskTest.kt
similarity index 100%
rename from src/test/java/io/split/android/client/storage/cipher/ApplyCipherTaskTest.kt
rename to main/src/test/java/io/split/android/client/storage/cipher/ApplyCipherTaskTest.kt
diff --git a/src/test/java/io/split/android/client/storage/cipher/CBCCipherTest.kt b/main/src/test/java/io/split/android/client/storage/cipher/CBCCipherTest.kt
similarity index 100%
rename from src/test/java/io/split/android/client/storage/cipher/CBCCipherTest.kt
rename to main/src/test/java/io/split/android/client/storage/cipher/CBCCipherTest.kt
diff --git a/src/test/java/io/split/android/client/storage/cipher/DBCipherTest.kt b/main/src/test/java/io/split/android/client/storage/cipher/DBCipherTest.kt
similarity index 100%
rename from src/test/java/io/split/android/client/storage/cipher/DBCipherTest.kt
rename to main/src/test/java/io/split/android/client/storage/cipher/DBCipherTest.kt
diff --git a/src/test/java/io/split/android/client/storage/cipher/EncryptionMigrationTaskTest.kt b/main/src/test/java/io/split/android/client/storage/cipher/EncryptionMigrationTaskTest.kt
similarity index 100%
rename from src/test/java/io/split/android/client/storage/cipher/EncryptionMigrationTaskTest.kt
rename to main/src/test/java/io/split/android/client/storage/cipher/EncryptionMigrationTaskTest.kt
diff --git a/src/test/java/io/split/android/client/storage/cipher/NoOpCipherTest.kt b/main/src/test/java/io/split/android/client/storage/cipher/NoOpCipherTest.kt
similarity index 100%
rename from src/test/java/io/split/android/client/storage/cipher/NoOpCipherTest.kt
rename to main/src/test/java/io/split/android/client/storage/cipher/NoOpCipherTest.kt
diff --git a/src/test/java/io/split/android/client/storage/cipher/ObjectPoolTest.kt b/main/src/test/java/io/split/android/client/storage/cipher/ObjectPoolTest.kt
similarity index 100%
rename from src/test/java/io/split/android/client/storage/cipher/ObjectPoolTest.kt
rename to main/src/test/java/io/split/android/client/storage/cipher/ObjectPoolTest.kt
diff --git a/src/test/java/io/split/android/client/storage/cipher/SplitCipherFactoryTest.kt b/main/src/test/java/io/split/android/client/storage/cipher/SplitCipherFactoryTest.kt
similarity index 100%
rename from src/test/java/io/split/android/client/storage/cipher/SplitCipherFactoryTest.kt
rename to main/src/test/java/io/split/android/client/storage/cipher/SplitCipherFactoryTest.kt
diff --git a/src/test/java/io/split/android/client/storage/common/SplitStorageContainerTest.java b/main/src/test/java/io/split/android/client/storage/common/SplitStorageContainerTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/storage/common/SplitStorageContainerTest.java
rename to main/src/test/java/io/split/android/client/storage/common/SplitStorageContainerTest.java
diff --git a/src/test/java/io/split/android/client/storage/db/SplitQueryDaoImplTest.java b/main/src/test/java/io/split/android/client/storage/db/SplitQueryDaoImplTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/storage/db/SplitQueryDaoImplTest.java
rename to main/src/test/java/io/split/android/client/storage/db/SplitQueryDaoImplTest.java
diff --git a/src/test/java/io/split/android/client/storage/db/SplitRoomDatabaseTest.java b/main/src/test/java/io/split/android/client/storage/db/SplitRoomDatabaseTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/storage/db/SplitRoomDatabaseTest.java
rename to main/src/test/java/io/split/android/client/storage/db/SplitRoomDatabaseTest.java
diff --git a/src/test/java/io/split/android/client/storage/events/EventsStorageTest.java b/main/src/test/java/io/split/android/client/storage/events/EventsStorageTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/storage/events/EventsStorageTest.java
rename to main/src/test/java/io/split/android/client/storage/events/EventsStorageTest.java
diff --git a/src/test/java/io/split/android/client/storage/events/SqLitePersistentEventsStorageTest.java b/main/src/test/java/io/split/android/client/storage/events/SqLitePersistentEventsStorageTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/storage/events/SqLitePersistentEventsStorageTest.java
rename to main/src/test/java/io/split/android/client/storage/events/SqLitePersistentEventsStorageTest.java
diff --git a/src/test/java/io/split/android/client/storage/general/GeneralInfoStorageImplTest.java b/main/src/test/java/io/split/android/client/storage/general/GeneralInfoStorageImplTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/storage/general/GeneralInfoStorageImplTest.java
rename to main/src/test/java/io/split/android/client/storage/general/GeneralInfoStorageImplTest.java
diff --git a/src/test/java/io/split/android/client/storage/impressions/ImpressionsStorageTest.java b/main/src/test/java/io/split/android/client/storage/impressions/ImpressionsStorageTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/storage/impressions/ImpressionsStorageTest.java
rename to main/src/test/java/io/split/android/client/storage/impressions/ImpressionsStorageTest.java
diff --git a/src/test/java/io/split/android/client/storage/impressions/SqlitePersistentImpressionsCountStorageTest.java b/main/src/test/java/io/split/android/client/storage/impressions/SqlitePersistentImpressionsCountStorageTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/storage/impressions/SqlitePersistentImpressionsCountStorageTest.java
rename to main/src/test/java/io/split/android/client/storage/impressions/SqlitePersistentImpressionsCountStorageTest.java
diff --git a/src/test/java/io/split/android/client/storage/impressions/SqlitePersistentImpressionsStorageTest.java b/main/src/test/java/io/split/android/client/storage/impressions/SqlitePersistentImpressionsStorageTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/storage/impressions/SqlitePersistentImpressionsStorageTest.java
rename to main/src/test/java/io/split/android/client/storage/impressions/SqlitePersistentImpressionsStorageTest.java
diff --git a/src/test/java/io/split/android/client/storage/impressions/SqlitePersistentUniqueStorageTest.java b/main/src/test/java/io/split/android/client/storage/impressions/SqlitePersistentUniqueStorageTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/storage/impressions/SqlitePersistentUniqueStorageTest.java
rename to main/src/test/java/io/split/android/client/storage/impressions/SqlitePersistentUniqueStorageTest.java
diff --git a/src/test/java/io/split/android/client/storage/mysegments/MySegmentsStorageContainerImplTest.java b/main/src/test/java/io/split/android/client/storage/mysegments/MySegmentsStorageContainerImplTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/storage/mysegments/MySegmentsStorageContainerImplTest.java
rename to main/src/test/java/io/split/android/client/storage/mysegments/MySegmentsStorageContainerImplTest.java
diff --git a/src/test/java/io/split/android/client/storage/mysegments/SqLitePersistentMyLargeSegmentsStorageTest.java b/main/src/test/java/io/split/android/client/storage/mysegments/SqLitePersistentMyLargeSegmentsStorageTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/storage/mysegments/SqLitePersistentMyLargeSegmentsStorageTest.java
rename to main/src/test/java/io/split/android/client/storage/mysegments/SqLitePersistentMyLargeSegmentsStorageTest.java
diff --git a/src/test/java/io/split/android/client/storage/mysegments/SqLitePersistentMySegmentsStorageTest.java b/main/src/test/java/io/split/android/client/storage/mysegments/SqLitePersistentMySegmentsStorageTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/storage/mysegments/SqLitePersistentMySegmentsStorageTest.java
rename to main/src/test/java/io/split/android/client/storage/mysegments/SqLitePersistentMySegmentsStorageTest.java
diff --git a/src/test/java/io/split/android/client/storage/rbs/LazyRuleBasedSegmentStorageProviderTest.java b/main/src/test/java/io/split/android/client/storage/rbs/LazyRuleBasedSegmentStorageProviderTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/storage/rbs/LazyRuleBasedSegmentStorageProviderTest.java
rename to main/src/test/java/io/split/android/client/storage/rbs/LazyRuleBasedSegmentStorageProviderTest.java
diff --git a/src/test/java/io/split/android/client/storage/rbs/RuleBasedSegmentStorageImplTest.java b/main/src/test/java/io/split/android/client/storage/rbs/RuleBasedSegmentStorageImplTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/storage/rbs/RuleBasedSegmentStorageImplTest.java
rename to main/src/test/java/io/split/android/client/storage/rbs/RuleBasedSegmentStorageImplTest.java
diff --git a/src/test/java/io/split/android/client/storage/rbs/RuleBasedSegmentStorageProducerImplTest.java b/main/src/test/java/io/split/android/client/storage/rbs/RuleBasedSegmentStorageProducerImplTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/storage/rbs/RuleBasedSegmentStorageProducerImplTest.java
rename to main/src/test/java/io/split/android/client/storage/rbs/RuleBasedSegmentStorageProducerImplTest.java
diff --git a/src/test/java/io/split/android/client/storage/rbs/SnapshotLoaderTest.java b/main/src/test/java/io/split/android/client/storage/rbs/SnapshotLoaderTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/storage/rbs/SnapshotLoaderTest.java
rename to main/src/test/java/io/split/android/client/storage/rbs/SnapshotLoaderTest.java
diff --git a/src/test/java/io/split/android/client/storage/rbs/SqLitePersistentRuleBasedSegmentStorageTest.java b/main/src/test/java/io/split/android/client/storage/rbs/SqLitePersistentRuleBasedSegmentStorageTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/storage/rbs/SqLitePersistentRuleBasedSegmentStorageTest.java
rename to main/src/test/java/io/split/android/client/storage/rbs/SqLitePersistentRuleBasedSegmentStorageTest.java
diff --git a/src/test/java/io/split/android/client/storage/rbs/SqLiteRuleBasedSegmentsPersistentStorageProviderTest.java b/main/src/test/java/io/split/android/client/storage/rbs/SqLiteRuleBasedSegmentsPersistentStorageProviderTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/storage/rbs/SqLiteRuleBasedSegmentsPersistentStorageProviderTest.java
rename to main/src/test/java/io/split/android/client/storage/rbs/SqLiteRuleBasedSegmentsPersistentStorageProviderTest.java
diff --git a/src/test/java/io/split/android/client/storage/rbs/UpdaterTest.java b/main/src/test/java/io/split/android/client/storage/rbs/UpdaterTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/storage/rbs/UpdaterTest.java
rename to main/src/test/java/io/split/android/client/storage/rbs/UpdaterTest.java
diff --git a/src/test/java/io/split/android/client/storage/splits/SplitEntityToSplitTransformerTest.java b/main/src/test/java/io/split/android/client/storage/splits/SplitEntityToSplitTransformerTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/storage/splits/SplitEntityToSplitTransformerTest.java
rename to main/src/test/java/io/split/android/client/storage/splits/SplitEntityToSplitTransformerTest.java
diff --git a/src/test/java/io/split/android/client/storage/splits/SplitToSplitEntityTransformerTest.java b/main/src/test/java/io/split/android/client/storage/splits/SplitToSplitEntityTransformerTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/storage/splits/SplitToSplitEntityTransformerTest.java
rename to main/src/test/java/io/split/android/client/storage/splits/SplitToSplitEntityTransformerTest.java
diff --git a/src/test/java/io/split/android/client/storage/splits/SqLitePersistentSplitsStorageTest.java b/main/src/test/java/io/split/android/client/storage/splits/SqLitePersistentSplitsStorageTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/storage/splits/SqLitePersistentSplitsStorageTest.java
rename to main/src/test/java/io/split/android/client/storage/splits/SqLitePersistentSplitsStorageTest.java
diff --git a/src/test/java/io/split/android/client/telemetry/TelemetryConfigBodySerializerTest.java b/main/src/test/java/io/split/android/client/telemetry/TelemetryConfigBodySerializerTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/telemetry/TelemetryConfigBodySerializerTest.java
rename to main/src/test/java/io/split/android/client/telemetry/TelemetryConfigBodySerializerTest.java
diff --git a/src/test/java/io/split/android/client/telemetry/TelemetryHelperImplTest.java b/main/src/test/java/io/split/android/client/telemetry/TelemetryHelperImplTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/telemetry/TelemetryHelperImplTest.java
rename to main/src/test/java/io/split/android/client/telemetry/TelemetryHelperImplTest.java
diff --git a/src/test/java/io/split/android/client/telemetry/TelemetryStatsBodySerializerTest.java b/main/src/test/java/io/split/android/client/telemetry/TelemetryStatsBodySerializerTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/telemetry/TelemetryStatsBodySerializerTest.java
rename to main/src/test/java/io/split/android/client/telemetry/TelemetryStatsBodySerializerTest.java
diff --git a/src/test/java/io/split/android/client/telemetry/TelemetrySynchronizerImplTest.java b/main/src/test/java/io/split/android/client/telemetry/TelemetrySynchronizerImplTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/telemetry/TelemetrySynchronizerImplTest.java
rename to main/src/test/java/io/split/android/client/telemetry/TelemetrySynchronizerImplTest.java
diff --git a/src/test/java/io/split/android/client/telemetry/storage/InMemoryTelemetryStorageTest.java b/main/src/test/java/io/split/android/client/telemetry/storage/InMemoryTelemetryStorageTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/telemetry/storage/InMemoryTelemetryStorageTest.java
rename to main/src/test/java/io/split/android/client/telemetry/storage/InMemoryTelemetryStorageTest.java
diff --git a/src/test/java/io/split/android/client/telemetry/storage/TelemetryConfigProviderImplTest.java b/main/src/test/java/io/split/android/client/telemetry/storage/TelemetryConfigProviderImplTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/telemetry/storage/TelemetryConfigProviderImplTest.java
rename to main/src/test/java/io/split/android/client/telemetry/storage/TelemetryConfigProviderImplTest.java
diff --git a/src/test/java/io/split/android/client/telemetry/storage/TelemetryStatsProviderImplTest.java b/main/src/test/java/io/split/android/client/telemetry/storage/TelemetryStatsProviderImplTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/telemetry/storage/TelemetryStatsProviderImplTest.java
rename to main/src/test/java/io/split/android/client/telemetry/storage/TelemetryStatsProviderImplTest.java
diff --git a/src/test/java/io/split/android/client/utils/HttpProxySerializerTest.java b/main/src/test/java/io/split/android/client/utils/HttpProxySerializerTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/utils/HttpProxySerializerTest.java
rename to main/src/test/java/io/split/android/client/utils/HttpProxySerializerTest.java
diff --git a/src/test/java/io/split/android/client/utils/JsonTest.java b/main/src/test/java/io/split/android/client/utils/JsonTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/utils/JsonTest.java
rename to main/src/test/java/io/split/android/client/utils/JsonTest.java
diff --git a/src/test/java/io/split/android/client/utils/PartitionTest.java b/main/src/test/java/io/split/android/client/utils/PartitionTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/utils/PartitionTest.java
rename to main/src/test/java/io/split/android/client/utils/PartitionTest.java
diff --git a/src/test/java/io/split/android/client/utils/RepeatTest.java b/main/src/test/java/io/split/android/client/utils/RepeatTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/utils/RepeatTest.java
rename to main/src/test/java/io/split/android/client/utils/RepeatTest.java
diff --git a/src/test/java/io/split/android/client/utils/SplitClientImplFactory.java b/main/src/test/java/io/split/android/client/utils/SplitClientImplFactory.java
similarity index 100%
rename from src/test/java/io/split/android/client/utils/SplitClientImplFactory.java
rename to main/src/test/java/io/split/android/client/utils/SplitClientImplFactory.java
diff --git a/src/test/java/io/split/android/client/utils/deserializer/EventDeserializerTest.java b/main/src/test/java/io/split/android/client/utils/deserializer/EventDeserializerTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/utils/deserializer/EventDeserializerTest.java
rename to main/src/test/java/io/split/android/client/utils/deserializer/EventDeserializerTest.java
diff --git a/src/test/java/io/split/android/client/validators/ApiKeyValidatorTest.java b/main/src/test/java/io/split/android/client/validators/ApiKeyValidatorTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/validators/ApiKeyValidatorTest.java
rename to main/src/test/java/io/split/android/client/validators/ApiKeyValidatorTest.java
diff --git a/src/test/java/io/split/android/client/validators/AttributesValidatorImplTest.java b/main/src/test/java/io/split/android/client/validators/AttributesValidatorImplTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/validators/AttributesValidatorImplTest.java
rename to main/src/test/java/io/split/android/client/validators/AttributesValidatorImplTest.java
diff --git a/src/test/java/io/split/android/client/validators/EventTypeNameHelper.java b/main/src/test/java/io/split/android/client/validators/EventTypeNameHelper.java
similarity index 100%
rename from src/test/java/io/split/android/client/validators/EventTypeNameHelper.java
rename to main/src/test/java/io/split/android/client/validators/EventTypeNameHelper.java
diff --git a/src/test/java/io/split/android/client/validators/EventValidatorTest.java b/main/src/test/java/io/split/android/client/validators/EventValidatorTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/validators/EventValidatorTest.java
rename to main/src/test/java/io/split/android/client/validators/EventValidatorTest.java
diff --git a/src/test/java/io/split/android/client/validators/FlagSetsValidatorImplTest.java b/main/src/test/java/io/split/android/client/validators/FlagSetsValidatorImplTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/validators/FlagSetsValidatorImplTest.java
rename to main/src/test/java/io/split/android/client/validators/FlagSetsValidatorImplTest.java
diff --git a/src/test/java/io/split/android/client/validators/KeyValidatorTest.java b/main/src/test/java/io/split/android/client/validators/KeyValidatorTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/validators/KeyValidatorTest.java
rename to main/src/test/java/io/split/android/client/validators/KeyValidatorTest.java
diff --git a/src/test/java/io/split/android/client/validators/PrefixValidatorImplTest.java b/main/src/test/java/io/split/android/client/validators/PrefixValidatorImplTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/validators/PrefixValidatorImplTest.java
rename to main/src/test/java/io/split/android/client/validators/PrefixValidatorImplTest.java
diff --git a/src/test/java/io/split/android/client/validators/SplitValidatorTest.java b/main/src/test/java/io/split/android/client/validators/SplitValidatorTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/validators/SplitValidatorTest.java
rename to main/src/test/java/io/split/android/client/validators/SplitValidatorTest.java
diff --git a/src/test/java/io/split/android/client/validators/TreatmentManagerFactoryImplTest.java b/main/src/test/java/io/split/android/client/validators/TreatmentManagerFactoryImplTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/validators/TreatmentManagerFactoryImplTest.java
rename to main/src/test/java/io/split/android/client/validators/TreatmentManagerFactoryImplTest.java
diff --git a/src/test/java/io/split/android/client/validators/TreatmentManagerFallbackTreatmentsTest.java b/main/src/test/java/io/split/android/client/validators/TreatmentManagerFallbackTreatmentsTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/validators/TreatmentManagerFallbackTreatmentsTest.java
rename to main/src/test/java/io/split/android/client/validators/TreatmentManagerFallbackTreatmentsTest.java
diff --git a/src/test/java/io/split/android/client/validators/TreatmentManagerHelperTest.java b/main/src/test/java/io/split/android/client/validators/TreatmentManagerHelperTest.java
similarity index 100%
rename from src/test/java/io/split/android/client/validators/TreatmentManagerHelperTest.java
rename to main/src/test/java/io/split/android/client/validators/TreatmentManagerHelperTest.java
diff --git a/src/test/java/io/split/android/engine/ConditionsTestUtil.java b/main/src/test/java/io/split/android/engine/ConditionsTestUtil.java
similarity index 100%
rename from src/test/java/io/split/android/engine/ConditionsTestUtil.java
rename to main/src/test/java/io/split/android/engine/ConditionsTestUtil.java
diff --git a/src/test/java/io/split/android/engine/experiments/DefaultConditionsProviderTest.java b/main/src/test/java/io/split/android/engine/experiments/DefaultConditionsProviderTest.java
similarity index 100%
rename from src/test/java/io/split/android/engine/experiments/DefaultConditionsProviderTest.java
rename to main/src/test/java/io/split/android/engine/experiments/DefaultConditionsProviderTest.java
diff --git a/src/test/java/io/split/android/engine/experiments/EvaluatorTest.java b/main/src/test/java/io/split/android/engine/experiments/EvaluatorTest.java
similarity index 100%
rename from src/test/java/io/split/android/engine/experiments/EvaluatorTest.java
rename to main/src/test/java/io/split/android/engine/experiments/EvaluatorTest.java
diff --git a/src/test/java/io/split/android/engine/experiments/PrerequisitesEvaluatorTest.java b/main/src/test/java/io/split/android/engine/experiments/PrerequisitesEvaluatorTest.java
similarity index 100%
rename from src/test/java/io/split/android/engine/experiments/PrerequisitesEvaluatorTest.java
rename to main/src/test/java/io/split/android/engine/experiments/PrerequisitesEvaluatorTest.java
diff --git a/src/test/java/io/split/android/engine/experiments/RuleBasedSegmentParserTest.java b/main/src/test/java/io/split/android/engine/experiments/RuleBasedSegmentParserTest.java
similarity index 100%
rename from src/test/java/io/split/android/engine/experiments/RuleBasedSegmentParserTest.java
rename to main/src/test/java/io/split/android/engine/experiments/RuleBasedSegmentParserTest.java
diff --git a/src/test/java/io/split/android/engine/experiments/SplitParserTest.java b/main/src/test/java/io/split/android/engine/experiments/SplitParserTest.java
similarity index 100%
rename from src/test/java/io/split/android/engine/experiments/SplitParserTest.java
rename to main/src/test/java/io/split/android/engine/experiments/SplitParserTest.java
diff --git a/src/test/java/io/split/android/engine/experiments/UnsupportedMatcherSplitParserTest.java b/main/src/test/java/io/split/android/engine/experiments/UnsupportedMatcherSplitParserTest.java
similarity index 100%
rename from src/test/java/io/split/android/engine/experiments/UnsupportedMatcherSplitParserTest.java
rename to main/src/test/java/io/split/android/engine/experiments/UnsupportedMatcherSplitParserTest.java
diff --git a/src/test/java/io/split/android/engine/matchers/AllKeysMatcherTest.java b/main/src/test/java/io/split/android/engine/matchers/AllKeysMatcherTest.java
similarity index 100%
rename from src/test/java/io/split/android/engine/matchers/AllKeysMatcherTest.java
rename to main/src/test/java/io/split/android/engine/matchers/AllKeysMatcherTest.java
diff --git a/src/test/java/io/split/android/engine/matchers/AttributeMatcherTest.java b/main/src/test/java/io/split/android/engine/matchers/AttributeMatcherTest.java
similarity index 100%
rename from src/test/java/io/split/android/engine/matchers/AttributeMatcherTest.java
rename to main/src/test/java/io/split/android/engine/matchers/AttributeMatcherTest.java
diff --git a/src/test/java/io/split/android/engine/matchers/BetweenMatcherTest.java b/main/src/test/java/io/split/android/engine/matchers/BetweenMatcherTest.java
similarity index 100%
rename from src/test/java/io/split/android/engine/matchers/BetweenMatcherTest.java
rename to main/src/test/java/io/split/android/engine/matchers/BetweenMatcherTest.java
diff --git a/src/test/java/io/split/android/engine/matchers/BooleanMatcherTest.java b/main/src/test/java/io/split/android/engine/matchers/BooleanMatcherTest.java
similarity index 100%
rename from src/test/java/io/split/android/engine/matchers/BooleanMatcherTest.java
rename to main/src/test/java/io/split/android/engine/matchers/BooleanMatcherTest.java
diff --git a/src/test/java/io/split/android/engine/matchers/CombiningMatcherTest.java b/main/src/test/java/io/split/android/engine/matchers/CombiningMatcherTest.java
similarity index 100%
rename from src/test/java/io/split/android/engine/matchers/CombiningMatcherTest.java
rename to main/src/test/java/io/split/android/engine/matchers/CombiningMatcherTest.java
diff --git a/src/test/java/io/split/android/engine/matchers/EqualToMatcherTest.java b/main/src/test/java/io/split/android/engine/matchers/EqualToMatcherTest.java
similarity index 100%
rename from src/test/java/io/split/android/engine/matchers/EqualToMatcherTest.java
rename to main/src/test/java/io/split/android/engine/matchers/EqualToMatcherTest.java
diff --git a/src/test/java/io/split/android/engine/matchers/GreaterThanOrEqualToMatcherTest.java b/main/src/test/java/io/split/android/engine/matchers/GreaterThanOrEqualToMatcherTest.java
similarity index 100%
rename from src/test/java/io/split/android/engine/matchers/GreaterThanOrEqualToMatcherTest.java
rename to main/src/test/java/io/split/android/engine/matchers/GreaterThanOrEqualToMatcherTest.java
diff --git a/src/test/java/io/split/android/engine/matchers/InRuleBasedSegmentMatcherTest.java b/main/src/test/java/io/split/android/engine/matchers/InRuleBasedSegmentMatcherTest.java
similarity index 100%
rename from src/test/java/io/split/android/engine/matchers/InRuleBasedSegmentMatcherTest.java
rename to main/src/test/java/io/split/android/engine/matchers/InRuleBasedSegmentMatcherTest.java
diff --git a/src/test/java/io/split/android/engine/matchers/LessThanOrEqualToMatcherTest.java b/main/src/test/java/io/split/android/engine/matchers/LessThanOrEqualToMatcherTest.java
similarity index 100%
rename from src/test/java/io/split/android/engine/matchers/LessThanOrEqualToMatcherTest.java
rename to main/src/test/java/io/split/android/engine/matchers/LessThanOrEqualToMatcherTest.java
diff --git a/src/test/java/io/split/android/engine/matchers/NegatableMatcherTest.java b/main/src/test/java/io/split/android/engine/matchers/NegatableMatcherTest.java
similarity index 100%
rename from src/test/java/io/split/android/engine/matchers/NegatableMatcherTest.java
rename to main/src/test/java/io/split/android/engine/matchers/NegatableMatcherTest.java
diff --git a/src/test/java/io/split/android/engine/matchers/PrerequisitesMatcherTest.java b/main/src/test/java/io/split/android/engine/matchers/PrerequisitesMatcherTest.java
similarity index 100%
rename from src/test/java/io/split/android/engine/matchers/PrerequisitesMatcherTest.java
rename to main/src/test/java/io/split/android/engine/matchers/PrerequisitesMatcherTest.java
diff --git a/src/test/java/io/split/android/engine/matchers/TransformersTest.java b/main/src/test/java/io/split/android/engine/matchers/TransformersTest.java
similarity index 100%
rename from src/test/java/io/split/android/engine/matchers/TransformersTest.java
rename to main/src/test/java/io/split/android/engine/matchers/TransformersTest.java
diff --git a/src/test/java/io/split/android/engine/matchers/collections/ContainsAllOfSetMatcherTest.java b/main/src/test/java/io/split/android/engine/matchers/collections/ContainsAllOfSetMatcherTest.java
similarity index 100%
rename from src/test/java/io/split/android/engine/matchers/collections/ContainsAllOfSetMatcherTest.java
rename to main/src/test/java/io/split/android/engine/matchers/collections/ContainsAllOfSetMatcherTest.java
diff --git a/src/test/java/io/split/android/engine/matchers/collections/ContainsAnyOfSetMatcherTest.java b/main/src/test/java/io/split/android/engine/matchers/collections/ContainsAnyOfSetMatcherTest.java
similarity index 100%
rename from src/test/java/io/split/android/engine/matchers/collections/ContainsAnyOfSetMatcherTest.java
rename to main/src/test/java/io/split/android/engine/matchers/collections/ContainsAnyOfSetMatcherTest.java
diff --git a/src/test/java/io/split/android/engine/matchers/collections/EqualToSetMatcherTest.java b/main/src/test/java/io/split/android/engine/matchers/collections/EqualToSetMatcherTest.java
similarity index 100%
rename from src/test/java/io/split/android/engine/matchers/collections/EqualToSetMatcherTest.java
rename to main/src/test/java/io/split/android/engine/matchers/collections/EqualToSetMatcherTest.java
diff --git a/src/test/java/io/split/android/engine/matchers/collections/PartOfSetMatcherTest.java b/main/src/test/java/io/split/android/engine/matchers/collections/PartOfSetMatcherTest.java
similarity index 100%
rename from src/test/java/io/split/android/engine/matchers/collections/PartOfSetMatcherTest.java
rename to main/src/test/java/io/split/android/engine/matchers/collections/PartOfSetMatcherTest.java
diff --git a/src/test/java/io/split/android/engine/matchers/semver/BetweenSemverMatcherTest.java b/main/src/test/java/io/split/android/engine/matchers/semver/BetweenSemverMatcherTest.java
similarity index 100%
rename from src/test/java/io/split/android/engine/matchers/semver/BetweenSemverMatcherTest.java
rename to main/src/test/java/io/split/android/engine/matchers/semver/BetweenSemverMatcherTest.java
diff --git a/src/test/java/io/split/android/engine/matchers/semver/EqualToSemverMatcherTest.java b/main/src/test/java/io/split/android/engine/matchers/semver/EqualToSemverMatcherTest.java
similarity index 100%
rename from src/test/java/io/split/android/engine/matchers/semver/EqualToSemverMatcherTest.java
rename to main/src/test/java/io/split/android/engine/matchers/semver/EqualToSemverMatcherTest.java
diff --git a/src/test/java/io/split/android/engine/matchers/semver/GreaterThanOrEqualToSemverMatcherTest.java b/main/src/test/java/io/split/android/engine/matchers/semver/GreaterThanOrEqualToSemverMatcherTest.java
similarity index 100%
rename from src/test/java/io/split/android/engine/matchers/semver/GreaterThanOrEqualToSemverMatcherTest.java
rename to main/src/test/java/io/split/android/engine/matchers/semver/GreaterThanOrEqualToSemverMatcherTest.java
diff --git a/src/test/java/io/split/android/engine/matchers/semver/InListSemverMatcherTest.java b/main/src/test/java/io/split/android/engine/matchers/semver/InListSemverMatcherTest.java
similarity index 100%
rename from src/test/java/io/split/android/engine/matchers/semver/InListSemverMatcherTest.java
rename to main/src/test/java/io/split/android/engine/matchers/semver/InListSemverMatcherTest.java
diff --git a/src/test/java/io/split/android/engine/matchers/semver/LessThanOrEqualToSemverMatcherTest.java b/main/src/test/java/io/split/android/engine/matchers/semver/LessThanOrEqualToSemverMatcherTest.java
similarity index 100%
rename from src/test/java/io/split/android/engine/matchers/semver/LessThanOrEqualToSemverMatcherTest.java
rename to main/src/test/java/io/split/android/engine/matchers/semver/LessThanOrEqualToSemverMatcherTest.java
diff --git a/src/test/java/io/split/android/engine/matchers/semver/SemverTest.java b/main/src/test/java/io/split/android/engine/matchers/semver/SemverTest.java
similarity index 100%
rename from src/test/java/io/split/android/engine/matchers/semver/SemverTest.java
rename to main/src/test/java/io/split/android/engine/matchers/semver/SemverTest.java
diff --git a/src/test/java/io/split/android/engine/matchers/strings/ContainsAnyOfMatcherTest.java b/main/src/test/java/io/split/android/engine/matchers/strings/ContainsAnyOfMatcherTest.java
similarity index 100%
rename from src/test/java/io/split/android/engine/matchers/strings/ContainsAnyOfMatcherTest.java
rename to main/src/test/java/io/split/android/engine/matchers/strings/ContainsAnyOfMatcherTest.java
diff --git a/src/test/java/io/split/android/engine/matchers/strings/EndsWithAnyOfMatcherTest.java b/main/src/test/java/io/split/android/engine/matchers/strings/EndsWithAnyOfMatcherTest.java
similarity index 100%
rename from src/test/java/io/split/android/engine/matchers/strings/EndsWithAnyOfMatcherTest.java
rename to main/src/test/java/io/split/android/engine/matchers/strings/EndsWithAnyOfMatcherTest.java
diff --git a/src/test/java/io/split/android/engine/matchers/strings/RegularExpressionMatcherTest.java b/main/src/test/java/io/split/android/engine/matchers/strings/RegularExpressionMatcherTest.java
similarity index 100%
rename from src/test/java/io/split/android/engine/matchers/strings/RegularExpressionMatcherTest.java
rename to main/src/test/java/io/split/android/engine/matchers/strings/RegularExpressionMatcherTest.java
diff --git a/src/test/java/io/split/android/engine/matchers/strings/StartsWithAnyOfMatcherTest.java b/main/src/test/java/io/split/android/engine/matchers/strings/StartsWithAnyOfMatcherTest.java
similarity index 100%
rename from src/test/java/io/split/android/engine/matchers/strings/StartsWithAnyOfMatcherTest.java
rename to main/src/test/java/io/split/android/engine/matchers/strings/StartsWithAnyOfMatcherTest.java
diff --git a/src/test/java/io/split/android/engine/matchers/strings/WhitelistMatcherTest.java b/main/src/test/java/io/split/android/engine/matchers/strings/WhitelistMatcherTest.java
similarity index 100%
rename from src/test/java/io/split/android/engine/matchers/strings/WhitelistMatcherTest.java
rename to main/src/test/java/io/split/android/engine/matchers/strings/WhitelistMatcherTest.java
diff --git a/src/test/java/io/split/android/engine/scheduler/PausableScheduledThreadPoolExecutorImplTest.java b/main/src/test/java/io/split/android/engine/scheduler/PausableScheduledThreadPoolExecutorImplTest.java
similarity index 100%
rename from src/test/java/io/split/android/engine/scheduler/PausableScheduledThreadPoolExecutorImplTest.java
rename to main/src/test/java/io/split/android/engine/scheduler/PausableScheduledThreadPoolExecutorImplTest.java
diff --git a/src/test/java/io/split/android/engine/splitter/HashConsistencyTest.java b/main/src/test/java/io/split/android/engine/splitter/HashConsistencyTest.java
similarity index 100%
rename from src/test/java/io/split/android/engine/splitter/HashConsistencyTest.java
rename to main/src/test/java/io/split/android/engine/splitter/HashConsistencyTest.java
diff --git a/src/test/java/io/split/android/engine/splitter/HashingTest.java b/main/src/test/java/io/split/android/engine/splitter/HashingTest.java
similarity index 100%
rename from src/test/java/io/split/android/engine/splitter/HashingTest.java
rename to main/src/test/java/io/split/android/engine/splitter/HashingTest.java
diff --git a/src/test/java/io/split/android/engine/splitter/MyHash.java b/main/src/test/java/io/split/android/engine/splitter/MyHash.java
similarity index 100%
rename from src/test/java/io/split/android/engine/splitter/MyHash.java
rename to main/src/test/java/io/split/android/engine/splitter/MyHash.java
diff --git a/src/test/java/io/split/android/engine/splitter/SplitterTest.java b/main/src/test/java/io/split/android/engine/splitter/SplitterTest.java
similarity index 100%
rename from src/test/java/io/split/android/engine/splitter/SplitterTest.java
rename to main/src/test/java/io/split/android/engine/splitter/SplitterTest.java
diff --git a/src/test/java/io/split/android/fake/ExecutorServiceMock.java b/main/src/test/java/io/split/android/fake/ExecutorServiceMock.java
similarity index 100%
rename from src/test/java/io/split/android/fake/ExecutorServiceMock.java
rename to main/src/test/java/io/split/android/fake/ExecutorServiceMock.java
diff --git a/src/test/java/io/split/android/fake/ImpressionListenerMock.java b/main/src/test/java/io/split/android/fake/ImpressionListenerMock.java
similarity index 100%
rename from src/test/java/io/split/android/fake/ImpressionListenerMock.java
rename to main/src/test/java/io/split/android/fake/ImpressionListenerMock.java
diff --git a/src/test/java/io/split/android/fake/MemoryUtilsNoMemoryStub.java b/main/src/test/java/io/split/android/fake/MemoryUtilsNoMemoryStub.java
similarity index 100%
rename from src/test/java/io/split/android/fake/MemoryUtilsNoMemoryStub.java
rename to main/src/test/java/io/split/android/fake/MemoryUtilsNoMemoryStub.java
diff --git a/src/test/java/io/split/android/fake/SplitEventsManagerStub.java b/main/src/test/java/io/split/android/fake/SplitEventsManagerStub.java
similarity index 100%
rename from src/test/java/io/split/android/fake/SplitEventsManagerStub.java
rename to main/src/test/java/io/split/android/fake/SplitEventsManagerStub.java
diff --git a/src/test/java/io/split/android/fake/SplitTaskExecutorStub.java b/main/src/test/java/io/split/android/fake/SplitTaskExecutorStub.java
similarity index 100%
rename from src/test/java/io/split/android/fake/SplitTaskExecutorStub.java
rename to main/src/test/java/io/split/android/fake/SplitTaskExecutorStub.java
diff --git a/src/test/java/io/split/android/fake/SseClientMock.java b/main/src/test/java/io/split/android/fake/SseClientMock.java
similarity index 100%
rename from src/test/java/io/split/android/fake/SseClientMock.java
rename to main/src/test/java/io/split/android/fake/SseClientMock.java
diff --git a/src/test/java/io/split/android/helpers/FileHelper.java b/main/src/test/java/io/split/android/helpers/FileHelper.java
similarity index 100%
rename from src/test/java/io/split/android/helpers/FileHelper.java
rename to main/src/test/java/io/split/android/helpers/FileHelper.java
diff --git a/src/test/java/io/split/android/helpers/ResourcesFileStorage.java b/main/src/test/java/io/split/android/helpers/ResourcesFileStorage.java
similarity index 100%
rename from src/test/java/io/split/android/helpers/ResourcesFileStorage.java
rename to main/src/test/java/io/split/android/helpers/ResourcesFileStorage.java
diff --git a/src/test/java/io/split/android/helpers/SplitHelper.java b/main/src/test/java/io/split/android/helpers/SplitHelper.java
similarity index 100%
rename from src/test/java/io/split/android/helpers/SplitHelper.java
rename to main/src/test/java/io/split/android/helpers/SplitHelper.java
diff --git a/src/test/java/io/split/android/http/SplitHttpHeadersBuilderTest.java b/main/src/test/java/io/split/android/http/SplitHttpHeadersBuilderTest.java
similarity index 100%
rename from src/test/java/io/split/android/http/SplitHttpHeadersBuilderTest.java
rename to main/src/test/java/io/split/android/http/SplitHttpHeadersBuilderTest.java
diff --git a/src/test/java/io/split/android/http/URIBuilderTest.java b/main/src/test/java/io/split/android/http/URIBuilderTest.java
similarity index 100%
rename from src/test/java/io/split/android/http/URIBuilderTest.java
rename to main/src/test/java/io/split/android/http/URIBuilderTest.java
diff --git a/src/test/resources/README.txt b/main/src/test/resources/README.txt
similarity index 100%
rename from src/test/resources/README.txt
rename to main/src/test/resources/README.txt
diff --git a/src/test/resources/between_semver.csv b/main/src/test/resources/between_semver.csv
similarity index 100%
rename from src/test/resources/between_semver.csv
rename to main/src/test/resources/between_semver.csv
diff --git a/src/test/resources/equal_to_semver.csv b/main/src/test/resources/equal_to_semver.csv
similarity index 100%
rename from src/test/resources/equal_to_semver.csv
rename to main/src/test/resources/equal_to_semver.csv
diff --git a/src/test/resources/impressions_1.json b/main/src/test/resources/impressions_1.json
similarity index 100%
rename from src/test/resources/impressions_1.json
rename to main/src/test/resources/impressions_1.json
diff --git a/src/test/resources/invalid_semantic_versions.csv b/main/src/test/resources/invalid_semantic_versions.csv
similarity index 100%
rename from src/test/resources/invalid_semantic_versions.csv
rename to main/src/test/resources/invalid_semantic_versions.csv
diff --git a/src/test/resources/legacy-hash-sample-data-non-alpha-numeric.csv b/main/src/test/resources/legacy-hash-sample-data-non-alpha-numeric.csv
similarity index 100%
rename from src/test/resources/legacy-hash-sample-data-non-alpha-numeric.csv
rename to main/src/test/resources/legacy-hash-sample-data-non-alpha-numeric.csv
diff --git a/src/test/resources/legacy-hash-sample-data.csv b/main/src/test/resources/legacy-hash-sample-data.csv
similarity index 100%
rename from src/test/resources/legacy-hash-sample-data.csv
rename to main/src/test/resources/legacy-hash-sample-data.csv
diff --git a/src/test/resources/murmur3-sample-data-non-alpha-numeric-v2.csv b/main/src/test/resources/murmur3-sample-data-non-alpha-numeric-v2.csv
similarity index 100%
rename from src/test/resources/murmur3-sample-data-non-alpha-numeric-v2.csv
rename to main/src/test/resources/murmur3-sample-data-non-alpha-numeric-v2.csv
diff --git a/src/test/resources/murmur3-sample-data-non-alpha-numeric.csv b/main/src/test/resources/murmur3-sample-data-non-alpha-numeric.csv
similarity index 100%
rename from src/test/resources/murmur3-sample-data-non-alpha-numeric.csv
rename to main/src/test/resources/murmur3-sample-data-non-alpha-numeric.csv
diff --git a/src/test/resources/murmur3-sample-data-v2.csv b/main/src/test/resources/murmur3-sample-data-v2.csv
similarity index 100%
rename from src/test/resources/murmur3-sample-data-v2.csv
rename to main/src/test/resources/murmur3-sample-data-v2.csv
diff --git a/src/test/resources/murmur3-sample-data.csv b/main/src/test/resources/murmur3-sample-data.csv
similarity index 100%
rename from src/test/resources/murmur3-sample-data.csv
rename to main/src/test/resources/murmur3-sample-data.csv
diff --git a/src/test/resources/murmur3-sample-double-treatment-users.csv b/main/src/test/resources/murmur3-sample-double-treatment-users.csv
similarity index 100%
rename from src/test/resources/murmur3-sample-double-treatment-users.csv
rename to main/src/test/resources/murmur3-sample-double-treatment-users.csv
diff --git a/src/test/resources/murmur3_64_uuids.csv b/main/src/test/resources/murmur3_64_uuids.csv
similarity index 100%
rename from src/test/resources/murmur3_64_uuids.csv
rename to main/src/test/resources/murmur3_64_uuids.csv
diff --git a/src/test/resources/split_changes_1.json b/main/src/test/resources/split_changes_1.json
similarity index 100%
rename from src/test/resources/split_changes_1.json
rename to main/src/test/resources/split_changes_1.json
diff --git a/src/test/resources/split_changes_1_updated.json b/main/src/test/resources/split_changes_1_updated.json
similarity index 100%
rename from src/test/resources/split_changes_1_updated.json
rename to main/src/test/resources/split_changes_1_updated.json
diff --git a/src/test/resources/split_changes_legacy.json b/main/src/test/resources/split_changes_legacy.json
similarity index 100%
rename from src/test/resources/split_changes_legacy.json
rename to main/src/test/resources/split_changes_legacy.json
diff --git a/src/test/resources/split_changes_prerequisites.json b/main/src/test/resources/split_changes_prerequisites.json
similarity index 100%
rename from src/test/resources/split_changes_prerequisites.json
rename to main/src/test/resources/split_changes_prerequisites.json
diff --git a/src/test/resources/split_changes_small.json b/main/src/test/resources/split_changes_small.json
similarity index 100%
rename from src/test/resources/split_changes_small.json
rename to main/src/test/resources/split_changes_small.json
diff --git a/src/test/resources/split_changes_with_prerequisites.json b/main/src/test/resources/split_changes_with_prerequisites.json
similarity index 100%
rename from src/test/resources/split_changes_with_prerequisites.json
rename to main/src/test/resources/split_changes_with_prerequisites.json
diff --git a/src/test/resources/splits.yaml b/main/src/test/resources/splits.yaml
similarity index 100%
rename from src/test/resources/splits.yaml
rename to main/src/test/resources/splits.yaml
diff --git a/src/test/resources/splits_incorrect_value.yaml b/main/src/test/resources/splits_incorrect_value.yaml
similarity index 100%
rename from src/test/resources/splits_incorrect_value.yaml
rename to main/src/test/resources/splits_incorrect_value.yaml
diff --git a/src/test/resources/splits_missing_name.yaml b/main/src/test/resources/splits_missing_name.yaml
similarity index 100%
rename from src/test/resources/splits_missing_name.yaml
rename to main/src/test/resources/splits_missing_name.yaml
diff --git a/src/test/resources/splits_missing_treatment.yaml b/main/src/test/resources/splits_missing_treatment.yaml
similarity index 100%
rename from src/test/resources/splits_missing_treatment.yaml
rename to main/src/test/resources/splits_missing_treatment.yaml
diff --git a/src/test/resources/splits_no_yaml.yaml b/main/src/test/resources/splits_no_yaml.yaml
similarity index 100%
rename from src/test/resources/splits_no_yaml.yaml
rename to main/src/test/resources/splits_no_yaml.yaml
diff --git a/src/test/resources/tracks_1.json b/main/src/test/resources/tracks_1.json
similarity index 100%
rename from src/test/resources/tracks_1.json
rename to main/src/test/resources/tracks_1.json
diff --git a/src/test/resources/valid_semantic_versions.csv b/main/src/test/resources/valid_semantic_versions.csv
similarity index 100%
rename from src/test/resources/valid_semantic_versions.csv
rename to main/src/test/resources/valid_semantic_versions.csv
diff --git a/project/build.gradle b/project/build.gradle
deleted file mode 100644
index fd3ad14bc..000000000
--- a/project/build.gradle
+++ /dev/null
@@ -1,35 +0,0 @@
-// Top-level build file where you can add configuration options common to all sub-projects/modules.
-buildscript {
- repositories {
- google()
- mavenCentral()
- jcenter()
- }
- dependencies {
- classpath 'com.android.tools.build:gradle:7.4.2'
-
- // NOTE: Do not place your application dependencies here; they belong
- // in the individual module build.gradle files
- }
-}
-plugins {
- id 'org.sonarqube' version '3.2.0'
-}
-
-sonarqube {
- properties {
- property 'sonar.projectKey', 'splitio_android-client'
- property 'sonar.projectName', 'android-client'
- }
-}
-allprojects {
- repositories {
- google()
- mavenCentral()
- jcenter()
- }
-}
-
-task clean(type: Delete) {
- delete rootProject.buildDir
-}
diff --git a/project/gradle/wrapper/gradle-wrapper.properties b/project/gradle/wrapper/gradle-wrapper.properties
deleted file mode 100644
index 69ecd4abb..000000000
--- a/project/gradle/wrapper/gradle-wrapper.properties
+++ /dev/null
@@ -1,6 +0,0 @@
-#Sat Apr 22 10:53:48 ART 2023
-distributionBase=GRADLE_USER_HOME
-distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-bin.zip
-zipStoreBase=GRADLE_USER_HOME
-zipStorePath=wrapper/dists
diff --git a/project/gradlew b/project/gradlew
deleted file mode 100755
index cccdd3d51..000000000
--- a/project/gradlew
+++ /dev/null
@@ -1,172 +0,0 @@
-#!/usr/bin/env sh
-
-##############################################################################
-##
-## Gradle start up script for UN*X
-##
-##############################################################################
-
-# Attempt to set APP_HOME
-# Resolve links: $0 may be a link
-PRG="$0"
-# Need this for relative symlinks.
-while [ -h "$PRG" ] ; do
- ls=`ls -ld "$PRG"`
- link=`expr "$ls" : '.*-> \(.*\)$'`
- if expr "$link" : '/.*' > /dev/null; then
- PRG="$link"
- else
- PRG=`dirname "$PRG"`"/$link"
- fi
-done
-SAVED="`pwd`"
-cd "`dirname \"$PRG\"`/" >/dev/null
-APP_HOME="`pwd -P`"
-cd "$SAVED" >/dev/null
-
-APP_NAME="Gradle"
-APP_BASE_NAME=`basename "$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=""
-
-# Use the maximum available, or set MAX_FD != -1 to use that value.
-MAX_FD="maximum"
-
-warn () {
- echo "$*"
-}
-
-die () {
- echo
- echo "$*"
- echo
- exit 1
-}
-
-# 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
- ;;
- 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" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
- MAX_FD_LIMIT=`ulimit -H -n`
- if [ $? -eq 0 ] ; then
- if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
- MAX_FD="$MAX_FD_LIMIT"
- fi
- ulimit -n $MAX_FD
- if [ $? -ne 0 ] ; then
- warn "Could not set maximum file descriptor limit: $MAX_FD"
- fi
- else
- warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
- fi
-fi
-
-# For Darwin, add options to specify how the application appears in the dock
-if $darwin; then
- GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
-fi
-
-# For Cygwin, switch paths to Windows format before running java
-if $cygwin ; then
- APP_HOME=`cygpath --path --mixed "$APP_HOME"`
- CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
- JAVACMD=`cygpath --unix "$JAVACMD"`
-
- # We build the pattern for arguments to be converted via cygpath
- ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
- SEP=""
- for dir in $ROOTDIRSRAW ; do
- ROOTDIRS="$ROOTDIRS$SEP$dir"
- SEP="|"
- done
- OURCYGPATTERN="(^($ROOTDIRS))"
- # Add a user-defined pattern to the cygpath arguments
- if [ "$GRADLE_CYGPATTERN" != "" ] ; then
- OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
- fi
- # Now convert the arguments - kludge to limit ourselves to /bin/sh
- i=0
- for arg in "$@" ; do
- CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
- CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
-
- if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
- eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
- else
- eval `echo args$i`="\"$arg\""
- fi
- i=$((i+1))
- done
- case $i in
- (0) set -- ;;
- (1) set -- "$args0" ;;
- (2) set -- "$args0" "$args1" ;;
- (3) set -- "$args0" "$args1" "$args2" ;;
- (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
- (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
- (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
- (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
- (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
- (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
- esac
-fi
-
-# Escape application args
-save () {
- for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
- echo " "
-}
-APP_ARGS=$(save "$@")
-
-# Collect all arguments for the java command, following the shell quoting and substitution rules
-eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
-
-# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
-if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
- cd "$(dirname "$0")"
-fi
-
-exec "$JAVACMD" "$@"
diff --git a/project/run_all_tests.sh b/project/run_all_tests.sh
deleted file mode 100755
index 2c5e2c931..000000000
--- a/project/run_all_tests.sh
+++ /dev/null
@@ -1,5 +0,0 @@
-!#/bin/zsh
-
-./gradlew test
-./gradlew connectedAndroidTest
-open ./build/reports/androidTests/connected/index.html
\ No newline at end of file
diff --git a/project/settings.gradle b/project/settings.gradle
deleted file mode 100644
index 643baca5a..000000000
--- a/project/settings.gradle
+++ /dev/null
@@ -1,3 +0,0 @@
-rootProject.name = 'project'
-include('android-client')
-project(':android-client').projectDir=file('..')
\ No newline at end of file
diff --git a/scripts/compare-api-metalava.sh b/scripts/compare-api-metalava.sh
new file mode 100755
index 000000000..fb66f243a
--- /dev/null
+++ b/scripts/compare-api-metalava.sh
@@ -0,0 +1,726 @@
+#!/bin/bash
+
+# API Diff Tool using Metalava
+# Compares public API surface between two Git branches using Metalava
+# Usage: ./scripts/compare-api-metalava.sh --target --source
+
+set -euo pipefail
+
+# Colors for output
+RED='\033[0;31m'
+GREEN='\033[0;32m'
+YELLOW='\033[1;33m'
+BLUE='\033[0;34m'
+NC='\033[0m' # No Color
+
+# Configuration
+API_SIGNATURE_FILE="api.txt"
+GRADLE_TASK_GENERATE_API="generateApi"
+METALAVA_VERSION="1.0.0-alpha13" # Latest version from Maven
+METALAVA_CACHE_DIR_RELATIVE=".metalava"
+METALAVA_GROUP="com.android.tools.metalava"
+METALAVA_ARTIFACT="metalava"
+METALAVA_JAR_NAME="${METALAVA_ARTIFACT}-${METALAVA_VERSION}.jar"
+
+# These will be set after repo path is determined
+METALAVA_CACHE_DIR=""
+METALAVA_JAR=""
+
+# Temporary files
+TEMP_DIR=$(mktemp -d)
+CLONE_DIR="${TEMP_DIR}/repo"
+TARGET_API="${TEMP_DIR}/target-branch-api.txt"
+SOURCE_API="${TEMP_DIR}/source-branch-api.txt"
+
+# Optional: Save final API signature to a persistent location
+SAVE_API_FILE=false
+OUTPUT_API_FILE=""
+
+# Script arguments
+TARGET_BRANCH=""
+SOURCE_BRANCH=""
+MODULE_PATH=""
+REPO_PATH=""
+
+# Cleanup function - runs on exit, error, or interrupt
+cleanup() {
+ local exit_code=$?
+
+ # Always cleanup, even on success
+ if [ -d "$TEMP_DIR" ]; then
+ echo -e "\n${BLUE}Cleaning up temporary files...${NC}"
+ rm -rf "$TEMP_DIR"
+ echo "Removed temporary repository clone and API signature files"
+ fi
+
+ # Only show error message if there was an error
+ if [ $exit_code -ne 0 ]; then
+ echo -e "${RED}Script failed with exit code $exit_code${NC}"
+ fi
+
+ exit $exit_code
+}
+
+# Set trap for cleanup on exit
+trap cleanup EXIT INT TERM
+
+# Print error and exit
+error_exit() {
+ echo -e "${RED}Error: $1${NC}" >&2
+ exit 1
+}
+
+# Print usage
+usage() {
+ cat << EOF
+Usage: $0 --target --source [--module ]
+
+Options:
+ --target [ Target branch/tag/commit to compare against (e.g., main, origin/main, v1.0.0)
+ --source ][ Source branch/tag/commit to compare (e.g., feature/my-feature, v1.1.0)
+ --module Optional: Module path (defaults to root, future-proof for multi-module)
+ --save-api Optional: Save the final API signature to a file (default: not saved)
+
+Examples:
+ # Compare branches
+ $0 --target origin/main --source feature/my-feature
+
+ # Compare tags
+ $0 --target v1.0.0 --source v1.1.0
+
+ # Compare tag to branch
+ $0 --target v1.0.0 --source main
+
+Note: This script uses Metalava to generate API signature files that contain ONLY public API elements.
+Private fields, methods, and internal implementation details are excluded.
+
+EOF
+ exit 1
+}
+
+# Parse command line arguments
+parse_args() {
+ while [[ $# -gt 0 ]]; do
+ case $1 in
+ --target)
+ TARGET_BRANCH="$2"
+ shift 2
+ ;;
+ --source)
+ SOURCE_BRANCH="$2"
+ shift 2
+ ;;
+ --module)
+ MODULE_PATH="$2"
+ shift 2
+ ;;
+ --save-api)
+ SAVE_API_FILE=true
+ OUTPUT_API_FILE="$2"
+ shift 2
+ ;;
+ -h|--help)
+ usage
+ ;;
+ *)
+ error_exit "Unknown option: $1"
+ ;;
+ esac
+ done
+
+ if [ -z "$TARGET_BRANCH" ] || [ -z "$SOURCE_BRANCH" ]; then
+ error_exit "Both --target and --source branches must be specified"
+ fi
+}
+
+# Find the Gradle project root (where settings.gradle or build.gradle is located)
+find_gradle_root() {
+ local current_dir="$PWD"
+
+ # Check current directory first
+ if [ -f "settings.gradle" ] || [ -f "build.gradle" ]; then
+ echo "$PWD"
+ return 0
+ fi
+
+ # Check if we're in a subdirectory and need to go up
+ local check_dir="$current_dir"
+ while [ "$check_dir" != "/" ]; do
+ if [ -f "$check_dir/settings.gradle" ] || [ -f "$check_dir/build.gradle" ]; then
+ echo "$check_dir"
+ return 0
+ fi
+ check_dir=$(dirname "$check_dir")
+ done
+
+ # If no settings.gradle found, assume current directory
+ echo "$PWD"
+}
+
+# Get repository path/URL
+get_repo_path() {
+ echo -e "${BLUE}Detecting repository...${NC}"
+
+ # Check if we're in a Git repository
+ if ! git rev-parse --git-dir > /dev/null 2>&1; then
+ error_exit "Not in a Git repository. Please run this script from within a Git repository."
+ fi
+
+ # Get the repository root directory
+ REPO_PATH=$(git rev-parse --show-toplevel)
+ echo "Repository path: $REPO_PATH"
+
+ echo -e "${GREEN}✓${NC} Repository detected"
+}
+
+# Download and setup Metalava
+setup_metalava() {
+ echo -e "${BLUE}Setting up Metalava...${NC}"
+
+ # Use absolute path for cache directory (since we'll be working in temp dir)
+ if [ -z "$METALAVA_CACHE_DIR" ]; then
+ if [ -n "$REPO_PATH" ]; then
+ METALAVA_CACHE_DIR="$REPO_PATH/$METALAVA_CACHE_DIR_RELATIVE"
+ else
+ METALAVA_CACHE_DIR="$PWD/$METALAVA_CACHE_DIR_RELATIVE"
+ fi
+ METALAVA_JAR="$METALAVA_CACHE_DIR/$METALAVA_JAR_NAME"
+ fi
+
+ # Create cache directory if it doesn't exist
+ mkdir -p "$METALAVA_CACHE_DIR"
+
+ # Check if Metalava is already cached
+ if [ -f "$METALAVA_JAR" ]; then
+ # Verify it's a valid JAR file (ZIP format)
+ if unzip -t "$METALAVA_JAR" > /dev/null 2>&1; then
+ echo -e "${GREEN}✓${NC} Metalava ${METALAVA_VERSION} found in cache"
+ return 0
+ else
+ echo "Cached JAR appears invalid, re-downloading..."
+ rm -f "$METALAVA_JAR"
+ fi
+ fi
+
+ # Check if Java is available (required for Metalava JAR)
+ if ! command -v java > /dev/null 2>&1; then
+ error_exit "Java is required to run Metalava. Please install Java."
+ fi
+
+ # First, try to find Metalava in Gradle cache (might already be downloaded)
+ local gradle_user_home="${GRADLE_USER_HOME:-$HOME/.gradle}"
+ echo "Searching for Metalava in Gradle cache..."
+ if [ -d "$gradle_user_home/caches" ]; then
+ local cached_jar=$(find "$gradle_user_home/caches" -name "metalava*.jar" -type f 2>/dev/null | grep -v "sources" | grep -v "javadoc" | head -1)
+ if [ -n "$cached_jar" ] && [ -f "$cached_jar" ]; then
+ # Verify it's a valid JAR file (ZIP format)
+ if unzip -t "$cached_jar" > /dev/null 2>&1; then
+ echo "Found Metalava in Gradle cache, copying to script cache..."
+ cp "$cached_jar" "$METALAVA_JAR"
+ echo -e "${GREEN}✓${NC} Metalava ${METALAVA_VERSION} found in Gradle cache"
+ return 0
+ fi
+ fi
+ fi
+
+ # Download from Google Maven repository (maven.google.com)
+ echo "Downloading Metalava ${METALAVA_VERSION} from Google Maven repository..."
+ local group_path=$(echo "$METALAVA_GROUP" | tr '.' '/')
+ local maven_url="https://dl.google.com/dl/android/maven2/${group_path}/${METALAVA_ARTIFACT}/${METALAVA_VERSION}/${METALAVA_JAR_NAME}"
+
+ echo "Downloading from: $maven_url"
+ if command -v curl > /dev/null 2>&1; then
+ if ! curl -L -f -o "$METALAVA_JAR" "$maven_url"; then
+ error_exit "Failed to download Metalava from $maven_url"
+ fi
+ elif command -v wget > /dev/null 2>&1; then
+ if ! wget -O "$METALAVA_JAR" "$maven_url"; then
+ error_exit "Failed to download Metalava from $maven_url"
+ fi
+ else
+ error_exit "Neither curl nor wget found. Please install one to download Metalava."
+ fi
+
+ # Verify JAR download was successful (JAR should be > 100KB)
+ local jar_size
+ jar_size=$(stat -f%z "$METALAVA_JAR" 2>/dev/null || stat -c%s "$METALAVA_JAR" 2>/dev/null || echo "0")
+ if [ "$jar_size" -lt 100000 ]; then
+ error_exit "Downloaded JAR appears corrupted (${jar_size} bytes). Expected > 100KB."
+ fi
+ echo "Downloaded ${jar_size} bytes"
+
+ # Verify the JAR is valid by checking if it's a valid ZIP file (JARs are ZIP files)
+ if ! unzip -t "$METALAVA_JAR" > /dev/null 2>&1; then
+ error_exit "Downloaded Metalava JAR appears to be invalid or corrupted (not a valid ZIP/JAR file)"
+ fi
+
+ echo -e "${GREEN}✓${NC} Metalava ${METALAVA_VERSION} downloaded and ready"
+}
+
+# Clone repository to temporary directory
+clone_repo() {
+ echo -e "${BLUE}Cloning repository to temporary directory...${NC}"
+
+ # Clone the repository (using file:// protocol for local repos)
+ # This creates a clean copy without affecting the original
+ if [ -d "$CLONE_DIR" ]; then
+ rm -rf "$CLONE_DIR"
+ fi
+
+ echo "Cloning to: $CLONE_DIR"
+ # Use file:// protocol for local repository cloning
+ local repo_url
+ if [[ "$REPO_PATH" == /* ]]; then
+ # Absolute path - use file:// protocol
+ repo_url="file://$REPO_PATH"
+ else
+ # Relative path
+ repo_url="file://$(cd "$REPO_PATH" && pwd)"
+ fi
+
+ # Clone with tags to ensure all tags are available
+ git clone --tags "$repo_url" "$CLONE_DIR" > /dev/null 2>&1 || error_exit "Failed to clone repository"
+
+ # Fetch all remotes and tags from the original repo (in case of remote refs)
+ (cd "$CLONE_DIR" && git remote set-url origin "$repo_url" > /dev/null 2>&1 || true)
+ (cd "$CLONE_DIR" && git fetch --all --tags --prune > /dev/null 2>&1 || true)
+
+ # Also fetch tags directly from the original repo to ensure we have all local tags
+ (cd "$CLONE_DIR" && git fetch "$repo_url" "+refs/tags/*:refs/tags/*" > /dev/null 2>&1 || true)
+
+ echo -e "${GREEN}✓${NC} Repository cloned"
+}
+
+# Add Metalava Gradle task to generate API signature
+add_metalava_task() {
+ local build_gradle="$1"
+ local metalava_jar_path="$2"
+
+ # Check if task already exists
+ if grep -q "task generateApiSignature" "$build_gradle" 2>/dev/null; then
+ return 0
+ fi
+
+ echo "Adding Metalava task to build.gradle..."
+
+ # Escape the path for use in Groovy string
+ local escaped_jar_path=$(echo "$metalava_jar_path" | sed "s/'/\\\\'/g")
+
+ # Append the task at the end of the file
+ # Also add repositories if not present
+ if ! grep -q "repositories" "$build_gradle" 2>/dev/null; then
+ cat >> "$build_gradle" << 'REPOS_EOF'
+
+repositories {
+ google()
+ mavenCentral()
+}
+REPOS_EOF
+ fi
+
+ # Append the task at the end of the file
+ cat >> "$build_gradle" << METALAVA_TASK_EOF
+
+// Metalava API signature generation task (added by compare-api-metalava.sh)
+configurations {
+ metalavaRuntime
+}
+
+dependencies {
+ metalavaRuntime 'com.android.tools.metalava:metalava:1.0.0-alpha13'
+}
+
+task generateApiSignature(type: JavaExec) {
+ dependsOn configurations.metalavaRuntime
+
+ // Use Driver as the main class (this is the correct entry point for Metalava)
+ main = 'com.android.tools.metalava.Driver'
+ classpath = configurations.metalavaRuntime
+
+ // Ensure compile classpath is resolved before running
+ doFirst {
+ try {
+ def compileClasspath = configurations.findByName("compileClasspath")
+ if (compileClasspath != null) {
+ compileClasspath.resolve()
+ }
+ } catch (Exception e) {
+ // Ignore if compileClasspath is not available
+ }
+ }
+
+ // Get Android extension to find source directories and SDK information
+ doFirst {
+ def androidExtension = project.extensions.findByName('android')
+ if (androidExtension == null) {
+ throw new GradleException("Android extension not found")
+ }
+
+ def apiFile = file("\${project.rootDir}/api.txt")
+ apiFile.parentFile.mkdirs()
+
+ def sourceDirs = androidExtension.sourceSets.main.java.srcDirs
+
+ // Build arguments for Metalava
+ def argsList = [
+ "--api", apiFile.absolutePath,
+ "--source-path", sourceDirs.join(File.pathSeparator),
+ "--format=v2"
+ ]
+
+ // Add compile SDK version if available (Metalava uses --compile-sdk-version, not --bootclasspath)
+ try {
+ def compileSdk = androidExtension.compileSdkVersion
+ if (compileSdk != null) {
+ // compileSdkVersion might be a string like "33" or an integer
+ def sdkVersion = compileSdk.toString()
+ argsList.add("--compile-sdk-version")
+ argsList.add(sdkVersion)
+ }
+ } catch (Exception e) {
+ // compileSdkVersion might not be accessible, try compileSdk
+ try {
+ def compileSdk = androidExtension.compileSdk
+ if (compileSdk != null) {
+ def sdkVersion = compileSdk.toString()
+ argsList.add("--compile-sdk-version")
+ argsList.add(sdkVersion)
+ }
+ } catch (Exception e2) {
+ // If we can't get compile SDK, Metalava might be able to infer it
+ // or we can try to get it from the project's build.gradle
+ }
+ }
+
+ // Try to get SDK home from environment or Android extension
+ def sdkHome = System.getenv("ANDROID_HOME") ?: System.getenv("ANDROID_SDK_ROOT")
+ if (sdkHome != null && new File(sdkHome).exists()) {
+ argsList.add("--sdk-home")
+ argsList.add(sdkHome)
+ }
+
+ // Build classpath from project dependencies to help resolve imports
+ def classpathEntries = []
+ try {
+ // Add boot classpath if available
+ def bootClasspath = androidExtension.bootClasspath
+ if (bootClasspath != null && !bootClasspath.isEmpty()) {
+ classpathEntries.addAll(bootClasspath)
+ }
+ } catch (Exception e) {
+ // bootClasspath might not be accessible in newer Android Gradle Plugin versions
+ }
+
+ // Add compile classpath from configurations to help resolve dependencies
+ try {
+ def compileClasspath = configurations.findByName("compileClasspath")
+ if (compileClasspath != null) {
+ compileClasspath.resolve().each { file ->
+ if (file.exists() && file.name.endsWith('.jar')) {
+ classpathEntries.add(file.absolutePath)
+ }
+ }
+ }
+ } catch (Exception e) {
+ // compileClasspath might not be available
+ }
+
+ // Add the classpath if we have entries
+ if (!classpathEntries.isEmpty()) {
+ argsList.add("--classpath")
+ argsList.add(classpathEntries.join(File.pathSeparator))
+ }
+
+ // Suppress API lint errors that are causing failures
+ // These are informational and don't prevent API signature generation
+ argsList.add("--hide")
+ argsList.add("DeprecationMismatch")
+ argsList.add("--hide")
+ argsList.add("ReferencesHidden")
+ argsList.add("--hide")
+ argsList.add("HiddenTypeParameter")
+ argsList.add("--hide")
+ argsList.add("UnresolvedImport")
+
+ args = argsList
+ }
+}
+METALAVA_TASK_EOF
+}
+
+# Generate API signature file for a specific branch/tag/commit
+generate_api_signature() {
+ local ref="$1"
+ local output_api="$2"
+
+ echo -e "\n${BLUE}Generating API signature for ref: ${ref}${NC}"
+
+ # Change to cloned repository directory
+ cd "$CLONE_DIR" || error_exit "Failed to change to cloned repository directory"
+
+ # Verify ref exists (handles branches, tags, and commits)
+ if ! git rev-parse --verify "$ref" > /dev/null 2>&1; then
+ # If that fails, try fetching the ref from origin
+ echo "Ref not found locally, attempting to fetch..."
+ git fetch origin "$ref:$ref" > /dev/null 2>&1 || true
+ # Also try fetching as a tag
+ if [[ "$ref" =~ ^[0-9] ]]; then
+ git fetch origin "refs/tags/$ref:refs/tags/$ref" > /dev/null 2>&1 || true
+ fi
+ # Try again
+ if ! git rev-parse --verify "$ref" > /dev/null 2>&1; then
+ # List available tags for debugging
+ echo -e "${YELLOW}Available tags:${NC}"
+ git tag | grep -E "^5\.[34]" | head -10 || git tag | tail -10
+ error_exit "Ref does not exist: $ref (must be a branch, tag, or commit)"
+ fi
+ fi
+
+ # Checkout the ref (works for branches, tags, and commits)
+ echo "Checking out ref: $ref"
+ if ! git checkout "$ref" 2>/dev/null; then
+ # Try with -f flag for tags that might have conflicts
+ if ! git checkout -f "$ref" 2>/dev/null; then
+ error_exit "Failed to checkout ref: $ref"
+ fi
+ fi
+
+ # Find the Gradle project root after checkout
+ local gradle_root
+ gradle_root=$(find_gradle_root)
+
+ # Check for Gradle wrapper in the project root
+ local gradlew_path
+ if [ -f "$gradle_root/gradlew" ]; then
+ gradlew_path="$gradle_root/gradlew"
+ elif [ -f "./gradlew" ]; then
+ gradlew_path="./gradlew"
+ else
+ error_exit "Gradle wrapper (gradlew) not found. Expected in: $gradle_root or current directory"
+ fi
+
+ # Make gradlew executable
+ chmod +x "$gradlew_path" 2>/dev/null || true
+
+ # Determine the working directory for gradle
+ local gradle_cmd
+ if [ "$gradle_root" != "$PWD" ]; then
+ gradle_cmd="$gradlew_path"
+ echo "Using Gradle wrapper from: $gradle_root"
+ else
+ gradle_cmd="./gradlew"
+ fi
+
+ # Handle parent settings.gradle interference
+ local temp_settings_created=false
+ if [ -f "build.gradle" ] && [ ! -f "settings.gradle" ]; then
+ local parent_settings=$(dirname "$PWD")/settings.gradle
+ if [ -f "$parent_settings" ]; then
+ echo "rootProject.name = 'android-client'" > "settings.gradle"
+ temp_settings_created=true
+ echo "Created temporary settings.gradle to isolate build from parent"
+ fi
+ fi
+
+ # Verify Metalava JAR is available
+ if [ ! -f "$METALAVA_JAR" ]; then
+ error_exit "Metalava JAR not found at: $METALAVA_JAR. Please run setup_metalava first."
+ fi
+
+ # Add Metalava task to build.gradle if needed
+ local build_gradle_file
+ if [ -f "$gradle_root/build.gradle" ]; then
+ build_gradle_file="$gradle_root/build.gradle"
+ elif [ -f "build.gradle" ]; then
+ build_gradle_file="build.gradle"
+ else
+ error_exit "build.gradle not found"
+ fi
+
+ # Add the Metalava task to build.gradle
+ add_metalava_task "$build_gradle_file" "$METALAVA_JAR"
+
+ # Generate API signature using the Gradle task
+ echo "Generating API signature using Metalava..."
+
+ # First, try to compile the project to ensure source is valid
+ echo "Compiling project..."
+ if ! "$gradle_cmd" compileReleaseJavaWithJavac --quiet --no-daemon > /dev/null 2>&1; then
+ echo -e "${YELLOW}Warning: Compilation had issues, but continuing with API generation...${NC}"
+ fi
+
+ # Generate API signature using our custom task
+ echo "Running generateApiSignature task..."
+ if ! "$gradle_cmd" generateApiSignature --quiet --no-daemon; then
+ error_exit "Failed to generate API signature using Metalava"
+ fi
+
+ # Find the generated API signature file
+ local api_path=""
+ local possible_paths=(
+ "$gradle_root/$API_SIGNATURE_FILE"
+ "./$API_SIGNATURE_FILE"
+ "api.txt"
+ )
+
+ for path in "${possible_paths[@]}"; do
+ if [ -f "$path" ]; then
+ api_path="$path"
+ break
+ fi
+ done
+
+ if [ -z "$api_path" ] || [ ! -f "$api_path" ]; then
+ echo -e "${YELLOW}Warning: API signature file not found. Attempting to create a basic one...${NC}"
+ echo -e "${YELLOW}Note: You may need to configure Metalava in your build.gradle manually.${NC}"
+ echo -e "${YELLOW}Add this to your android block:${NC}"
+ echo ""
+ echo " metalava {"
+ echo " generateSignature = true"
+ echo " signatureOutputDirectory = project.rootDir"
+ echo " filename = \"api.txt\""
+ echo " }"
+ echo ""
+
+ # Create an empty API file as fallback (so script doesn't fail)
+ touch "$gradle_root/$API_SIGNATURE_FILE"
+ api_path="$gradle_root/$API_SIGNATURE_FILE"
+ fi
+
+ echo "Found API signature at: $api_path"
+
+ # Copy API signature to temp location
+ cp "$api_path" "$output_api"
+ echo -e "${GREEN}✓${NC} API signature generated and copied: $(basename "$output_api")"
+
+ # Clean up temporary settings.gradle if we created one
+ if [ "$temp_settings_created" = true ] && [ -f "settings.gradle" ]; then
+ rm -f "settings.gradle"
+ fi
+}
+
+# Colorize diff output
+colorize_diff() {
+ while IFS= read -r line || [ -n "$line" ]; do
+ case "$line" in
+ ---*|+++*)
+ # File headers - blue
+ echo -e "${BLUE}${line}${NC}"
+ ;;
+ -" "*)
+ # Removed lines - red
+ echo -e "${RED}${line}${NC}"
+ ;;
+ +" "*)
+ # Added lines - green
+ echo -e "${GREEN}${line}${NC}"
+ ;;
+ @@*)
+ # Hunk headers - yellow
+ echo -e "${YELLOW}${line}${NC}"
+ ;;
+ *)
+ # Context lines - no color
+ echo "$line"
+ ;;
+ esac
+ done
+}
+
+# Compare API signature files
+compare_api_signatures() {
+ local old_api="$1"
+ local new_api="$2"
+
+ if [ ! -f "$old_api" ]; then
+ error_exit "Target API signature not found: $old_api"
+ fi
+
+ if [ ! -f "$new_api" ]; then
+ error_exit "Source API signature not found: $new_api"
+ fi
+
+ echo -e "\n${BLUE}Comparing API signatures...${NC}"
+ echo "OLD: $(basename "$old_api") (target: $TARGET_BRANCH)"
+ echo "NEW: $(basename "$new_api") (source: $SOURCE_BRANCH)"
+ echo ""
+ echo -e "${GREEN}Note: Only public API changes are shown. Private fields and methods are excluded.${NC}"
+ echo ""
+
+ # Use diff to show the differences
+ # Use unified diff format for better readability
+ if command -v diff > /dev/null 2>&1; then
+ # Run diff directly and pipe through colorize_diff
+ # This ensures we always see the output
+ if diff -u "$old_api" "$new_api" 2>&1 | colorize_diff; then
+ # If diff returns 0 (no differences), colorize_diff will have shown nothing
+ # Check if files are actually identical
+ if cmp -s "$old_api" "$new_api" 2>/dev/null; then
+ echo -e "${GREEN}No public API changes detected.${NC}"
+ fi
+ else
+ # diff returned non-zero, meaning there are differences
+ # The diff output was already shown by colorize_diff above
+ echo -e "\n${YELLOW}Public API changes detected (see diff above).${NC}"
+ fi
+ else
+ error_exit "diff command not found. Please install diff utility."
+ fi
+}
+
+# Main execution
+main() {
+ echo -e "${GREEN}API Diff Tool (Metalava)${NC}"
+ echo "=============================="
+ echo ""
+ echo -e "${BLUE}This tool compares ONLY public API changes using Metalava.${NC}"
+ echo -e "${BLUE}Private fields, methods, and internal implementation details are excluded.${NC}"
+ echo ""
+
+ # Parse arguments
+ parse_args "$@"
+
+ # Get repository path
+ get_repo_path
+
+ # Setup Metalava (use absolute path for cache since we'll be in temp dir)
+ setup_metalava
+
+ # Clone repository to temporary directory
+ clone_repo
+
+ # Generate source branch API signature first (newer version)
+ generate_api_signature "$SOURCE_BRANCH" "$SOURCE_API"
+
+ # Generate target branch API signature second (older version)
+ generate_api_signature "$TARGET_BRANCH" "$TARGET_API"
+
+ # Compare API signatures
+ # Note: We show OLD -> NEW, so we pass target (old) first, then source (new)
+ compare_api_signatures "$TARGET_API" "$SOURCE_API"
+
+ # Show file locations
+ echo -e "\n${BLUE}API Signature File Locations:${NC}"
+ echo "Target (old) API: $TARGET_API"
+ echo "Source (new) API: $SOURCE_API"
+
+ # Save final API signature if requested
+ if [ "$SAVE_API_FILE" = true ]; then
+ if [ -n "$OUTPUT_API_FILE" ]; then
+ cp "$SOURCE_API" "$OUTPUT_API_FILE"
+ echo -e "\n${GREEN}✓${NC} Final API signature saved to: $OUTPUT_API_FILE"
+ else
+ # Default: save to current directory with timestamp
+ local timestamp=$(date +%Y%m%d_%H%M%S)
+ OUTPUT_API_FILE="api-${SOURCE_BRANCH//\//_}-${timestamp}.txt"
+ cp "$SOURCE_API" "$OUTPUT_API_FILE"
+ echo -e "\n${GREEN}✓${NC} Final API signature saved to: $OUTPUT_API_FILE"
+ fi
+ fi
+
+ echo -e "\n${GREEN}✓${NC} API comparison completed successfully"
+}
+
+# Run main function
+main "$@"
+
diff --git a/scripts/diffuse.sh b/scripts/diffuse.sh
index 86df0fc50..c8842919f 100755
--- a/scripts/diffuse.sh
+++ b/scripts/diffuse.sh
@@ -2,7 +2,7 @@
# API Diff Tool
# Compares public API surface between two Git branches using Diffuse
-# Usage: ./scripts/compare-api.sh --target --source
+# Usage: ./scripts/diffuse.sh --target --source [--verbose]
set -euo pipefail
@@ -22,14 +22,18 @@ DIFFUSE_URL="https://github.com/JakeWharton/diffuse/releases/download/${DIFFUSE_
DIFFUSE_CACHE_DIR=""
DIFFUSE_BINARY=""
-# AAR configuration
+# AAR configuration (fused library output at root)
AAR_OUTPUT_DIR="build/outputs/aar"
-AAR_NAME="android-client-release.aar"
-GRADLE_TASK="assembleRelease"
+# Prefer exact fused name; also support variant-suffixed names
+AAR_CANDIDATE_NAMES=("android-client.aar" "android-client-release.aar" "android-client-debug.aar")
+# Candidate Gradle tasks in order of preference; pick the first that exists
+# Prefer 'bundle' for fused plugin roots, then legacy variant-specific bundles
+GRADLE_TASK_CANDIDATES=("bundle" "bundleReleaseAar" "assembleRelease")
# Temporary files
TEMP_DIR=$(mktemp -d)
-CLONE_DIR="${TEMP_DIR}/repo"
+SOURCE_CLONE_DIR="${TEMP_DIR}/source-repo"
+TARGET_CLONE_DIR="${TEMP_DIR}/target-repo"
TARGET_AAR="${TEMP_DIR}/target-branch.aar"
SOURCE_AAR="${TEMP_DIR}/source-branch.aar"
@@ -38,6 +42,8 @@ TARGET_BRANCH=""
SOURCE_BRANCH=""
MODULE_PATH=""
REPO_PATH=""
+VERBOSE=false
+FULL=false
# Cleanup function - runs on exit, error, or interrupt
cleanup() {
@@ -45,14 +51,14 @@ cleanup() {
# Always cleanup, even on success
if [ -d "$TEMP_DIR" ]; then
- echo -e "\n${BLUE}Cleaning up temporary files...${NC}"
- rm -rf "$TEMP_DIR"
- echo "Removed temporary repository clone and AAR files"
+ [ "$VERBOSE" = true ] && echo -e "\n${BLUE}Cleaning up temporary files...${NC}"
+ rm -rf "$TEMP_DIR" 2>/dev/null || true
+ [ "$VERBOSE" = true ] && echo "Removed temporary repository clone and AAR files"
fi
# Only show error message if there was an error
if [ $exit_code -ne 0 ]; then
- echo -e "${RED}Script failed with exit code $exit_code${NC}"
+ echo -e "${RED}Script failed with exit code $exit_code${NC}" >&2
fi
exit $exit_code
@@ -67,15 +73,24 @@ error_exit() {
exit 1
}
+# Verbose logging
+log_verbose() {
+ if [ "$VERBOSE" = true ]; then
+ echo -e "${BLUE}$1${NC}"
+ fi
+}
+
# Print usage
usage() {
cat << EOF
-Usage: $0 --target --source [--module ]
+Usage: $0 --target --source [--module ] [--verbose|--full]
Options:
--target ][ Target branch/tag/commit to compare against (e.g., main, origin/main, v1.0.0)
--source ][ Source branch/tag/commit to compare (e.g., feature/my-feature, v1.1.0)
--module Optional: Module path (defaults to root, future-proof for multi-module)
+ --verbose Show verbose output including build logs and progress messages
+ --full Show complete Diffuse output including detailed class/method/field changes
Examples:
# Compare branches
@@ -84,8 +99,11 @@ Examples:
# Compare tags
$0 --target v1.0.0 --source v1.1.0
- # Compare tag to branch
- $0 --target v1.0.0 --source main
+ # Compare with verbose output (shows build logs)
+ $0 --target v1.0.0 --source main --verbose
+
+ # Compare with full Diffuse output (shows all details)
+ $0 --target v1.0.0 --source main --full
EOF
exit 1
@@ -107,6 +125,14 @@ parse_args() {
MODULE_PATH="$2"
shift 2
;;
+ --verbose)
+ VERBOSE=true
+ shift
+ ;;
+ --full)
+ FULL=true
+ shift
+ ;;
-h|--help)
usage
;;
@@ -147,7 +173,7 @@ find_gradle_root() {
# Get repository path/URL
get_repo_path() {
- echo -e "${BLUE}Detecting repository...${NC}"
+ log_verbose "Detecting repository..."
# Check if we're in a Git repository
if ! git rev-parse --git-dir > /dev/null 2>&1; then
@@ -155,23 +181,37 @@ get_repo_path() {
fi
# Get the repository root directory
- REPO_PATH=$(git rev-parse --show-toplevel)
- echo "Repository path: $REPO_PATH"
+ set +eu # Temporarily disable exit on error and unset variable check
+ set +o pipefail
+ REPO_PATH=$(git rev-parse --show-toplevel 2>/dev/null)
+ local git_exit=$?
+ set -eu # Re-enable exit on error and unset variable check
+ set -o pipefail
+
+ # Check if git command failed or result is empty
+ if [ $git_exit -ne 0 ] || [ -z "${REPO_PATH:-}" ]; then
+ error_exit "Failed to determine repository root directory"
+ fi
- echo -e "${GREEN}✓${NC} Repository detected"
+ log_verbose "Repository path: $REPO_PATH"
+
+ log_verbose "✓ Repository detected"
}
# Clone repository to temporary directory
clone_repo() {
- echo -e "${BLUE}Cloning repository to temporary directory...${NC}"
+ local clone_dir="$1"
+ local label="$2"
+
+ log_verbose "Cloning repository to temporary directory ($label)..."
# Clone the repository (using file:// protocol for local repos)
# This creates a clean copy without affecting the original
- if [ -d "$CLONE_DIR" ]; then
- rm -rf "$CLONE_DIR"
+ if [ -d "$clone_dir" ]; then
+ rm -rf "$clone_dir"
fi
- echo "Cloning to: $CLONE_DIR"
+ log_verbose "Cloning to: $clone_dir"
# Use file:// protocol for local repository cloning
local repo_url
if [[ "$REPO_PATH" == /* ]]; then
@@ -182,22 +222,35 @@ clone_repo() {
repo_url="file://$(cd "$REPO_PATH" && pwd)"
fi
- # Clone with tags to ensure all tags are available
- git clone --tags "$repo_url" "$CLONE_DIR" > /dev/null 2>&1 || error_exit "Failed to clone repository"
-
- # Fetch all remotes and tags from the original repo (in case of remote refs)
- (cd "$CLONE_DIR" && git remote set-url origin "$repo_url" > /dev/null 2>&1 || true)
- (cd "$CLONE_DIR" && git fetch --all --tags --prune > /dev/null 2>&1 || true)
-
- # Also fetch tags directly from the original repo to ensure we have all local tags
- (cd "$CLONE_DIR" && git fetch "$repo_url" "+refs/tags/*:refs/tags/*" > /dev/null 2>&1 || true)
+ git clone --tags "$repo_url" "$clone_dir" > /dev/null 2>&1 || error_exit "Failed to clone repository for $label"
+
+ # After cloning from local repo, we need to fetch from the actual remote origin
+ # to ensure all remote branches are properly available
+ (
+ cd "$clone_dir" || error_exit "Failed to enter clone dir for $label"
+
+ # Get the actual remote origin URL from the source repo
+ ACTUAL_ORIGIN=$(cd "$REPO_PATH" && git remote get-url origin 2>/dev/null || echo "")
+
+ if [ -n "$ACTUAL_ORIGIN" ]; then
+ log_verbose "Fetching from actual remote origin: $ACTUAL_ORIGIN"
+ # Update origin to point to the actual remote
+ git remote set-url origin "$ACTUAL_ORIGIN" > /dev/null 2>&1 || true
+ else
+ log_verbose "Using local repository as origin: $repo_url"
+ git remote set-url origin "$repo_url" > /dev/null 2>&1 || true
+ fi
+
+ # Fetch branches and tags for origin using default refspec
+ git fetch origin --prune --tags > /dev/null 2>&1 || true
+ )
- echo -e "${GREEN}✓${NC} Repository cloned"
+ log_verbose "✓ Repository cloned for $label"
}
# Download and setup Diffuse
setup_diffuse() {
- echo -e "${BLUE}Setting up Diffuse...${NC}"
+ log_verbose "Setting up Diffuse..."
# Use absolute path for cache directory (since we'll be working in temp dir)
if [ -z "$DIFFUSE_CACHE_DIR" ]; then
@@ -206,19 +259,17 @@ setup_diffuse() {
else
DIFFUSE_CACHE_DIR="$PWD/$DIFFUSE_CACHE_DIR_RELATIVE"
fi
- DIFFUSE_JAR="$DIFFUSE_CACHE_DIR/diffuse-${DIFFUSE_VERSION}.jar"
- DIFFUSE_BINARY="$DIFFUSE_CACHE_DIR/diffuse-${DIFFUSE_VERSION}"
fi
- # Create cache directory if it doesn't exist
- mkdir -p "$DIFFUSE_CACHE_DIR"
-
# Set the expected binary path
DIFFUSE_BINARY="${DIFFUSE_CACHE_DIR}/diffuse-${DIFFUSE_VERSION}/bin/diffuse"
+ # Create cache directory if it doesn't exist
+ mkdir -p "$DIFFUSE_CACHE_DIR"
+
# Check if Diffuse is already cached and valid (binary should exist and be executable)
if [ -f "$DIFFUSE_BINARY" ] && [ -x "$DIFFUSE_BINARY" ]; then
- echo -e "${GREEN}✓${NC} Diffuse ${DIFFUSE_VERSION} found in cache"
+ log_verbose "✓ Diffuse ${DIFFUSE_VERSION} found in cache"
return 0
fi
@@ -227,11 +278,11 @@ setup_diffuse() {
error_exit "Java is required to run Diffuse. Please install Java."
fi
- echo "Downloading Diffuse ${DIFFUSE_VERSION} from GitHub..."
+ log_verbose "Downloading Diffuse ${DIFFUSE_VERSION} from GitHub..."
# Download Diffuse ZIP (releases are distributed as ZIP files)
local diffuse_zip="${DIFFUSE_CACHE_DIR}/diffuse-${DIFFUSE_VERSION}.zip"
- echo "Downloading from: $DIFFUSE_URL"
+ log_verbose "Downloading from: $DIFFUSE_URL"
if command -v curl > /dev/null 2>&1; then
if ! curl -L -f -o "$diffuse_zip" "$DIFFUSE_URL"; then
error_exit "Failed to download Diffuse from $DIFFUSE_URL"
@@ -250,10 +301,10 @@ setup_diffuse() {
if [ "$zip_size" -lt 100000 ]; then
error_exit "Downloaded ZIP appears corrupted (${zip_size} bytes). Expected > 100KB."
fi
- echo "Downloaded ${zip_size} bytes"
+ log_verbose "Downloaded ${zip_size} bytes"
# Extract JAR from ZIP
- echo "Extracting JAR from ZIP..."
+ log_verbose "Extracting JAR from ZIP..."
if ! command -v unzip > /dev/null 2>&1; then
error_exit "unzip is required to extract Diffuse. Please install unzip."
fi
@@ -298,9 +349,9 @@ setup_diffuse() {
if [ ! -f "$DIFFUSE_BINARY" ] || [ ! -x "$DIFFUSE_BINARY" ]; then
error_exit "Diffuse binary not found or not executable at: $DIFFUSE_BINARY"
fi
- echo "Extracted Diffuse binary: $DIFFUSE_BINARY"
+ log_verbose "Extracted Diffuse binary: $DIFFUSE_BINARY"
- echo -e "${GREEN}✓${NC} Diffuse ${DIFFUSE_VERSION} downloaded and ready"
+ log_verbose "✓ Diffuse ${DIFFUSE_VERSION} downloaded and ready"
}
# Run Diffuse command
@@ -316,77 +367,185 @@ run_diffuse() {
error_exit "Source AAR not found: $new_aar"
fi
- echo -e "\n${BLUE}Running Diffuse comparison...${NC}"
- echo "OLD: $(basename "$old_aar")"
- echo "NEW: $(basename "$new_aar")"
- echo ""
-
# Compare AAR files directly using --aar flag
- # Filter output to show only summary tables (size differences)
+ # Filter output to show only summary tables (size differences including JAR table)
# Skip detailed lists of classes, methods, and fields
local temp_output
temp_output=$(mktemp)
+ local saved_log="${DIFFUSE_CACHE_DIR}/last-diffuse.log"
# Run Diffuse and capture output
- if ! "$DIFFUSE_BINARY" diff --aar "$old_aar" "$new_aar" > "$temp_output" 2>&1; then
- # If Diffuse fails, show the error
- cat "$temp_output"
- rm -f "$temp_output"
- error_exit "Diffuse comparison failed"
- fi
-
- # Filter to show only summary/statistics, skip detailed lists
- awk '
- # Print everything until we hit CLASSES:, METHODS:, or FIELDS: sections
- /^CLASSES:$/ { exit 0 }
- /^METHODS:$/ { exit 0 }
- /^FIELDS:$/ { exit 0 }
- # Print all other lines (headers, size info, summary tables)
- { print }
- ' "$temp_output"
+ # Note: Diffuse may return non-zero exit code when differences are found (which is expected)
+ # So we capture the output regardless of exit code
+ local diffuse_exit_code=0
+ set +e # Temporarily disable exit on error to capture exit code
+ set +o pipefail
+ "$DIFFUSE_BINARY" diff --aar "$old_aar" "$new_aar" > "$temp_output" 2>&1
+ diffuse_exit_code=$?
+ set -e # Re-enable exit on error
+ set -o pipefail
+ # Save full raw log for debugging
+ cp "$temp_output" "$saved_log" >/dev/null 2>&1 || true
+
+ # Check if the output contains actual errors (not just differences)
+ if [ $diffuse_exit_code -ne 0 ]; then
+ # Always print the full Diffuse output on non-zero exit to aid debugging
+ echo -e "${YELLOW}Diffuse exited with code ${diffuse_exit_code}. Full log saved at: ${saved_log}${NC}" >&2
+ cat "$temp_output" >&2 || true
+ fi
+
+ # In verbose or full mode, show full output; otherwise filter to show only key tables
+ if [ "$VERBOSE" = true ] || [ "$FULL" = true ]; then
+ # Show complete unfiltered Diffuse output
+ cat "$temp_output" || true
+ else
+ # Filter to show only the tables we care about:
+ # - AAR summary table
+ # - JAR summary table
+ # - AAR file list section
+ # Skip: file paths, hashes, MANIFEST section, CLASSES/METHODS/FIELDS details
+ set +e # Temporarily disable exit on error for awk
+ set +o pipefail
+ awk '
+ BEGIN {
+ in_aar_table = 0
+ in_jar_table = 0
+ in_aar_section = 0
+ skip_until_next_section = 0
+ }
+
+ # Skip OLD/NEW file path lines with hashes
+ /^OLD: .*\.aar \(.*bytes.*sha256:/ { next }
+ /^NEW: .*\.aar \(.*bytes.*sha256:/ { next }
+
+ # Skip simple OLD:/NEW: filename lines
+ /^OLD: [^\/]*\.aar$/ { next }
+ /^NEW: [^\/]*\.aar$/ { next }
+
+ # Stop at detailed sections
+ /^CLASSES:$/ { exit 0 }
+ /^METHODS:$/ { exit 0 }
+ /^FIELDS:$/ { exit 0 }
+
+ # Detect AAR summary table start
+ / AAR / && /old/ && /new/ && /diff/ {
+ in_aar_table = 1
+ print
+ next
+ }
+
+ # Detect JAR summary table start
+ / JAR / && /old/ && /new/ && /diff/ {
+ in_jar_table = 1
+ print
+ next
+ }
+
+ # Continue printing AAR table until blank line
+ in_aar_table == 1 {
+ print
+ if ($0 == "") {
+ in_aar_table = 0
+ }
+ next
+ }
+
+ # Continue printing JAR table until blank line
+ in_jar_table == 1 {
+ print
+ if ($0 == "") {
+ in_jar_table = 0
+ }
+ next
+ }
+
+ # Handle section headers (=====)
+ /^=+$/ {
+ # Save the separator line
+ sep_line = $0
+ # Read the next line to see what section it is
+ if (getline > 0) {
+ if ($0 ~ /====.*AAR.*====/) {
+ # Start of AAR file list section
+ in_aar_section = 1
+ skip_until_next_section = 0
+ print sep_line
+ print
+ # Read and print the next separator line (there are 2 around the header)
+ if (getline > 0 && $0 ~ /^=+$/) {
+ print
+ }
+ } else if ($0 ~ /====.*MANIFEST.*====/) {
+ # Skip MANIFEST section
+ skip_until_next_section = 1
+ } else if ($0 ~ /====.*JAR.*====/ && !in_aar_section) {
+ # Skip final JAR section (after MANIFEST)
+ skip_until_next_section = 1
+ }
+ }
+ next
+ }
+
+ # Continue printing AAR section content
+ in_aar_section == 1 {
+ # Check if this is the "(total)" line (end of AAR section)
+ if ($0 ~ /\(total\)/) {
+ print
+ in_aar_section = 0
+ skip_until_next_section = 1 # Skip everything until we see CLASSES/METHODS/FIELDS or EOF
+ next
+ }
+ print
+ next
+ }
+
+ # Skip lines when we are skipping a section
+ skip_until_next_section == 1 {
+ next
+ }
+ ' "$temp_output" || true
+ set -e # Re-enable exit on error
+ set -o pipefail
+ fi
# Clean up
- rm -f "$temp_output"
+ rm -f "$temp_output" || true
+
+ # Return success (even if Diffuse found differences, that's a successful comparison)
+ return 0
}
-
# Build AAR for a specific branch/tag/commit
build_aar() {
- local ref="$1"
- local output_aar="$2"
+ local clone_dir="$1"
+ local ref="$2"
+ local output_aar="$3"
- echo -e "\n${BLUE}Building AAR for ref: ${ref}${NC}"
+ log_verbose "Building AAR for ref: ${ref}"
# Change to cloned repository directory
- cd "$CLONE_DIR" || error_exit "Failed to change to cloned repository directory"
+ cd "$clone_dir" || error_exit "Failed to change to cloned repository directory"
# Verify ref exists (handles branches, tags, and commits)
- # First try to verify directly
+ # At this point clone_repo has already fetched from origin, so the
+ # ref should exist if it exists on the remote.
if ! git rev-parse --verify "$ref" > /dev/null 2>&1; then
- # If that fails, try fetching the ref from origin
- echo "Ref not found locally, attempting to fetch..."
- git fetch origin "$ref:$ref" > /dev/null 2>&1 || true
- # Also try fetching as a tag
- if [[ "$ref" =~ ^[0-9] ]]; then
- git fetch origin "refs/tags/$ref:refs/tags/$ref" > /dev/null 2>&1 || true
- fi
- # Try again
- if ! git rev-parse --verify "$ref" > /dev/null 2>&1; then
- # List available tags for debugging
- echo -e "${YELLOW}Available tags:${NC}"
- git tag | grep -E "^5\.[34]" | head -10 || git tag | tail -10
- error_exit "Ref does not exist: $ref (must be a branch, tag, or commit)"
- fi
+ error_exit "Ref does not exist in cloned repo: $ref (ensure this branch/tag/SHA exists on origin)"
fi
# Checkout the ref (works for branches, tags, and commits)
- echo "Checking out ref: $ref"
- if ! git checkout "$ref" 2>/dev/null; then
+ log_verbose "Checking out ref: $ref"
+ if ! git checkout "$ref" >/dev/null 2>&1; then
# Try with -f flag for tags that might have conflicts
- if ! git checkout -f "$ref" 2>/dev/null; then
+ if ! git checkout -f "$ref" >/dev/null 2>&1; then
error_exit "Failed to checkout ref: $ref"
fi
fi
+ # Log resolved commit for traceability
+ if git rev-parse --short HEAD >/dev/null 2>&1; then
+ RESOLVED_SHA="$(git rev-parse --short HEAD || true)"
+ log_verbose "Resolved ref '$ref' to commit: $RESOLVED_SHA"
+ fi
# Find the Gradle project root after checkout (structure might be different)
local gradle_root
@@ -412,7 +571,7 @@ build_aar() {
# Run from gradle root, but need to specify the project
# For now, try running from current directory with the gradlew from root
gradle_cmd="$gradlew_path"
- echo "Using Gradle wrapper from: $gradle_root"
+ log_verbose "Using Gradle wrapper from: $gradle_root"
else
gradle_cmd="./gradlew"
fi
@@ -427,80 +586,112 @@ build_aar() {
# Create a minimal settings.gradle to prevent Gradle from using parent
echo "rootProject.name = 'android-client'" > "settings.gradle"
temp_settings_created=true
- echo "Created temporary settings.gradle to isolate build from parent"
+ log_verbose "Created temporary settings.gradle to isolate build from parent"
fi
fi
- # Build the AAR
- echo "Running: $gradle_cmd $GRADLE_TASK"
- if ! "$gradle_cmd" "$GRADLE_TASK" --quiet --no-daemon; then
- error_exit "Failed to build AAR for ref: $ref"
+ # Build the fused AAR using the first available Gradle task
+ # Clean first to avoid cross-branch artifacts affecting selection
+ # Use aggressive cleaning to ensure no cached artifacts remain
+ log_verbose "Running: $gradle_cmd clean"
+ if [ "$VERBOSE" = true ]; then
+ "$gradle_cmd" clean --no-daemon || true
+ else
+ "$gradle_cmd" clean --quiet --no-daemon >/dev/null 2>&1 || true
fi
- # Find the AAR file - search in multiple possible locations
- local aar_path=""
- local possible_paths=(
- "${AAR_OUTPUT_DIR}/${AAR_NAME}"
- "build/outputs/aar/${AAR_NAME}"
- "build/outputs/aar/*-release.aar"
- "build/outputs/aar/*.aar"
- )
-
- # Also check relative to gradle root if different
- if [ "$gradle_root" != "$PWD" ]; then
- possible_paths+=(
- "$gradle_root/${AAR_OUTPUT_DIR}/${AAR_NAME}"
- "$gradle_root/build/outputs/aar/${AAR_NAME}"
- "$gradle_root/build/outputs/aar/*-release.aar"
- "$gradle_root/build/outputs/aar/*.aar"
- )
- fi
-
- # Try to find the AAR file
- for path_pattern in "${possible_paths[@]}"; do
- # Handle glob patterns
- if [[ "$path_pattern" == *"*"* ]]; then
- # Use find to locate AAR files matching the pattern
- local found_aar
- found_aar=$(find . -path "$path_pattern" -type f 2>/dev/null | head -1)
- if [ -n "$found_aar" ] && [ -f "$found_aar" ]; then
- aar_path="$found_aar"
+ # Additional cleanup: remove build directories to ensure fresh build
+ log_verbose "Removing build directories for clean slate..."
+ rm -rf build/ */build/ .gradle/ */.gradle/ 2>/dev/null || true
+ local build_ok=false
+ local used_task=""
+ for task in "${GRADLE_TASK_CANDIDATES[@]}"; do
+ log_verbose "Running: $gradle_cmd $task"
+ if [ "$VERBOSE" = true ]; then
+ if "$gradle_cmd" "$task" --no-daemon; then
+ build_ok=true
+ used_task="$task"
break
fi
else
- if [ -f "$path_pattern" ]; then
- aar_path="$path_pattern"
+ if "$gradle_cmd" "$task" --quiet --no-daemon > /dev/null 2>&1; then
+ build_ok=true
+ used_task="$task"
break
fi
fi
done
+ if [ "$build_ok" != true ]; then
+ error_exit "Failed to build AAR for ref: $ref (tried: ${GRADLE_TASK_CANDIDATES[*]})"
+ fi
+ log_verbose "Selected Gradle build task for ref '${ref}': $used_task"
- # If still not found, try a broader search
- if [ -z "$aar_path" ]; then
- echo "Searching for AAR files in build directory..."
- local found_aars
- found_aars=$(find . -path "*/build/outputs/aar/*.aar" -type f 2>/dev/null)
- if [ -n "$found_aars" ]; then
- # Prefer release AAR if available
- aar_path=$(echo "$found_aars" | grep -i release | head -1)
- if [ -z "$aar_path" ]; then
- # Otherwise take the first one found
- aar_path=$(echo "$found_aars" | head -1)
- fi
- fi
+ # Find the AAR file - search in multiple possible locations
+ local aar_path=""
+ local possible_paths=()
+ # Add exact candidate names first (both relative and explicit)
+ for name in "${AAR_CANDIDATE_NAMES[@]}"; do
+ possible_paths+=("${AAR_OUTPUT_DIR}/${name}")
+ possible_paths+=("build/outputs/aar/${name}")
+ done
+ # Include fused plugin bundle directory
+ possible_paths+=("build/bundle/bundle.aar")
+ possible_paths+=("build/bundle/*.aar")
+ # Then pattern-based fallbacks (root only; try to avoid picking submodule AARs)
+ possible_paths+=("build/outputs/aar/android-client-*.aar")
+ possible_paths+=("build/outputs/aar/*-release.aar")
+ possible_paths+=("build/outputs/aar/*.aar")
+
+ # Also check relative to gradle root if different
+ if [ "$gradle_root" != "$PWD" ]; then
+ for name in "${AAR_CANDIDATE_NAMES[@]}"; do
+ possible_paths+=("$gradle_root/${AAR_OUTPUT_DIR}/${name}")
+ possible_paths+=("$gradle_root/build/outputs/aar/${name}")
+ done
+ possible_paths+=("$gradle_root/build/bundle/bundle.aar")
+ possible_paths+=("$gradle_root/build/bundle/*.aar")
+ possible_paths+=("$gradle_root/build/outputs/aar/android-client-*.aar")
+ possible_paths+=("$gradle_root/build/outputs/aar/*-release.aar")
+ possible_paths+=("$gradle_root/build/outputs/aar/*.aar")
fi
+ # Find the AAR file - priority-based selection across all locations
+ log_verbose "Searching for AAR files in build directory..."
+ local all_aars
+ all_aars=$(find . -type f -name "*.aar" 2>/dev/null | sort || true)
+ pick_first() { printf "%s\n" "$all_aars" | grep -E "$1" | head -1 || true; }
+ aar_path=$(pick_first "/build/outputs/aar/android-client\\.aar$")
+ [ -z "$aar_path" ] && aar_path=$(pick_first "/build/outputs/aar/android-client-release\\.aar$")
+ [ -z "$aar_path" ] && aar_path=$(pick_first "/build/outputs/aar/android-client-debug\\.aar$")
+ # Fused plugin bundle output
+ [ -z "$aar_path" ] && aar_path=$(pick_first "/build/bundle/bundle\\.aar$")
+ # Locally published fused artifact
+ [ -z "$aar_path" ] && aar_path=$(pick_first "/build/publishing/.*/android-client-[^/]+\\.aar$")
+ # Any remaining android-client*.aar anywhere
+ [ -z "$aar_path" ] && aar_path=$(pick_first "/android-client[^/]*\\.aar$")
+ # Fallback: any root build/outputs release AAR not from logger/main (handles older artifactIds like 'repo-release.aar')
+ [ -z "$aar_path" ] && aar_path=$(printf "%s\n" "$all_aars" | grep -E "/build/outputs/aar/[^/]*-release\\.aar$" | grep -Ev "/(logger|main)/" | head -1 || true)
if [ -z "$aar_path" ] || [ ! -f "$aar_path" ]; then
- echo -e "${YELLOW}Debug: Listing build outputs...${NC}"
- find . -path "*/build/outputs/aar/*" -type f 2>/dev/null | head -10 || true
- error_exit "AAR not found after build. Searched in: ${possible_paths[*]}"
+ echo -e "${YELLOW}Debug: Could not locate AAR. First 50 *.aar files found:${NC}"
+ echo "$all_aars" | head -50 || true
+ error_exit "AAR not found after build."
fi
- echo "Found AAR at: $aar_path"
+ log_verbose "Selected fused AAR artifact for ref '${ref}': $aar_path"
# Copy AAR to temp location
cp "$aar_path" "$output_aar"
- echo -e "${GREEN}✓${NC} AAR built and copied: $(basename "$output_aar")"
+
+ # Verify the AAR was copied and log its size and checksum
+ local aar_size
+ aar_size=$(stat -f%z "$output_aar" 2>/dev/null || stat -c%s "$output_aar" 2>/dev/null || echo "unknown")
+ local aar_sha=""
+ if command -v shasum >/dev/null 2>&1; then
+ aar_sha=$(shasum -a 256 "$output_aar" 2>/dev/null | awk '{print $1}')
+ elif command -v openssl >/dev/null 2>&1; then
+ aar_sha=$(openssl dgst -sha256 "$output_aar" 2>/dev/null | awk '{print $2}')
+ fi
+ log_verbose "✓ AAR built and copied for ref '${ref}': $(basename "$output_aar") (${aar_size} bytes${aar_sha:+, sha256: $aar_sha})"
# Clean up temporary settings.gradle if we created one
# (This is cleaned up here, but also safe if script fails - temp dir will be removed)
@@ -511,10 +702,6 @@ build_aar() {
# Main execution
main() {
- echo -e "${GREEN}API Diff Tool${NC}"
- echo "=============="
- echo ""
-
# Parse arguments
parse_args "$@"
@@ -525,24 +712,51 @@ main() {
local original_dir="$PWD"
setup_diffuse
- # Clone repository to temporary directory
- clone_repo
+ # Clone repository twice - once for each branch to ensure complete isolation
+ # This prevents any build cache or Gradle state from affecting the comparison
+ clone_repo "$SOURCE_CLONE_DIR" "source"
+ clone_repo "$TARGET_CLONE_DIR" "target"
# Build source branch AAR first (newer version)
# This ensures we build the newer version first, which may have more dependencies
- build_aar "$SOURCE_BRANCH" "$SOURCE_AAR"
-
- # Build target branch AAR second (older version)
- build_aar "$TARGET_BRANCH" "$TARGET_AAR"
+ build_aar "$SOURCE_CLONE_DIR" "$SOURCE_BRANCH" "$SOURCE_AAR"
+
+ # Build target branch AAR second (older version) in separate clone directory
+ build_aar "$TARGET_CLONE_DIR" "$TARGET_BRANCH" "$TARGET_AAR"
+
+ # Summarize what will be compared (paths, sizes, hashes) to ensure distinct artifacts
+ # Only show in verbose mode
+ if [ "$VERBOSE" = true ]; then
+ summarize_aar() {
+ local label="$1"
+ local file="$2"
+ local size
+ size=$(stat -f%z "$file" 2>/dev/null || stat -c%s "$file" 2>/dev/null || wc -c < "$file" 2>/dev/null || echo "unknown")
+ local sha=""
+ if command -v shasum >/dev/null 2>&1; then
+ sha=$(shasum -a 256 "$file" 2>/dev/null | awk '{print $1}')
+ elif command -v openssl >/dev/null 2>&1; then
+ sha=$(openssl dgst -sha256 "$file" 2>/dev/null | awk '{print $2}')
+ fi
+ echo -e "${BLUE}${label}: ${NC}$file (${size} bytes${sha:+, sha256: $sha})"
+ }
+ summarize_aar "OLD (target)" "$TARGET_AAR"
+ summarize_aar "NEW (source)" "$SOURCE_AAR"
+ fi
# Run Diffuse comparison
# Note: Diffuse shows OLD -> NEW, so we pass target (old) first, then source (new)
# We can run from any directory since we use absolute paths
+ set +e # Temporarily disable exit on error
+ set +o pipefail
run_diffuse "$TARGET_AAR" "$SOURCE_AAR"
+ local run_exit=$?
+ set -e # Re-enable exit on error
+ set -o pipefail
- echo -e "\n${GREEN}✓${NC} API comparison completed successfully"
+ # Return success (run_diffuse returns 0 on success)
+ return 0
}
# Run main function
main "$@"
-
diff --git a/settings.gradle b/settings.gradle
new file mode 100644
index 000000000..0f38584f2
--- /dev/null
+++ b/settings.gradle
@@ -0,0 +1,4 @@
+rootProject.name = 'android-client'
+
+include ':logger'
+include ':main'
]