diff --git a/.github/workflows/android_build.yml b/.github/workflows/android_build.yml index 7d773a417d..790d690ebd 100644 --- a/.github/workflows/android_build.yml +++ b/.github/workflows/android_build.yml @@ -18,9 +18,6 @@ jobs: environment: qa type: debug output: APK - secrets: - NEXUS_USERNAME: ${{ secrets.NEXUS_USERNAME }} - NEXUS_PASSWORD: ${{ secrets.NEXUS_PASSWORD }} build-qa-release: if: github.event_name == 'push' && (github.ref_name == 'master' || startsWith(github.ref_name, 'release-')) diff --git a/.github/workflows/branch_cut.yml b/.github/workflows/branch_cut.yml index 5a199fb425..c160a9fb63 100644 --- a/.github/workflows/branch_cut.yml +++ b/.github/workflows/branch_cut.yml @@ -1,20 +1,30 @@ -name: Release Branch Cut CI +name: Branch Cut CI on: workflow_dispatch: inputs: version_code: - description: App Version Code (e.g., 301) + description: Version Code (e.g., 301) required: true type: string version_name: - description: App Version Name (e.g., 3.0.1) + description: Version Name (e.g., 3.0.1) required: true type: string jobs: + print-inputs: + runs-on: [ default ] + steps: + - name: Print Inputs + run: | + echo "| Input Key | Input Value |" >> $GITHUB_STEP_SUMMARY + echo "| :---: | :---: |" >> $GITHUB_STEP_SUMMARY + echo "| Version Code | ${{ inputs.version_code }} |" >> $GITHUB_STEP_SUMMARY + echo "| Version Name | ${{ inputs.version_name }} |" >> $GITHUB_STEP_SUMMARY branch-cut: runs-on: [ default ] + needs: [ print-inputs ] environment: RELEASE_BRANCH_CUT steps: - name: Checkout Repository @@ -26,13 +36,13 @@ jobs: export GITHUB_EMAIL=$(echo "$GITHUB_ACTOR@navi.com" | sed 's/-/./g' | sed 's/_navi//g') git config --global user.email "$GITHUB_EMAIL" git config --global user.name "$GITHUB_ACTOR" - - name: Checkout release-${{ github.event.inputs.version_name }} from ${{ github.ref_name }} - run: git checkout -b release-${{ github.event.inputs.version_name }} - - name: Update Version Name (${{ github.event.inputs.version_name }}) & Version Code (${{ github.event.inputs.version_code }}) + - name: Checkout release-${{ inputs.version_name }} from ${{ github.ref_name }} + run: git checkout -b release-${{ inputs.version_name }} + - name: Update Version Name (${{ inputs.version_name }}) & Version Code (${{ inputs.version_code }}) run: | - sed -i 's/def VERSION_NAME = "[0-9].*"/def VERSION_NAME = "${{ github.event.inputs.version_name }}"/g' app/build.gradle - sed -i 's/def VERSION_CODE = [0-9].*/def VERSION_CODE = ${{ github.event.inputs.version_code }}/g' app/build.gradle + sed -i 's/def VERSION_NAME = "[0-9].*"/def VERSION_NAME = "${{ inputs.version_name }}"/g' app/build.gradle + sed -i 's/def VERSION_CODE = [0-9].*/def VERSION_CODE = ${{ inputs.version_code }}/g' app/build.gradle - name: Commit Version Changes - run: git commit app/build.gradle -m "TP-52887 | Bump Project Version to ${{ github.event.inputs.version_name }} (${{ github.event.inputs.version_code }})" - - name: Push release-${{ github.event.inputs.version_name }} Branch - run: git push -u origin release-${{ github.event.inputs.version_name }} + run: git commit app/build.gradle -m "TP-52887 | Bump Project Version to ${{ inputs.version_name }} (${{ inputs.version_code }})" + - name: Push release-${{ inputs.version_name }} Branch + run: git push -u origin release-${{ inputs.version_name }} diff --git a/.github/workflows/generate_apk_diff.yml b/.github/workflows/generate_apk_diff.yml index cac2543b10..5e32758534 100644 --- a/.github/workflows/generate_apk_diff.yml +++ b/.github/workflows/generate_apk_diff.yml @@ -43,7 +43,7 @@ jobs: previous_apk_size=$(stat -c %s $previous_apk_path) current_apk_size=$(stat -c %s $current_apk_path) size_diff=$((current_apk_size - previous_apk_size)) - echo "::set-output name=size_diff::$size_diff" + echo "size_diff=$size_diff" >> $GITHUB_OUTPUT echo "The previous value is $previous_apk_size" echo "The latest value is $current_apk_size" - name: Check Size Difference @@ -51,11 +51,11 @@ jobs: run: | size_diff=${{ steps.apk-diff.outputs.size_diff }} if [[ $size_diff -gt 204800 ]]; then - echo "::set-output name=job_status::failure" + echo "job_status=failure" >> $GITHUB_OUTPUT elif [[ $size_diff -gt 102400 ]]; then - echo "::set-output name=job_status::warning" + echo "job_status=warning" >> $GITHUB_OUTPUT else - echo "::set-output name=job_status::success" + echo "job_status=success" >> $GITHUB_OUTPUT fi - name: Write PR Comment uses: actions/github-script@v7 diff --git a/.github/workflows/generate_build.yml b/.github/workflows/generate_build.yml index 508410b9af..1d4f17f7b6 100644 --- a/.github/workflows/generate_build.yml +++ b/.github/workflows/generate_build.yml @@ -4,55 +4,48 @@ on: workflow_dispatch: inputs: environment: - description: Choose build environment + description: Build Environment required: true type: choice options: - qa - dev type: - description: Choose build type + description: Build Type required: true type: choice options: - debug - release output: - description: Choose output type + description: Build Output required: true type: choice options: - APK - AAB version_code: - description: Enter app version code (example, 292) + description: Version Code (e.g., 301) required: false type: string version_name: - description: Enter app version name (example, 3.2.1) + description: Version Name (e.g., 3.0.1) required: false type: string workflow_call: inputs: environment: - description: Build environment passed from caller workflow + description: Build Environment passed from caller workflow required: true type: string type: - description: Build type passed from caller workflow + description: Build Type passed from caller workflow required: true type: string output: - description: Output type passed from caller workflow + description: Build Output passed from caller workflow required: true type: string - secrets: - NEXUS_USERNAME: - description: Nexus Username - required: false - NEXUS_PASSWORD: - description: Nexus Password - required: false env: NON_PROD_RELEASE_STORE_PASSWORD: android @@ -60,26 +53,34 @@ env: NON_PROD_RELEASE_KEY_PASSWORD: android jobs: + print-inputs: + runs-on: [ default ] + steps: + - name: Print Inputs + run: | + echo "| Input Key | Input Value |" >> $GITHUB_STEP_SUMMARY + echo "| :---: | :---: |" >> $GITHUB_STEP_SUMMARY + echo "| Build Environment | ${{ inputs.environment }} |" >> $GITHUB_STEP_SUMMARY + echo "| Build Type | ${{ inputs.type }} |" >> $GITHUB_STEP_SUMMARY + echo "| Build Output | ${{ inputs.output }} |" >> $GITHUB_STEP_SUMMARY + echo "| Version Code | ${{ inputs.version_code || '🚫' }} |" >> $GITHUB_STEP_SUMMARY + echo "| Version Name | ${{ inputs.version_name || '🚫' }} |" >> $GITHUB_STEP_SUMMARY generate: runs-on: [ android ] + needs: [ print-inputs ] steps: - name: Checkout Repository uses: actions/checkout@v4 - - name: Override App Version Code + - name: Override Version Code if: github.event_name == 'workflow_dispatch' && inputs.version_code != '' run: sed -i 's/def VERSION_CODE = [0-9].*/def VERSION_CODE = ${{ inputs.version_code }}/g' app/build.gradle - - name: Override App Version Name + - name: Override Version Name if: github.event_name == 'workflow_dispatch' && inputs.version_name != '' run: sed -i 's/def VERSION_NAME = "[0-9].*"/def VERSION_NAME = "${{ inputs.version_name }}"/g' app/build.gradle - name: Log Build Metadata run: | - echo "Commit SHA: ${{ github.sha }}" - echo "Branch Name: ${{ github.ref }}" - echo "Build Environment: ${{ inputs.environment }}" - echo "Build Type: ${{ inputs.type }}" - echo "Build Output: ${{ inputs.output }}" - echo "App Version Code: $(awk '/VERSION_CODE/ {print $4}' app/build.gradle)" - echo "App Version Name: $(awk '/VERSION_NAME/ {print $4}' app/build.gradle | tr -d '"')" + echo "Version Code: $(awk '/VERSION_CODE/ {print $4}' app/build.gradle)" + echo "Version Name: $(awk '/VERSION_NAME/ {print $4}' app/build.gradle | tr -d '"')" - name: Set up JDK 17 uses: actions/setup-java@v4 with: @@ -108,8 +109,8 @@ jobs: app/build/outputs/apk_from_bundle/ app/build/outputs/bundle/ retention-days: 5 - - name: Upload to Nexus and log size - if: inputs.type == 'release' && github.event_name == 'push' && startsWith(github.ref_name, 'release-') + - name: Log APK Size + if: inputs.environment == 'qa' && inputs.type == 'release' && inputs.output == 'APK' && github.event_name == 'push' && startsWith(github.ref_name, 'release-') run: | current_version=$(awk '/VERSION_CODE/ {print $4}' app/build.gradle) current_apk_size=$(stat -c %s app/build/outputs/apk_from_bundle/qaRelease/app-qa-release-universal.apk || true) diff --git a/.github/workflows/metrics_logger.yml b/.github/workflows/metrics_logger.yml index 42e2d90fee..43cdcde307 100644 --- a/.github/workflows/metrics_logger.yml +++ b/.github/workflows/metrics_logger.yml @@ -75,4 +75,4 @@ jobs: timestamp=$(($(date +%s) * 1000)) && curl -X POST -H "Content-Type: application/json" -d "{\"events\":[{\"attributes\":{\"$build_time_key\":\"${{ steps.build_apk.outputs.BUILD_TIME }}\",\"$apk_size_key\":\"${{ steps.apk_size.outputs.APK_SIZE }}\"},\"event_name\":\"app_dev_exp_metrics\",\"timestamp\":$timestamp}]}" https://janus.prod.navi-tech.in/events/json - name: Run UI tests if: matrix.build_type == 'freshDebug' - run: ./gradlew :app:connectedUitestDebugAndroidTest -Pandroid.testInstrumentationRunnerArguments.package=com.navi.ap --stacktrace + run: ./gradlew :app:connectedMockDebugAndroidTest -Pandroid.testInstrumentationRunnerArguments.package=com.navi.ap --stacktrace diff --git a/Dockerfile b/Dockerfile index aaf5eb5db1..51d2506cf0 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,21 +1,21 @@ -FROM registry.cmd.navi-tech.in/medici/android-base:latest +FROM registry.cmd.navi-tech.in/medici/android-base:v364d2ff4c824bbcc400a1a599527a4d6887b20cf ARG RELEASE_STORE_FILE ARG RELEASE_STORE_PASSWORD ARG RELEASE_KEY_ALIAS ARG RELEASE_KEY_PASSWORD ARG BASE_URL -ARG MOENGAGE_KEY +ARG ALFRED_API_KEY ARG APPSFLYER_KEY ARG HYPERVERGE_APP_ID ARG HYPERVERGE_APP_KEY +ARG MOENGAGE_KEY +ARG SSL_PINNING_KEY ARG XIAOMI_PUSH_APP_ID ARG XIAOMI_PUSH_APP_KEY ARG YOUTUBE_KEY -ARG SSL_PINNING_KEY -ARG ALFRED_API_KEY -ARG TRUECALLER_KEY ARG FACEBOOK_APP_ID +ARG TRUECALLER_KEY ARG GI_RAZORPAY_KEY ARG GOOGLE_MAPS_KEY ARG FLAVOR @@ -32,7 +32,7 @@ WORKDIR $WORK_DIR RUN echo ${RELEASE_STORE_FILE} | base64 -d >> app/navi-release-key.jks -RUN ./gradlew clean :app:bundleProdRelease -PRELEASE_STORE_PASSWORD=${RELEASE_STORE_PASSWORD} -PRELEASE_KEY_ALIAS=${RELEASE_KEY_ALIAS} -PRELEASE_KEY_PASSWORD=${RELEASE_KEY_PASSWORD} -PBASE_URL=${BASE_URL} -PMOENGAGE_KEY=${MOENGAGE_KEY} -PAPPSFLYER_KEY=${APPSFLYER_KEY} -PHYPERVERGE_APP_ID=${HYPERVERGE_APP_ID} -PHYPERVERGE_APP_KEY=${HYPERVERGE_APP_KEY} -PXIAOMI_PUSH_APP_ID=${XIAOMI_PUSH_APP_ID} -PXIAOMI_PUSH_APP_KEY=${XIAOMI_PUSH_APP_KEY} -PYOUTUBE_KEY=${YOUTUBE_KEY} -PSSL_PINNING_KEY=${SSL_PINNING_KEY} -PALFRED_API_KEY=${ALFRED_API_KEY} -PTRUECALLER_KEY=${TRUECALLER_KEY} -PFACEBOOK_APP_ID=${FACEBOOK_APP_ID} -PGI_RAZORPAY_KEY=${GI_RAZORPAY_KEY} -PGOOGLE_MAPS_KEY=${GOOGLE_MAPS_KEY} +RUN ./gradlew clean :app:bundleProdRelease -PRELEASE_STORE_PASSWORD=${RELEASE_STORE_PASSWORD} -PRELEASE_KEY_ALIAS=${RELEASE_KEY_ALIAS} -PRELEASE_KEY_PASSWORD=${RELEASE_KEY_PASSWORD} -PBASE_URL=${BASE_URL} -PALFRED_API_KEY=${ALFRED_API_KEY} -PAPPSFLYER_KEY=${APPSFLYER_KEY} -PHYPERVERGE_APP_ID=${HYPERVERGE_APP_ID} -PHYPERVERGE_APP_KEY=${HYPERVERGE_APP_KEY} -PMOENGAGE_KEY=${MOENGAGE_KEY} -PSSL_PINNING_KEY=${SSL_PINNING_KEY} -PXIAOMI_PUSH_APP_ID=${XIAOMI_PUSH_APP_ID} -PXIAOMI_PUSH_APP_KEY=${XIAOMI_PUSH_APP_KEY} -PYOUTUBE_KEY=${YOUTUBE_KEY} -PFACEBOOK_APP_ID=${FACEBOOK_APP_ID} -PTRUECALLER_KEY=${TRUECALLER_KEY} -PGI_RAZORPAY_KEY=${GI_RAZORPAY_KEY} -PGOOGLE_MAPS_KEY=${GOOGLE_MAPS_KEY} RUN ./gradlew publish -PFLAVOR=${FLAVOR} -PNEXUS_URL=${NEXUS_URL} -PNEXUS_USERNAME=${NEXUS_USERNAME} -PNEXUS_PASSWORD=${NEXUS_PASSWORD} diff --git a/app/build.gradle b/app/build.gradle index cae9439aac..9774d3b01a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -11,46 +11,26 @@ plugins { id 'maven-publish' } -kapt { - correctErrorTypes true -} - def VERSION_CODE = 376 def VERSION_NAME = "4.5.1" android { namespace 'com.naviapp' compileSdk 34 - compileOptions { - sourceCompatibility JavaVersion.VERSION_17 - targetCompatibility JavaVersion.VERSION_17 - incremental true - } - testOptions { - unitTests.returnDefaultValues = true - } - kotlinOptions { - jvmTarget = '17' - freeCompilerArgs += ["-Xstring-concat=inline"] - } - lint { - disable 'NullSafeMutableLiveData' - baseline file("lint-baseline.xml") - } - androidResources { - ignoreAssetsPattern '!yolov5n_224x224_Lite.tflite' - } + defaultConfig { applicationId "com.naviapp" minSdk 21 targetSdk 33 versionCode VERSION_CODE versionName VERSION_NAME - resourceConfigurations += ['en'] + multiDexEnabled true + resourceConfigurations += ['en'] testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunnerArguments clearPackageData: 'true' } + signingConfigs { debug { storeFile file('../keystore/navi-debug-key.jks') @@ -70,21 +50,13 @@ android { } } } - sourceSets { - dev { - androidTest { - java.srcDirs = ['src/androidTest/java', 'src/androidTestLibrary/java'] - } - test { - java.srcDirs = ['src/test/java'] - } - } - release { - java.srcDirs = ['src/main/java', 'src/release/java'] - } - debug { - java.srcDirs = ['src/main/java', 'src/debug/java'] - } + androidResources { + ignoreAssetsPattern '!yolov5n_224x224_Lite.tflite' + } + buildFeatures { + buildConfig true + compose true + dataBinding true } buildTypes { debug { @@ -106,128 +78,155 @@ android { manifestPlaceholders = [branchMode: 'false'] } } - buildFeatures { - buildConfig true - compose true - dataBinding true - } bundle { - language { - enableSplit = false + abi { + enableSplit = true } density { enableSplit = true } - abi { - enableSplit = true + language { + enableSplit = false } } + compileOptions { + incremental true + sourceCompatibility JavaVersion.VERSION_17 + targetCompatibility JavaVersion.VERSION_17 + } composeOptions { kotlinCompilerExtensionVersion libs.versions.compose.lib.get() } - flavorDimensions = ["app"] - productFlavors { - qa { - isDefault true - dimension "app" - applicationId "com.naviapp.dev" - buildConfigField 'String', 'BASE_URL', formatString('https://qa-sa.navi.com/') - buildConfigField 'String', 'MOENGAGE_KEY', formatString('2PDJ4M6TDY7ADQ5N5LU48H9Y') - buildConfigField 'String', 'APPSFLYER_KEY', formatString('ua6cppJ9oQx7aPQPNyHrHA') - buildConfigField 'String', 'HYPERVERGE_APP_ID', formatString('2c007b') - buildConfigField 'String', 'HYPERVERGE_APP_KEY', formatString('c9b1e034f7c8961a3f5b') - buildConfigField 'String', 'XIAOMI_PUSH_APP_ID', formatString('2882303761521925585') - buildConfigField 'String', 'XIAOMI_PUSH_APP_KEY', formatString('5692192517585') - buildConfigField 'String', 'YOUTUBE_KEY', formatString('AIzaSyDlbxag2dCc-a9ac8JTfH3nnVw41pdI-1U') - buildConfigField 'String', 'SSL_PINNING_KEY', formatString('sha256/nUU7NjGrGo/mxijjsX+MHerUbpIHBidF8LAYOEPFWA8=') - buildConfigField 'String', 'ALFRED_API_KEY', formatString('oMv77fgpBg9NFGom0Psizbf7lbrdBVJz') - manifestPlaceholders = [ - TRUECALLER_KEY : "yicxl1xh6jidagslpi0h9d-uklfeinnx4a6mb6rdgyi", - FACEBOOK_APP_ID: "0" - ] - } - uitest { - dimension "app" - applicationId "com.naviapp.dev" - buildConfigField 'String', 'BASE_URL', formatString('http://localhost:2763/') - buildConfigField 'String', 'MOENGAGE_KEY', formatString('2PDJ4M6TDY7ADQ5N5LU48H9Y') - buildConfigField 'String', 'APPSFLYER_KEY', formatString('ua6cppJ9oQx7aPQPNyHrHA') - buildConfigField 'String', 'HYPERVERGE_APP_ID', formatString('2c007b') - buildConfigField 'String', 'HYPERVERGE_APP_KEY', formatString('c9b1e034f7c8961a3f5b') - buildConfigField 'String', 'XIAOMI_PUSH_APP_ID', formatString('2882303761521925585') - buildConfigField 'String', 'XIAOMI_PUSH_APP_KEY', formatString('5692192517585') - buildConfigField 'String', 'YOUTUBE_KEY', formatString('AIzaSyDlbxag2dCc-a9ac8JTfH3nnVw41pdI-1U') - buildConfigField 'String', 'SSL_PINNING_KEY', formatString('sha256/nUU7NjGrGo/mxijjsX+MHerUbpIHBidF8LAYOEPFWA8=') - buildConfigField 'String', 'ALFRED_API_KEY', formatString('oMv77fgpBg9NFGom0Psizbf7lbrdBVJz') - manifestPlaceholders = [ - TRUECALLER_KEY : "yicxl1xh6jidagslpi0h9d-uklfeinnx4a6mb6rdgyi", - FACEBOOK_APP_ID: "0" - ] - } - dev { - dimension "app" - applicationId "com.naviapp.dev" - buildConfigField 'String', 'BASE_URL', formatString('https://dev-sa.navi.com/') - buildConfigField "String", "MOENGAGE_KEY", formatString('2PDJ4M6TDY7ADQ5N5LU48H9Y') - buildConfigField "String", "APPSFLYER_KEY", formatString('ua6cppJ9oQx7aPQPNyHrHA') - buildConfigField 'String', 'HYPERVERGE_APP_ID', formatString('2c007b') - buildConfigField 'String', 'HYPERVERGE_APP_KEY', formatString('c9b1e034f7c8961a3f5b') - buildConfigField 'String', 'XIAOMI_PUSH_APP_ID', formatString('2882303761521925585') - buildConfigField 'String', 'XIAOMI_PUSH_APP_KEY', formatString('5692192517585') - buildConfigField 'String', 'YOUTUBE_KEY', formatString('AIzaSyDlbxag2dCc-a9ac8JTfH3nnVw41pdI-1U') - buildConfigField 'String', 'SSL_PINNING_KEY', formatString('sha256/4sMl7dWjcM6O5RKWBw3DUpd5Qy5OX5pvcHMKQIF1bgM=') - buildConfigField 'String', 'ALFRED_API_KEY', formatString('oMv77fgpBg9NFGom0Psizbf7lbrdBVJz') - manifestPlaceholders = [ - TRUECALLER_KEY : "yicxl1xh6jidagslpi0h9d-uklfeinnx4a6mb6rdgyi", - FACEBOOK_APP_ID: "0" - ] - } - prod { - dimension "app" - if (project.hasProperty('BASE_URL') - && project.hasProperty('MOENGAGE_KEY') - && project.hasProperty('APPSFLYER_KEY') - && project.hasProperty('HYPERVERGE_APP_ID') - && project.hasProperty('HYPERVERGE_APP_KEY') - && project.hasProperty('XIAOMI_PUSH_APP_ID') - && project.hasProperty('XIAOMI_PUSH_APP_KEY') - && project.hasProperty('YOUTUBE_KEY') - && project.hasProperty('SSL_PINNING_KEY') - && project.hasProperty('ALFRED_API_KEY') - && project.hasProperty('TRUECALLER_KEY') - && project.hasProperty('FACEBOOK_APP_ID') - ) { - buildConfigField 'String', 'BASE_URL', formatString("$BASE_URL") - buildConfigField 'String', 'MOENGAGE_KEY', formatString("$MOENGAGE_KEY") - buildConfigField 'String', 'APPSFLYER_KEY', formatString("$APPSFLYER_KEY") - buildConfigField 'String', 'HYPERVERGE_APP_ID', formatString("$HYPERVERGE_APP_ID") - buildConfigField 'String', 'HYPERVERGE_APP_KEY', formatString("$HYPERVERGE_APP_KEY") - buildConfigField 'String', 'XIAOMI_PUSH_APP_ID', formatString("$XIAOMI_PUSH_APP_ID") - buildConfigField 'String', 'XIAOMI_PUSH_APP_KEY', formatString("$XIAOMI_PUSH_APP_KEY") - buildConfigField 'String', 'YOUTUBE_KEY', formatString("$YOUTUBE_KEY") - buildConfigField 'String', 'SSL_PINNING_KEY', formatString("$SSL_PINNING_KEY") - buildConfigField 'String', 'ALFRED_API_KEY', formatString("$ALFRED_API_KEY") - manifestPlaceholders = [ - TRUECALLER_KEY : "$TRUECALLER_KEY", - FACEBOOK_APP_ID: "$FACEBOOK_APP_ID" - ] - } - } + dynamicFeatures = [':navi_pl_dynamic', ':navi_hl_dynamic'] + kotlinOptions { + freeCompilerArgs += ["-Xstring-concat=inline"] + jvmTarget = '17' + } + lint { + baseline file("lint-baseline.xml") + disable 'NullSafeMutableLiveData' } packagingOptions { - resources { - excludes += ['META-INF'] - } jniLibs { useLegacyPackaging = true } + resources { + excludes += ['META-INF'] + } } repositories { flatDir { dirs 'libs' } } - dynamicFeatures = [':navi_pl_dynamic', ':navi_hl_dynamic'] + sourceSets { + dev { + androidTest { + java.srcDirs = ['src/androidTest/java', 'src/androidTestLibrary/java'] + } + test { + java.srcDirs = ['src/test/java'] + } + } + release { + java.srcDirs = ['src/main/java', 'src/release/java'] + } + debug { + java.srcDirs = ['src/main/java', 'src/debug/java'] + } + } + testOptions { + unitTests.returnDefaultValues = true + } + flavorDimensions = ["app"] + productFlavors { + dev { + dimension "app" + applicationId "com.naviapp.dev" + buildConfigField 'String', 'ALFRED_API_KEY', formatString('oMv77fgpBg9NFGom0Psizbf7lbrdBVJz') + buildConfigField 'String', 'APPSFLYER_KEY', formatString('ua6cppJ9oQx7aPQPNyHrHA') + buildConfigField 'String', 'BASE_URL', formatString('https://dev-sa.navi.com/') + buildConfigField 'String', 'HYPERVERGE_APP_ID', formatString('2c007b') + buildConfigField 'String', 'HYPERVERGE_APP_KEY', formatString('c9b1e034f7c8961a3f5b') + buildConfigField 'String', 'MOENGAGE_KEY', formatString('2PDJ4M6TDY7ADQ5N5LU48H9Y') + buildConfigField 'String', 'SSL_PINNING_KEY', formatString('sha256/4sMl7dWjcM6O5RKWBw3DUpd5Qy5OX5pvcHMKQIF1bgM=') + buildConfigField 'String', 'XIAOMI_PUSH_APP_ID', formatString('2882303761521925585') + buildConfigField 'String', 'XIAOMI_PUSH_APP_KEY', formatString('5692192517585') + buildConfigField 'String', 'YOUTUBE_KEY', formatString('AIzaSyDlbxag2dCc-a9ac8JTfH3nnVw41pdI-1U') + manifestPlaceholders = [ + FACEBOOK_APP_ID: "0", + TRUECALLER_KEY : "yicxl1xh6jidagslpi0h9d-uklfeinnx4a6mb6rdgyi" + ] + } + qa { + isDefault true + dimension "app" + applicationId "com.naviapp.dev" + buildConfigField 'String', 'ALFRED_API_KEY', formatString('oMv77fgpBg9NFGom0Psizbf7lbrdBVJz') + buildConfigField 'String', 'APPSFLYER_KEY', formatString('ua6cppJ9oQx7aPQPNyHrHA') + buildConfigField 'String', 'BASE_URL', formatString('https://qa-sa.navi.com/') + buildConfigField 'String', 'HYPERVERGE_APP_ID', formatString('2c007b') + buildConfigField 'String', 'HYPERVERGE_APP_KEY', formatString('c9b1e034f7c8961a3f5b') + buildConfigField 'String', 'MOENGAGE_KEY', formatString('2PDJ4M6TDY7ADQ5N5LU48H9Y') + buildConfigField 'String', 'SSL_PINNING_KEY', formatString('sha256/nUU7NjGrGo/mxijjsX+MHerUbpIHBidF8LAYOEPFWA8=') + buildConfigField 'String', 'XIAOMI_PUSH_APP_ID', formatString('2882303761521925585') + buildConfigField 'String', 'XIAOMI_PUSH_APP_KEY', formatString('5692192517585') + buildConfigField 'String', 'YOUTUBE_KEY', formatString('AIzaSyDlbxag2dCc-a9ac8JTfH3nnVw41pdI-1U') + manifestPlaceholders = [ + FACEBOOK_APP_ID: "0", + TRUECALLER_KEY : "yicxl1xh6jidagslpi0h9d-uklfeinnx4a6mb6rdgyi" + ] + } + mock { + dimension "app" + applicationId "com.naviapp.dev" + buildConfigField 'String', 'ALFRED_API_KEY', formatString('oMv77fgpBg9NFGom0Psizbf7lbrdBVJz') + buildConfigField 'String', 'APPSFLYER_KEY', formatString('ua6cppJ9oQx7aPQPNyHrHA') + buildConfigField 'String', 'BASE_URL', formatString('http://localhost:2763/') + buildConfigField 'String', 'HYPERVERGE_APP_ID', formatString('2c007b') + buildConfigField 'String', 'HYPERVERGE_APP_KEY', formatString('c9b1e034f7c8961a3f5b') + buildConfigField 'String', 'MOENGAGE_KEY', formatString('2PDJ4M6TDY7ADQ5N5LU48H9Y') + buildConfigField 'String', 'SSL_PINNING_KEY', formatString('sha256/nUU7NjGrGo/mxijjsX+MHerUbpIHBidF8LAYOEPFWA8=') + buildConfigField 'String', 'XIAOMI_PUSH_APP_ID', formatString('2882303761521925585') + buildConfigField 'String', 'XIAOMI_PUSH_APP_KEY', formatString('5692192517585') + buildConfigField 'String', 'YOUTUBE_KEY', formatString('AIzaSyDlbxag2dCc-a9ac8JTfH3nnVw41pdI-1U') + manifestPlaceholders = [ + FACEBOOK_APP_ID: "0", + TRUECALLER_KEY : "yicxl1xh6jidagslpi0h9d-uklfeinnx4a6mb6rdgyi" + ] + } + prod { + dimension "app" + if (project.hasProperty('ALFRED_API_KEY') + && project.hasProperty('APPSFLYER_KEY') + && project.hasProperty('BASE_URL') + && project.hasProperty('HYPERVERGE_APP_ID') + && project.hasProperty('HYPERVERGE_APP_KEY') + && project.hasProperty('MOENGAGE_KEY') + && project.hasProperty('SSL_PINNING_KEY') + && project.hasProperty('XIAOMI_PUSH_APP_ID') + && project.hasProperty('XIAOMI_PUSH_APP_KEY') + && project.hasProperty('YOUTUBE_KEY') + && project.hasProperty('FACEBOOK_APP_ID') + && project.hasProperty('TRUECALLER_KEY') + ) { + buildConfigField 'String', 'ALFRED_API_KEY', formatString("$ALFRED_API_KEY") + buildConfigField 'String', 'APPSFLYER_KEY', formatString("$APPSFLYER_KEY") + buildConfigField 'String', 'BASE_URL', formatString("$BASE_URL") + buildConfigField 'String', 'HYPERVERGE_APP_ID', formatString("$HYPERVERGE_APP_ID") + buildConfigField 'String', 'HYPERVERGE_APP_KEY', formatString("$HYPERVERGE_APP_KEY") + buildConfigField 'String', 'MOENGAGE_KEY', formatString("$MOENGAGE_KEY") + buildConfigField 'String', 'SSL_PINNING_KEY', formatString("$SSL_PINNING_KEY") + buildConfigField 'String', 'XIAOMI_PUSH_APP_ID', formatString("$XIAOMI_PUSH_APP_ID") + buildConfigField 'String', 'XIAOMI_PUSH_APP_KEY', formatString("$XIAOMI_PUSH_APP_KEY") + buildConfigField 'String', 'YOUTUBE_KEY', formatString("$YOUTUBE_KEY") + manifestPlaceholders = [ + FACEBOOK_APP_ID: "$FACEBOOK_APP_ID", + TRUECALLER_KEY : "$TRUECALLER_KEY" + ] + } + } + } } static def formatString(String value) { @@ -264,96 +263,50 @@ publishing { dependencies { api project(":navi-payment") - implementation project(":navi-vkyc") - implementation project(":navi-chat") - implementation project(":navi-amc") - implementation project(":navi-rr") - implementation project(":navi-coin") - implementation project(":navi-gold") - implementation project(":navi-insurance") - implementation project(":navi-hl") - implementation project(":navi-ap") - implementation project(":navi-pay") - implementation project(":navi-bbps") - implementation project(":finoramic-androidx-sdk") - implementation fileTree(dir: 'libs', include: ['*.jar', '*.aar']) - - implementation libs.androidx.appcompat - implementation libs.androidx.core.ktx - implementation libs.androidx.core.splashscreen - implementation libs.androidx.constraintlayout - implementation libs.android.material - implementation libs.androidx.multidex - implementation libs.androidx.lifecycle.viewmodel.ktx - implementation libs.androidx.workRuntime.ktx - implementation libs.otaliastudios.cameraview - - implementation libs.android.installreferrer - - implementation libs.android.gms.playServicesAuth - - implementation libs.android.gms.playServicesAds - - implementation libs.androidx.fragment.ktx - - androidTestImplementation libs.androidx.test.runner - androidTestImplementation libs.androidx.test.rules - - androidTestImplementation libs.androidx.test.espresso.core - androidTestImplementation libs.androidx.test.espresso.intents - androidTestImplementation libs.androidx.test.espresso.web - androidTestImplementation(libs.androidx.test.espresso.contrib) { - exclude(group: "com.google.protobuf", module: "protobuf-lite") - } - debugImplementation libs.androidx.compose.ui.test.manifest - debugImplementation libs.androidx.compose.ui.test.junit4 - androidTestImplementation libs.coil.test - androidTestImplementation libs.hamcrest - debugImplementation libs.androidx.test.monitor - - androidTestImplementation libs.arch.core.testing - testImplementation libs.arch.core.testing - testImplementation libs.junit - androidTestImplementation libs.androidx.test.junit - testImplementation libs.mockk - - implementation libs.facebook.applinks - - implementation libs.branch - api libs.android.play.core.ktx + implementation project(":finoramic-androidx-sdk") + implementation project(":navi-amc") + implementation project(":navi-ap") + implementation project(":navi-bbps") + implementation project(":navi-chat") + implementation project(":navi-coin") + implementation project(":navi-gold") + implementation project(":navi-hl") + implementation project(":navi-insurance") + implementation project(":navi-pay") + implementation project(":navi-rr") + implementation project(":navi-vkyc") + implementation fileTree(dir: 'libs', include: ['*.jar', '*.aar']) + implementation libs.android.gms.playServicesAds + implementation libs.android.gms.playServicesAuth + implementation libs.android.gms.playServicesAuthApiPhone + implementation libs.android.installreferrer + implementation libs.android.material + implementation libs.androidx.annotation + implementation libs.androidx.appcompat + implementation libs.androidx.browser + implementation libs.androidx.constraintlayout + implementation libs.androidx.core.ktx + implementation libs.androidx.core.splashscreen + implementation libs.androidx.fragment.ktx + implementation libs.androidx.lifecycle.viewmodel.ktx + implementation libs.androidx.multidex + implementation libs.androidx.work.runtimeKtx + implementation libs.branch + implementation libs.dagger.hiltAndroid + implementation libs.facebook.applinks + implementation libs.otaliastudios.cameraview + implementation libs.otpless + implementation libs.retrofit.converter.scalars implementation libs.truecaller - implementation libs.android.support.annotations - - implementation libs.dagger.hiltAndroid - kapt libs.dagger.hiltCompiler - - androidTestImplementation libs.dagger.hiltAndroidTesting - kaptAndroidTest libs.dagger.hiltCompiler - - testImplementation libs.dagger.hiltAndroidTesting - kaptTest libs.dagger.hiltCompiler - - testImplementation libs.restAssured - testImplementation libs.awaitility - - implementation libs.androidx.browser - - implementation libs.android.gms.playServicesAuthApiPhone - - implementation libs.retrofit.converter.scalars - - implementation libs.otpless - - ksp libs.androidx.room.compiler - - debugImplementation libs.okhttp.mockwebserver - - debugImplementation libs.hyperion.core + debugImplementation libs.androidx.compose.ui.test.junit4 + debugImplementation libs.androidx.compose.ui.test.manifest + debugImplementation libs.androidx.test.monitor debugImplementation libs.hyperion.attr debugImplementation libs.hyperion.buildConfig + debugImplementation libs.hyperion.core debugImplementation libs.hyperion.crash debugImplementation libs.hyperion.disk debugImplementation libs.hyperion.geigerCounter @@ -361,7 +314,42 @@ dependencies { debugImplementation libs.hyperion.phoenix debugImplementation libs.hyperion.recorder debugImplementation libs.hyperion.sharedPreferences - debugImplementation libs.hyperion.timber debugImplementation libs.hyperion.simpleItem + debugImplementation libs.hyperion.timber + debugImplementation libs.okhttp.mockwebserver + releaseImplementation libs.hyperion.coreNoOp + + androidTestImplementation libs.androidx.arch.core.testing + androidTestImplementation(libs.androidx.test.espresso.contrib) { + exclude(group: "com.google.protobuf", module: "protobuf-lite") + } + androidTestImplementation libs.androidx.test.espresso.core + androidTestImplementation libs.androidx.test.espresso.intents + androidTestImplementation libs.androidx.test.espresso.web + androidTestImplementation libs.androidx.test.junit + androidTestImplementation libs.androidx.test.rules + androidTestImplementation libs.androidx.test.runner + androidTestImplementation libs.coil.test + androidTestImplementation libs.dagger.hiltAndroidTesting + androidTestImplementation libs.hamcrest + + testImplementation libs.androidx.arch.core.testing + testImplementation libs.awaitility + testImplementation libs.dagger.hiltAndroidTesting + testImplementation libs.junit + testImplementation libs.mockk + testImplementation libs.restAssured + + kapt libs.dagger.hiltCompiler + + kaptAndroidTest libs.dagger.hiltCompiler + + kaptTest libs.dagger.hiltCompiler + + ksp libs.androidx.room.compiler +} + +kapt { + correctErrorTypes true } diff --git a/application-platform/app/build.gradle b/application-platform/app/build.gradle index ff642a83f9..75c5ac6d5b 100644 --- a/application-platform/app/build.gradle +++ b/application-platform/app/build.gradle @@ -1,10 +1,10 @@ plugins { alias libs.plugins.android.application + alias libs.plugins.firebase.crashlytics + alias libs.plugins.google.services + alias libs.plugins.hilt.android alias libs.plugins.kotlin.android alias libs.plugins.kotlin.kapt - alias libs.plugins.hilt.android - alias libs.plugins.google.services - alias libs.plugins.firebase.crashlytics } android { @@ -24,6 +24,10 @@ android { } } + buildFeatures { + compose true + dataBinding true + } buildTypes { release { minifyEnabled false @@ -31,19 +35,15 @@ android { } } compileOptions { - sourceCompatibility JavaVersion.VERSION_1_8 - targetCompatibility JavaVersion.VERSION_1_8 - } - kotlinOptions { - jvmTarget = '1.8' - } - buildFeatures { - compose true - dataBinding true + sourceCompatibility JavaVersion.VERSION_17 + targetCompatibility JavaVersion.VERSION_17 } composeOptions { kotlinCompilerExtensionVersion libs.versions.compose.lib.get() } + kotlinOptions { + jvmTarget = '17' + } packaging { resources { excludes += '/META-INF/{AL2.0,LGPL2.1}' @@ -54,25 +54,27 @@ android { dependencies { implementation project(":navi-ap") implementation project(":navi-common") - implementation libs.androidx.multidex - implementation 'androidx.core:core-ktx:1.9.0' - implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.6.1' - implementation 'androidx.activity:activity-compose:1.7.2' - implementation platform('androidx.compose:compose-bom:2023.03.00') - implementation 'androidx.compose.ui:ui' - implementation 'androidx.compose.ui:ui-graphics' - implementation 'androidx.compose.ui:ui-tooling-preview' - implementation 'androidx.compose.material3:material3' - - implementation libs.dagger.hiltAndroid + implementation platform(libs.androidx.compose.bom) + implementation libs.androidx.activity.compose + implementation libs.androidx.compose.material3 + implementation libs.androidx.compose.ui.graphics + implementation libs.androidx.compose.ui.toolingPreview + implementation libs.androidx.compose.ui.ui + implementation libs.androidx.core.ktx implementation libs.androidx.hilt.compiler - kapt libs.dagger.hiltAndroidCompiler + implementation libs.androidx.lifecycle.runtime.ktx + implementation libs.androidx.multidex + implementation libs.dagger.hiltAndroid - testImplementation 'junit:junit:4.13.2' - androidTestImplementation 'androidx.test.ext:junit:1.1.5' - androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1' - androidTestImplementation platform('androidx.compose:compose-bom:2023.03.00') - androidTestImplementation 'androidx.compose.ui:ui-test-junit4' - debugImplementation 'androidx.compose.ui:ui-tooling' - debugImplementation 'androidx.compose.ui:ui-test-manifest' + debugImplementation libs.androidx.compose.ui.test.manifest + debugImplementation libs.androidx.compose.ui.tooling + + androidTestImplementation platform(libs.androidx.compose.bom) + androidTestImplementation libs.androidx.compose.ui.test.junit4 + androidTestImplementation libs.androidx.test.espresso.core + androidTestImplementation libs.androidx.test.junit + + testImplementation libs.junit + + kapt libs.dagger.hiltAndroidCompiler } diff --git a/application-platform/build.gradle b/application-platform/build.gradle index 822dc80f45..2e915bce8e 100644 --- a/application-platform/build.gradle +++ b/application-platform/build.gradle @@ -1,17 +1,15 @@ -// Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { dependencies { classpath libs.juspay.hypersdk.plugin } } -plugins { +plugins { alias libs.plugins.android.application apply false - alias libs.plugins.kotlin.android apply false alias libs.plugins.android.library apply false alias libs.plugins.hilt.android apply false + alias libs.plugins.kotlin.android apply false alias libs.plugins.kotlin.kapt apply false alias libs.plugins.kotlin.parcelize apply false alias libs.plugins.ksp apply false - } diff --git a/application-platform/navi-ap/build.gradle b/application-platform/navi-ap/build.gradle index 3fdb5a85ba..7aaad04990 100644 --- a/application-platform/navi-ap/build.gradle +++ b/application-platform/navi-ap/build.gradle @@ -14,67 +14,54 @@ android { defaultConfig { minSdk 21 targetSdk 33 - testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + consumerProguardFiles "consumer-rules.pro" + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } + buildFeatures { + buildConfig true + compose true + } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } - buildFeatures { - buildConfig true - compose true - } compileOptions { sourceCompatibility JavaVersion.VERSION_17 targetCompatibility JavaVersion.VERSION_17 } - kotlinOptions { - jvmTarget = '17' - freeCompilerArgs += ["-Xstring-concat=inline"] - } composeOptions { kotlinCompilerExtensionVersion libs.versions.compose.lib.get() } - libraryVariants.configureEach { variant -> - variant.addJavaSourceFoldersToModel( - new File(buildDir, "generated/ksp/${variant.name}/kotlin") - ) + kotlinOptions { + freeCompilerArgs += ["-Xstring-concat=inline"] + jvmTarget = '17' } } dependencies { - implementation project(":navi-payment") implementation project(":finoramic-androidx-sdk") - + implementation project(":navi-payment") + implementation libs.accompanist.systemuicontroller + implementation libs.android.material implementation libs.androidx.appcompat implementation libs.androidx.core.ktx implementation libs.androidx.hilt.compiler - - implementation libs.android.material - implementation libs.dagger.hiltAndroid - implementation libs.jayway.jsonPath - implementation libs.raamcosta.composeDestinations.animation.core - kapt libs.dagger.hiltAndroidCompiler - - ksp libs.raamcosta.composeDestinations.ksp - androidTestImplementation libs.androidx.test.espresso.core androidTestImplementation libs.androidx.test.junit testImplementation libs.junit - testImplementation libs.kotlinx.coroutines.test - testImplementation libs.mockk - implementation libs.accompanist.systemuicontroller + kapt libs.dagger.hiltAndroidCompiler + ksp libs.raamcosta.composeDestinations.ksp } diff --git a/build.gradle b/build.gradle index 3377e456b9..3c713ebb8c 100644 --- a/build.gradle +++ b/build.gradle @@ -8,15 +8,15 @@ plugins { alias libs.plugins.android.application apply false alias libs.plugins.android.dynamic.feature apply false alias libs.plugins.android.library apply false - alias libs.plugins.google.services apply false alias libs.plugins.firebase.crashlytics apply false alias libs.plugins.firebase.perf apply false + alias libs.plugins.google.services apply false alias libs.plugins.hilt.android apply false alias libs.plugins.kotlin.android apply false alias libs.plugins.kotlin.kapt apply false alias libs.plugins.kotlin.parcelize apply false - alias libs.plugins.navigation apply false alias libs.plugins.ksp apply false + alias libs.plugins.navigation apply false alias libs.plugins.spotless } diff --git a/gradle.properties b/gradle.properties index 4350ffaa96..bfa05ffc88 100644 --- a/gradle.properties +++ b/gradle.properties @@ -6,7 +6,7 @@ # http://www.gradle.org/docs/current/userguide/build_environment.html # Specifies the JVM arguments used for the daemon process. # The setting is particularly useful for tweaking memory settings. -org.gradle.jvmargs=-Xmx6g +org.gradle.jvmargs=-Xmx6g -XX:+UseParallelGC kotlin.daemon.jvmargs=-Xmx8g # When configured, Gradle will run in incubating parallel mode. # This option should only be used with decoupled projects. More details, visit diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 135f9c2e2d..4a9dd1e4f5 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -13,9 +13,11 @@ android-installreferrer = "2.2" android-material = "1.9.0" android-places = "2.6.0" android-play-core-ktx = "1.8.1" -android-supportAnnotations = "28.0.0" androidGradlePlugin = "8.2.2" +androidx-activityCompose = "1.8.2" +androidx-annotation = "1.7.1" androidx-appcompat = "1.6.1" +androidx-arch-core-testing = "2.2.0" androidx-browser = "1.3.0" androidx-camera = "1.3.0-beta01" androidx-constraintlayout = "2.1.4" @@ -39,11 +41,9 @@ androidx-test-junit = "1.1.5" androidx-test-monitor = "1.6.1" androidx-test-rules = "1.5.0" androidx-test-runner = "1.5.0" -androidx-workRuntimeKtx = "2.8.1" +androidx-work-runtimeKtx = "2.8.1" anrwatchdog = "1.4.0" appsflyer = "6.12.5" -arch-coreTesting = "1.1.1" -arch-workRuntimeKtx = "1.0.1" awaitility = "4.1.0" branch = "5.1.1" cashfree = "2.0.6" @@ -67,7 +67,7 @@ hamcrest = "2.2" hilt = "2.48" hms = "2.7.1" hyperion = "0.9.37" -hyperionSimpleItem = "0.5.0" +hyperionSimpleItem = "0.6.0" jakewharton-timber = "5.0.1" jodaMoney = "1.0.4" jodaTime = "2.12.6" @@ -138,10 +138,14 @@ android-places = { module = "com.google.android.libraries.places:places", versio android-play-core-ktx = { module = "com.google.android.play:core-ktx", version.ref = "android-play-core-ktx" } -android-support-annotations = { module = "com.android.support:support-annotations", version.ref = "android-supportAnnotations" } +androidx-activity-compose = { module = "androidx.activity:activity-compose", version.ref = "androidx-activityCompose" } + +androidx-annotation = { module = "androidx.annotation:annotation", version.ref = "androidx-annotation" } androidx-appcompat = { module = "androidx.appcompat:appcompat", version.ref = "androidx-appcompat" } +androidx-arch-core-testing = { module = "androidx.arch.core:core-testing", version.ref = "androidx-arch-core-testing" } + androidx-browser = { module = "androidx.browser:browser", version.ref = "androidx-browser" } androidx-camera-camera2 = { module = "androidx.camera:camera-camera2", version.ref = "androidx-camera" } @@ -154,8 +158,12 @@ androidx-compose-bom = { module = "androidx.compose:compose-bom", version.ref = androidx-compose-foundation = { module = "androidx.compose.foundation:foundation" } androidx-compose-material = { module = "androidx.compose.material:material" } androidx-compose-material3 = { module = "androidx.compose.material3:material3" } +androidx-compose-ui-graphics = { module = "androidx.compose.ui:ui-graphics" } androidx-compose-ui-test-junit4 = { module = "androidx.compose.ui:ui-test-junit4" } androidx-compose-ui-test-manifest = { module = "androidx.compose.ui:ui-test-manifest" } +androidx-compose-ui-tooling = { module = "androidx.compose.ui:ui-tooling" } +androidx-compose-ui-toolingPreview = { module = "androidx.compose.ui:ui-tooling-preview" } +androidx-compose-ui-ui = { module = "androidx.compose.ui:ui" } androidx-compose-ui-util = { module = "androidx.compose.ui:ui-util" } androidx-constraintlayout = { module = "androidx.constraintlayout:constraintlayout", version.ref = "androidx-constraintlayout" } @@ -207,15 +215,12 @@ androidx-test-monitor = { module = "androidx.test:monitor", version.ref = "andro androidx-test-rules = { module = "androidx.test:rules", version.ref = "androidx-test-rules" } androidx-test-runner = { module = "androidx.test:runner", version.ref = "androidx-test-runner" } -androidx-workRuntime-ktx = { module = "androidx.work:work-runtime-ktx", version.ref = "androidx-workRuntimeKtx" } +androidx-work-runtimeKtx = { module = "androidx.work:work-runtime-ktx", version.ref = "androidx-work-runtimeKtx" } anrwatchdog = { module = "com.github.anrwatchdog:anrwatchdog", version.ref = "anrwatchdog" } appsflyer = { module = "com.appsflyer:af-android-sdk", version.ref = "appsflyer" } -arch-core-testing = { module = "android.arch.core:core-testing", version.ref = "arch-coreTesting" } -arch-work-runtime-ktx = { module = "android.arch.work:work-runtime-ktx", version.ref = "arch-workRuntimeKtx" } - awaitility = { module = "org.awaitility:awaitility", version.ref = "awaitility" } branch = { module = "io.branch.sdk.android:library", version.ref = "branch" } diff --git a/navi-amc/build.gradle b/navi-amc/build.gradle index a22be26784..6eceae4d6e 100644 --- a/navi-amc/build.gradle +++ b/navi-amc/build.gradle @@ -15,34 +15,34 @@ android { minSdk 21 targetSdk 33 + consumerProguardFiles "consumer-rules.pro" multiDexEnabled true testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" - consumerProguardFiles "consumer-rules.pro" } - buildTypes { - release { - minifyEnabled true - proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - } - } buildFeatures { buildConfig true compose true dataBinding true viewBinding true } + buildTypes { + release { + minifyEnabled true + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + } + } compileOptions { + incremental true sourceCompatibility JavaVersion.VERSION_17 targetCompatibility JavaVersion.VERSION_17 - incremental true } composeOptions { kotlinCompilerExtensionVersion libs.versions.compose.lib.get() } kotlinOptions { - jvmTarget = '17' freeCompilerArgs += ["-Xstring-concat=inline"] + jvmTarget = '17' } packagingOptions { resources { @@ -53,28 +53,25 @@ android { dependencies { implementation project(":navi-payment") - implementation libs.androidx.appcompat implementation libs.androidx.constraintlayout implementation libs.androidx.core.ktx implementation libs.androidx.fragment.ktx - implementation libs.dagger.hiltAndroid - implementation libs.philjay.mpAndroidChart - kapt libs.dagger.hiltCompiler - - kaptAndroidTest libs.dagger.hiltCompiler - - kaptTest libs.dagger.hiltCompiler - androidTestImplementation libs.androidx.test.espresso.core androidTestImplementation libs.androidx.test.junit androidTestImplementation libs.dagger.hiltAndroidTesting testImplementation libs.dagger.hiltAndroidTesting testImplementation libs.junit + + kapt libs.dagger.hiltCompiler + + kaptAndroidTest libs.dagger.hiltCompiler + + kaptTest libs.dagger.hiltCompiler } kapt { diff --git a/navi-analytics/build.gradle b/navi-analytics/build.gradle index 5737bf03ca..31ce75bd6a 100644 --- a/navi-analytics/build.gradle +++ b/navi-analytics/build.gradle @@ -12,47 +12,31 @@ android { minSdk 21 targetSdk 33 - testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" consumerProguardFiles "consumer-rules.pro" + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } + buildFeatures { + buildConfig true + } buildTypes { release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } - buildFeatures { - buildConfig true - } compileOptions { + incremental true sourceCompatibility JavaVersion.VERSION_17 targetCompatibility JavaVersion.VERSION_17 - incremental true } kotlinOptions { - jvmTarget = '17' freeCompilerArgs += ["-Xstring-concat=inline"] + jvmTarget = '17' } } dependencies { - implementation project(":navi-base") - implementation project(":pulse") - - implementation libs.androidx.core.ktx - implementation libs.androidx.room.ktx - implementation libs.androidx.room.runtime - implementation libs.androidx.workRuntime.ktx - - implementation libs.appsflyer - - implementation libs.moengage.inapp - implementation libs.moengage.rich.notification - - debugImplementation libs.chucker.library - releaseImplementation libs.chucker.libraryNoOp - api libs.firebase.auth api libs.firebase.config api libs.firebase.crashlytics @@ -61,13 +45,25 @@ dependencies { api libs.firebase.firestore api libs.firebase.messaging api libs.firebase.perf - api libs.moengage.android.sdk api libs.moengage.push.amp.plus - api libs.navi.alfred - ksp libs.androidx.room.compiler + implementation project(":navi-base") + implementation project(":pulse") + implementation libs.androidx.core.ktx + implementation libs.androidx.room.ktx + implementation libs.androidx.room.runtime + implementation libs.androidx.work.runtimeKtx + implementation libs.appsflyer + implementation libs.moengage.inapp + implementation libs.moengage.rich.notification + + debugImplementation libs.chucker.library + + releaseImplementation libs.chucker.libraryNoOp testImplementation libs.androidx.room.testing + + ksp libs.androidx.room.compiler } diff --git a/navi-base/build.gradle b/navi-base/build.gradle index 1d3fdcad35..f3fbd9c07c 100644 --- a/navi-base/build.gradle +++ b/navi-base/build.gradle @@ -15,78 +15,67 @@ android { minSdk 21 targetSdk 33 - testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" consumerProguardFiles "consumer-rules.pro" externalNativeBuild { cmake { cppFlags '' } } + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } + buildFeatures { + buildConfig true + } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } - buildFeatures { - buildConfig true - } compileOptions { sourceCompatibility JavaVersion.VERSION_17 targetCompatibility JavaVersion.VERSION_17 } - kotlinOptions { - jvmTarget = '17' - freeCompilerArgs += ["-Xstring-concat=inline"] - } externalNativeBuild { cmake { path file('src/main/cpp/CMakeLists.txt') version '3.22.1' } } + kotlinOptions { + freeCompilerArgs += ["-Xstring-concat=inline"] + jvmTarget = '17' + } } dependencies { api platform(libs.firebase.bom) api platform(libs.okhttp.bom) - - implementation libs.android.play.core.ktx - - implementation libs.androidx.room.ktx - implementation libs.androidx.room.runtime - implementation libs.androidx.security.crypto.ktx - - implementation libs.dagger.hiltAndroid - - implementation libs.joda.time - - api libs.navi.guarddog - api libs.firebase.analytics api libs.firebase.firestore - api libs.gson - api libs.jakewharton.timber - + api libs.navi.guarddog api libs.okhttp.brotli api libs.okhttp.loggingIntercepter - kapt libs.androidx.hilt.compiler - - kapt libs.dagger.hiltAndroidCompiler - - ksp libs.androidx.room.compiler + implementation libs.android.play.core.ktx + implementation libs.androidx.room.ktx + implementation libs.androidx.room.runtime + implementation libs.androidx.security.crypto.ktx + implementation libs.dagger.hiltAndroid + implementation libs.joda.time androidTestImplementation libs.androidx.test.espresso.core androidTestImplementation libs.androidx.test.junit testImplementation libs.junit - testImplementation libs.kotlinx.coroutines.test - testImplementation libs.mockk + + kapt libs.androidx.hilt.compiler + kapt libs.dagger.hiltAndroidCompiler + + ksp libs.androidx.room.compiler } diff --git a/navi-bbps/build.gradle b/navi-bbps/build.gradle index db9d07812e..3f6547af2c 100644 --- a/navi-bbps/build.gradle +++ b/navi-bbps/build.gradle @@ -15,54 +15,46 @@ android { minSdk 21 targetSdk 33 - testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" consumerProguardFiles "consumer-rules.pro" + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } - buildTypes { - release { - minifyEnabled true - proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - } - } buildFeatures { buildConfig true compose true dataBinding true viewBinding true } + buildTypes { + release { + minifyEnabled true + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + } + } compileOptions { sourceCompatibility JavaVersion.VERSION_17 targetCompatibility JavaVersion.VERSION_17 } - kotlinOptions { - jvmTarget = '17' - freeCompilerArgs += ["-Xstring-concat=inline"] - } composeOptions { kotlinCompilerExtensionVersion libs.versions.compose.lib.get() } + kotlinOptions { + freeCompilerArgs += ["-Xstring-concat=inline"] + jvmTarget = '17' + } lint { disable 'NullSafeMutableLiveData' } - libraryVariants.configureEach { variant -> - variant.addJavaSourceFoldersToModel( - new File(buildDir, "generated/ksp/${variant.name}/kotlin") - ) - } } dependencies { implementation project(":navi-common") - implementation libs.accompanist.pager implementation libs.accompanist.pagerIndicators implementation libs.accompanist.permissions implementation libs.accompanist.systemuicontroller - implementation libs.android.material implementation libs.android.play.core.ktx - implementation libs.androidx.appcompat implementation libs.androidx.camera.mlkit.vision implementation libs.androidx.compose.material3 @@ -72,22 +64,18 @@ dependencies { implementation libs.androidx.lifecycle.viewmodel.ktx implementation libs.androidx.paging.compose implementation libs.androidx.room.paging - implementation libs.dagger.hiltAndroid - implementation libs.raamcosta.composeDestinations.animation.core - kapt libs.androidx.hilt.compiler - - kapt libs.dagger.hiltAndroidCompiler - - ksp libs.androidx.room.compiler - - ksp libs.raamcosta.composeDestinations.ksp - androidTestImplementation libs.androidx.test.junit testImplementation libs.junit testImplementation libs.kotlinx.coroutines.test testImplementation libs.mockk + + kapt libs.androidx.hilt.compiler + kapt libs.dagger.hiltAndroidCompiler + + ksp libs.androidx.room.compiler + ksp libs.raamcosta.composeDestinations.ksp } diff --git a/navi-chat/build.gradle b/navi-chat/build.gradle index 84c8197377..555b74b7d2 100644 --- a/navi-chat/build.gradle +++ b/navi-chat/build.gradle @@ -15,38 +15,38 @@ android { minSdk 21 targetSdk 33 - testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" consumerProguardFiles "consumer-rules.pro" + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } + buildFeatures { + buildConfig true + compose true + dataBinding true + } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } - buildFeatures { - buildConfig true - compose true - dataBinding true - } compileOptions { + incremental true sourceCompatibility JavaVersion.VERSION_17 targetCompatibility JavaVersion.VERSION_17 - incremental true } composeOptions { kotlinCompilerExtensionVersion libs.versions.compose.lib.get() } kotlinOptions { - jvmTarget = '17' freeCompilerArgs += ["-Xstring-concat=inline"] + jvmTarget = '17' } } dependencies { implementation project(':navi-common') - + implementation libs.android.material implementation libs.androidx.appcompat implementation libs.androidx.constraintlayout implementation libs.androidx.core.ktx @@ -55,19 +55,15 @@ dependencies { implementation libs.androidx.legacy.support.v4 implementation libs.androidx.lifecycle.runtime.compose implementation libs.androidx.paging.compose - - implementation libs.android.material - implementation libs.coil.video - implementation libs.dagger.hiltAndroid - kapt libs.dagger.hiltCompiler - - ksp libs.androidx.room.compiler - androidTestImplementation libs.androidx.test.espresso.core androidTestImplementation libs.androidx.test.junit testImplementation libs.junit + + kapt libs.dagger.hiltCompiler + + ksp libs.androidx.room.compiler } diff --git a/navi-coin/build.gradle b/navi-coin/build.gradle index bc91c5c135..6ae83c7067 100644 --- a/navi-coin/build.gradle +++ b/navi-coin/build.gradle @@ -1,7 +1,7 @@ plugins { alias libs.plugins.android.library - alias libs.plugins.kotlin.android alias libs.plugins.hilt.android + alias libs.plugins.kotlin.android alias libs.plugins.kotlin.kapt alias libs.plugins.kotlin.parcelize alias libs.plugins.ksp @@ -15,70 +15,61 @@ android { minSdk 21 targetSdk 33 + consumerProguardFiles "consumer-rules.pro" multiDexEnabled true testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" - consumerProguardFiles "consumer-rules.pro" } + buildFeatures { + buildConfig true + compose true + } buildTypes { release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } - buildFeatures { - buildConfig true - compose true - } compileOptions { sourceCompatibility JavaVersion.VERSION_17 targetCompatibility JavaVersion.VERSION_17 } - kotlinOptions { - jvmTarget = '17' - freeCompilerArgs += ["-Xstring-concat=inline"] - } composeOptions { kotlinCompilerExtensionVersion libs.versions.compose.lib.get() } + kotlinOptions { + freeCompilerArgs += ["-Xstring-concat=inline"] + jvmTarget = '17' + } lint { disable 'NullSafeMutableLiveData' } - libraryVariants.configureEach { variant -> - variant.addJavaSourceFoldersToModel( - new File(buildDir, "generated/ksp/${variant.name}/kotlin") - ) - } } dependencies { + api libs.lottie + implementation project(":navi-common") - implementation libs.accompanist.systemuicontroller - + implementation libs.android.material implementation libs.androidx.appcompat implementation libs.androidx.core.ktx implementation libs.androidx.fragment.ktx implementation libs.androidx.lifecycle.runtime.compose implementation libs.androidx.paging.compose - - implementation libs.android.material - implementation libs.dagger.hiltAndroid - implementation libs.raamcosta.composeDestinations.animation.core - api libs.lottie + androidTestImplementation libs.androidx.arch.core.testing + androidTestImplementation libs.androidx.test.espresso.core + androidTestImplementation libs.androidx.test.junit + + testImplementation libs.androidx.arch.core.testing + testImplementation libs.junit + testImplementation libs.kotlinx.coroutines.test + testImplementation libs.mockk kapt libs.dagger.hiltCompiler ksp libs.raamcosta.composeDestinations.ksp - - androidTestImplementation libs.androidx.test.espresso.core - androidTestImplementation libs.androidx.test.junit - androidTestImplementation libs.arch.core.testing - testImplementation libs.junit - testImplementation libs.kotlinx.coroutines.test - testImplementation libs.arch.core.testing - testImplementation libs.mockk } diff --git a/navi-common/build.gradle b/navi-common/build.gradle index bfd1835e42..5096b65d6d 100644 --- a/navi-common/build.gradle +++ b/navi-common/build.gradle @@ -16,33 +16,33 @@ android { minSdk 21 targetSdk 33 - testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" - consumerProguardFiles "consumer-rules.pro" buildConfigField 'String', 'YOUTUBE_KEY', formatString('AIzaSyDlbxag2dCc-a9ac8JTfH3nnVw41pdI-1U') + consumerProguardFiles "consumer-rules.pro" + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } + buildFeatures { + buildConfig true + compose true + dataBinding true + } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } - buildFeatures { - buildConfig true - compose true - dataBinding true - } compileOptions { + incremental true sourceCompatibility JavaVersion.VERSION_17 targetCompatibility JavaVersion.VERSION_17 - incremental true } composeOptions { kotlinCompilerExtensionVersion libs.versions.compose.lib.get() } kotlinOptions { - jvmTarget = '17' freeCompilerArgs += ["-Xstring-concat=inline"] + jvmTarget = '17' } lint { disable 'NullSafeMutableLiveData' @@ -56,54 +56,26 @@ static def formatString(String value) { dependencies { api project(":navi-widgets") api project(":one-money-sdk") - - implementation libs.androidx.appcompat - implementation libs.androidx.core.ktx - implementation libs.androidx.constraintlayout - implementation libs.androidx.preference.ktx - implementation libs.androidx.navigation.fragment.ktx - implementation libs.androidx.navigation.ui.ktx - - implementation libs.android.material - implementation libs.android.play.core.ktx - - implementation libs.dagger.hiltAndroid - implementation libs.dagger.hiltAndroidTesting - - implementation libs.juspay.googlePayClientApi - - implementation libs.pierfrancescosoffritti.androidyoutubeplayer - - api libs.androidx.camera.core + api libs.android.gms.playServicesLocation api libs.androidx.camera.camera2 + api libs.androidx.camera.core api libs.androidx.camera.lifecycle api libs.androidx.camera.view api libs.androidx.lifecycle.runtime.compose api libs.androidx.room.runtime api libs.androidx.room.ktx - - api libs.android.gms.playServicesLocation - api libs.anrwatchdog - api libs.delight.advancedWebView - api libs.digio.gateway.common - api libs.digio.gateway.kyc api libs.digio.gateway.esign - + api libs.digio.gateway.kyc api libs.digitap - api libs.finarkein - api libs.joda.time api libs.joda.money - api libs.kotlinx.coroutines.android api libs.kotlinx.coroutines.core - api libs.visit - api('co.hyperverge:hypersnapsdk:4.15.0@aar', { transitive = true exclude group: 'com.google.android.gms' @@ -114,19 +86,32 @@ dependencies { exclude group: 'co.hyperverge', module: 'face-detection-preview' }) + implementation libs.android.material + implementation libs.android.play.core.ktx + implementation libs.androidx.appcompat + implementation libs.androidx.constraintlayout + implementation libs.androidx.core.ktx + implementation libs.androidx.preference.ktx + implementation libs.androidx.navigation.fragment.ktx + implementation libs.androidx.navigation.ui.ktx + implementation libs.dagger.hiltAndroid + implementation libs.dagger.hiltAndroidTesting + implementation libs.juspay.googlePayClientApi + implementation libs.pierfrancescosoffritti.androidyoutubeplayer + debugApi libs.chucker.library + releaseApi libs.chucker.libraryNoOp - kapt libs.dagger.hiltCompiler - - ksp libs.androidx.room.compiler - androidTestImplementation libs.androidx.test.espresso.core androidTestImplementation libs.androidx.test.junit testImplementation libs.junit - testImplementation libs.mockk + + kapt libs.dagger.hiltCompiler + + ksp libs.androidx.room.compiler } hyperSdkPlugin { diff --git a/navi-design/build.gradle b/navi-design/build.gradle index a33b97df57..f2facc697e 100644 --- a/navi-design/build.gradle +++ b/navi-design/build.gradle @@ -14,68 +14,57 @@ android { minSdk 21 targetSdk 33 - testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" consumerProguardFiles "consumer-rules.pro" + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } + buildFeatures { + compose true + dataBinding true + } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } - buildFeatures { - compose true - dataBinding true - } compileOptions { + incremental true sourceCompatibility JavaVersion.VERSION_17 targetCompatibility JavaVersion.VERSION_17 - incremental true } composeOptions { kotlinCompilerExtensionVersion libs.versions.compose.lib.get() } kotlinOptions { - jvmTarget = '17' freeCompilerArgs += ["-Xstring-concat=inline"] + jvmTarget = '17' } } dependencies { api project(":navi-base") - api platform(libs.androidx.compose.bom) - - implementation libs.accompanist.systemuicontroller - - implementation libs.androidx.appcompat - implementation libs.androidx.lifecycle.runtime.ktx - - implementation libs.android.material - - api libs.androidx.core.ktx - api libs.androidx.compose.foundation api libs.androidx.compose.material api libs.androidx.compose.material3 - api libs.androidx.constraintlayoutCompose - + api libs.androidx.core.ktx + api libs.coil.compose api libs.facebook.shimmer - api libs.glide.glide - api libs.lottie - api libs.coil.compose - - ksp libs.glide.ksp + implementation libs.accompanist.systemuicontroller + implementation libs.android.material + implementation libs.androidx.appcompat + implementation libs.androidx.lifecycle.runtime.ktx androidTestImplementation libs.androidx.test.espresso.core androidTestImplementation libs.androidx.test.junit testImplementation libs.junit - testImplementation libs.mockk + + ksp libs.glide.ksp } diff --git a/navi-gold/build.gradle b/navi-gold/build.gradle index 92eee177dc..95d110ad34 100644 --- a/navi-gold/build.gradle +++ b/navi-gold/build.gradle @@ -15,34 +15,34 @@ android { minSdk 21 targetSdk 33 + consumerProguardFiles "consumer-rules.pro" multiDexEnabled true testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" - consumerProguardFiles "consumer-rules.pro" } - buildTypes { - release { - minifyEnabled true - proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - } - } buildFeatures { buildConfig true compose true dataBinding true viewBinding true } + buildTypes { + release { + minifyEnabled true + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + } + } compileOptions { + incremental true sourceCompatibility JavaVersion.VERSION_17 targetCompatibility JavaVersion.VERSION_17 - incremental true } composeOptions { kotlinCompilerExtensionVersion libs.versions.compose.lib.get() } kotlinOptions { - jvmTarget = '17' freeCompilerArgs += ["-Xstring-concat=inline"] + jvmTarget = '17' } packagingOptions { resources { @@ -54,19 +54,15 @@ android { dependencies { implementation project(":navi-chat") implementation project(":navi-payment") - implementation libs.androidx.appcompat - implementation libs.androidx.core.ktx implementation libs.androidx.constraintlayout + implementation libs.androidx.core.ktx implementation libs.androidx.fragment.ktx implementation libs.androidx.lifecycle.livedata.ktx implementation libs.androidx.lifecycle.viewmodel.ktx implementation libs.androidx.multidex - implementation libs.dagger.hiltAndroid - implementation libs.philjay.mpAndroidChart - implementation libs.retrofit.converter.gson implementation libs.retrofit.retrofit diff --git a/navi-hl/build.gradle b/navi-hl/build.gradle index a9871961ae..2f1f74cc08 100644 --- a/navi-hl/build.gradle +++ b/navi-hl/build.gradle @@ -15,33 +15,33 @@ android { minSdk 21 targetSdk 33 + consumerProguardFiles "consumer-rules.pro" multiDexEnabled true testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" - consumerProguardFiles "consumer-rules.pro" } - buildTypes { - release { - minifyEnabled true - proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - } - } buildFeatures { buildConfig true compose true dataBinding true viewBinding true } - composeOptions { - kotlinCompilerExtensionVersion libs.versions.compose.lib.get() + buildTypes { + release { + minifyEnabled true + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + } } compileOptions { sourceCompatibility JavaVersion.VERSION_17 targetCompatibility JavaVersion.VERSION_17 } + composeOptions { + kotlinCompilerExtensionVersion libs.versions.compose.lib.get() + } kotlinOptions { - jvmTarget = '17' freeCompilerArgs += ["-Xstring-concat=inline"] + jvmTarget = '17' } packagingOptions { resources { @@ -52,14 +52,12 @@ android { dependencies { implementation project(":navi-common") - implementation libs.androidx.constraintlayout implementation libs.androidx.legacy.support.v4 implementation libs.androidx.multidex - + implementation libs.dagger.hiltAndroid implementation libs.retrofit.converter.gson - implementation libs.dagger.hiltAndroid kapt libs.dagger.hiltCompiler } diff --git a/navi-insurance/build.gradle b/navi-insurance/build.gradle index d23d796ac4..2a1a1843ca 100644 --- a/navi-insurance/build.gradle +++ b/navi-insurance/build.gradle @@ -15,64 +15,57 @@ android { minSdk 21 targetSdk 33 + consumerProguardFiles "consumer-rules.pro" multiDexEnabled true testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" - consumerProguardFiles "consumer-rules.pro" } + buildFeatures { + buildConfig true + compose true + dataBinding true + } buildTypes { release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } - buildFeatures { - buildConfig true - compose true - dataBinding true - } compileOptions { + incremental true sourceCompatibility JavaVersion.VERSION_17 targetCompatibility JavaVersion.VERSION_17 - incremental true } composeOptions { kotlinCompilerExtensionVersion libs.versions.compose.lib.get() } kotlinOptions { - jvmTarget = '17' freeCompilerArgs += ["-Xstring-concat=inline"] - } - libraryVariants.configureEach { variant -> - kotlin.sourceSets { - getByName(variant.name) { - kotlin.srcDir("build/generated/ksp/${variant.name}/kotlin") - } - } + jvmTarget = '17' } flavorDimensions = ["app"] productFlavors { + dev { + dimension "app" + buildConfigField 'String', 'GI_RAZORPAY_KEY', formatString('rzp_test_vBmFshr0H06Hoe') + buildConfigField 'String', 'GOOGLE_MAPS_KEY', formatString('AIzaSyD-7-YhOAzX4VJfVLsHUz8KEn-1MGJq46o') + manifestPlaceholders = [ + GOOGLE_MAPS_KEY: "AIzaSyD-7-YhOAzX4VJfVLsHUz8KEn-1MGJq46o" + ] + } qa { isDefault true dimension "app" buildConfigField 'String', 'GI_RAZORPAY_KEY', formatString('rzp_test_vBmFshr0H06Hoe') - buildConfigField 'String', 'GOOGLE_MAPS_KEY', formatString("AIzaSyD-7-YhOAzX4VJfVLsHUz8KEn-1MGJq46o") + buildConfigField 'String', 'GOOGLE_MAPS_KEY', formatString('AIzaSyD-7-YhOAzX4VJfVLsHUz8KEn-1MGJq46o') manifestPlaceholders = [ GOOGLE_MAPS_KEY: "AIzaSyD-7-YhOAzX4VJfVLsHUz8KEn-1MGJq46o" ] } - uitest { + mock { dimension "app" buildConfigField 'String', 'GI_RAZORPAY_KEY', formatString('rzp_test_vBmFshr0H06Hoe') - buildConfigField 'String', 'GOOGLE_MAPS_KEY', formatString("AIzaSyD-7-YhOAzX4VJfVLsHUz8KEn-1MGJq46o") - manifestPlaceholders = [ - GOOGLE_MAPS_KEY: "AIzaSyD-7-YhOAzX4VJfVLsHUz8KEn-1MGJq46o" - ] - } - dev { - dimension "app" - buildConfigField 'String', 'GI_RAZORPAY_KEY', formatString('rzp_test_vBmFshr0H06Hoe') - buildConfigField 'String', 'GOOGLE_MAPS_KEY', formatString("AIzaSyD-7-YhOAzX4VJfVLsHUz8KEn-1MGJq46o") + buildConfigField 'String', 'GOOGLE_MAPS_KEY', formatString('AIzaSyD-7-YhOAzX4VJfVLsHUz8KEn-1MGJq46o') manifestPlaceholders = [ GOOGLE_MAPS_KEY: "AIzaSyD-7-YhOAzX4VJfVLsHUz8KEn-1MGJq46o" ] @@ -96,16 +89,6 @@ static def formatString(String value) { dependencies { implementation project(":navi-payment") - - implementation libs.androidx.appcompat - implementation libs.androidx.core.ktx - implementation libs.androidx.constraintlayout - implementation libs.androidx.fragment.ktx - implementation libs.androidx.gridlayout - implementation libs.androidx.lifecycle.runtime.ktx - implementation libs.androidx.paging.compose - implementation libs.androidx.security.crypto.ktx - implementation libs.android.gms.playServicesAuth implementation libs.android.gms.playServicesAuthApiPhone implementation libs.android.gms.playServicesLocation @@ -114,30 +97,31 @@ dependencies { implementation libs.android.material implementation libs.android.places implementation libs.android.play.core.ktx - - implementation libs.arch.work.runtime.ktx - + implementation libs.androidx.appcompat + implementation libs.androidx.constraintlayout + implementation libs.androidx.core.ktx + implementation libs.androidx.fragment.ktx + implementation libs.androidx.gridlayout + implementation libs.androidx.lifecycle.runtime.ktx + implementation libs.androidx.paging.compose + implementation libs.androidx.security.crypto.ktx + implementation libs.androidx.work.runtimeKtx implementation libs.dagger.hiltAndroid implementation libs.dagger.hiltAndroidTesting - implementation libs.payu.checkoutPro implementation libs.payu.nativeOtpAssist - - - implementation libs.wasabeef.recyclerview.animators - + implementation libs.raamcosta.composeDestinations.animation.core implementation libs.shawnLin.numberPicker - - kapt libs.dagger.hiltCompiler + implementation libs.wasabeef.recyclerview.animators androidTestImplementation libs.androidx.test.espresso.core androidTestImplementation libs.androidx.test.junit - testImplementation libs.arch.core.testing - + testImplementation libs.androidx.arch.core.testing testImplementation libs.junit - testImplementation libs.mockk - implementation libs.raamcosta.composeDestinations.animation.core + + kapt libs.dagger.hiltCompiler + ksp libs.raamcosta.composeDestinations.ksp } diff --git a/navi-pay/build.gradle b/navi-pay/build.gradle index 2647ff47dd..1805da7f95 100644 --- a/navi-pay/build.gradle +++ b/navi-pay/build.gradle @@ -15,51 +15,46 @@ android { minSdk 21 targetSdk 33 - testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" consumerProguardFiles "consumer-rules.pro" + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } - buildTypes { - release { - minifyEnabled true - proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - } - } buildFeatures { buildConfig true compose true dataBinding true viewBinding true } + buildTypes { + release { + minifyEnabled true + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + } + } compileOptions { sourceCompatibility JavaVersion.VERSION_17 targetCompatibility JavaVersion.VERSION_17 } - kotlinOptions { - jvmTarget = '17' - freeCompilerArgs += ["-Xstring-concat=inline"] - } composeOptions { kotlinCompilerExtensionVersion libs.versions.compose.lib.get() } + kotlinOptions { + freeCompilerArgs += ["-Xstring-concat=inline"] + jvmTarget = '17' + } lint { disable 'NullSafeMutableLiveData' } - libraryVariants.all { variant -> - variant.addJavaSourceFoldersToModel( - new File(buildDir, "generated/ksp/${variant.name}/kotlin") - ) - } flavorDimensions = ["app"] productFlavors { + dev { + dimension "app" + } qa { isDefault true dimension "app" } - uitest { - dimension "app" - } - dev { + mock { dimension "app" } prod { @@ -70,53 +65,45 @@ android { dependencies { implementation project(":navi-common") - devImplementation project(path: ':npci-upi-cl', configuration: 'uat') - qaImplementation project(path: ':npci-upi-cl', configuration: 'uat') - uitestImplementation project(path: ':npci-upi-cl', configuration: 'uat') - prodImplementation project(path: ':npci-upi-cl', configuration: 'prod') - implementation libs.accompanist.pager implementation libs.accompanist.pagerIndicators implementation libs.accompanist.permissions implementation libs.accompanist.systemuicontroller - + implementation libs.android.material + implementation libs.android.play.core.ktx implementation libs.androidx.appcompat implementation libs.androidx.camera.mlkit.vision implementation libs.androidx.constraintlayout - implementation libs.androidx.core.ktx implementation libs.androidx.core.google.shortcuts + implementation libs.androidx.core.ktx implementation libs.androidx.lifecycle.viewmodel.ktx implementation libs.androidx.paging.compose implementation libs.androidx.room.paging implementation libs.androidx.sqlite - - implementation libs.android.material - implementation libs.android.play.core.ktx - implementation libs.dagger.hiltAndroid - implementation libs.mlkit.barcodeScanning - implementation libs.pierfrancescosoffritti.androidyoutubeplayer - implementation libs.raamcosta.composeDestinations.animation.core - implementation libs.zetetic.sqlcipher.android - implementation libs.zxing - kapt libs.androidx.hilt.compiler + devImplementation project(path: ':npci-upi-cl', configuration: 'uat') - kapt libs.dagger.hiltAndroidCompiler + qaImplementation project(path: ':npci-upi-cl', configuration: 'uat') - ksp libs.androidx.room.compiler - ksp libs.raamcosta.composeDestinations.ksp + mockImplementation project(path: ':npci-upi-cl', configuration: 'uat') + + prodImplementation project(path: ':npci-upi-cl', configuration: 'prod') androidTestImplementation libs.androidx.test.junit testImplementation libs.junit - testImplementation libs.kotlinx.coroutines.test - testImplementation libs.mockk + + kapt libs.androidx.hilt.compiler + kapt libs.dagger.hiltAndroidCompiler + + ksp libs.androidx.room.compiler + ksp libs.raamcosta.composeDestinations.ksp } diff --git a/navi-payment/build.gradle b/navi-payment/build.gradle index ae7043c03b..cd49344233 100644 --- a/navi-payment/build.gradle +++ b/navi-payment/build.gradle @@ -14,21 +14,21 @@ android { minSdk 21 targetSdk 33 - testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" consumerProguardFiles "consumer-rules.pro" + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } + buildFeatures { + buildConfig true + compose true + dataBinding true + } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } - buildFeatures { - buildConfig true - compose true - dataBinding true - } compileOptions { sourceCompatibility JavaVersion.VERSION_17 targetCompatibility JavaVersion.VERSION_17 @@ -37,37 +37,34 @@ android { kotlinCompilerExtensionVersion libs.versions.compose.lib.get() } kotlinOptions { - jvmTarget = '17' freeCompilerArgs += ["-Xstring-concat=inline"] + jvmTarget = '17' } } dependencies { api project(":navi-common") - - implementation libs.androidx.appcompat - implementation libs.androidx.core.ktx - implementation libs.androidx.lifecycle.livedata.ktx - implementation libs.androidx.lifecycle.viewmodel.ktx - implementation libs.androidx.lifecycle.runtime.ktx - - implementation libs.android.material - - implementation libs.dagger.hiltAndroid - - implementation libs.retrofit.retrofit - implementation libs.retrofit.converter.gson - - debugImplementation libs.chucker.library - releaseImplementation libs.chucker.libraryNoOp - api libs.cashfree api libs.razorpay - kapt libs.dagger.hiltCompiler + implementation libs.android.material + implementation libs.androidx.appcompat + implementation libs.androidx.core.ktx + implementation libs.androidx.lifecycle.livedata.ktx + implementation libs.androidx.lifecycle.runtime.ktx + implementation libs.androidx.lifecycle.viewmodel.ktx + implementation libs.dagger.hiltAndroid + implementation libs.retrofit.converter.gson + implementation libs.retrofit.retrofit + + debugImplementation libs.chucker.library + + releaseImplementation libs.chucker.libraryNoOp androidTestImplementation libs.androidx.test.espresso.core androidTestImplementation libs.androidx.test.junit testImplementation libs.junit + + kapt libs.dagger.hiltCompiler } diff --git a/navi-rr/build.gradle b/navi-rr/build.gradle index 7edfa514fa..d8ab55f55f 100644 --- a/navi-rr/build.gradle +++ b/navi-rr/build.gradle @@ -14,71 +14,63 @@ android { minSdk 21 targetSdk 33 + consumerProguardFiles "consumer-rules.pro" multiDexEnabled true testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" - consumerProguardFiles "consumer-rules.pro" } + buildFeatures { + buildConfig true + compose true + dataBinding true + } buildTypes { release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } - buildFeatures { - buildConfig true - compose true - dataBinding true - } compileOptions { + incremental true sourceCompatibility JavaVersion.VERSION_17 targetCompatibility JavaVersion.VERSION_17 - incremental true } composeOptions { kotlinCompilerExtensionVersion libs.versions.compose.lib.get() } - testOptions { - unitTests.returnDefaultValues = true - } kotlinOptions { - jvmTarget = '17' freeCompilerArgs += ["-Xstring-concat=inline"] + jvmTarget = '17' } packagingOptions { resources { excludes += ['META-INF'] } } + testOptions { + unitTests.returnDefaultValues = true + } } dependencies { implementation project(":navi-common") - + implementation libs.accompanist.systemuicontroller + implementation libs.android.material implementation libs.androidx.appcompat implementation libs.androidx.core.ktx implementation libs.androidx.fragment.ktx implementation libs.androidx.lifecycle.runtime.compose implementation libs.androidx.paging.compose - - implementation libs.android.material - implementation libs.dagger.hiltAndroid - kapt libs.dagger.hiltCompiler - - implementation libs.accompanist.systemuicontroller - + androidTestImplementation libs.androidx.arch.core.testing androidTestImplementation libs.androidx.test.espresso.core androidTestImplementation libs.androidx.test.junit - androidTestImplementation libs.arch.core.testing - - testImplementation libs.arch.core.testing - + testImplementation libs.androidx.arch.core.testing testImplementation libs.junit - testImplementation libs.kotlinx.coroutines.test - testImplementation libs.mockk + + kapt libs.dagger.hiltCompiler } diff --git a/navi-vkyc/build.gradle b/navi-vkyc/build.gradle index 07052c0f61..3b5b4773d6 100644 --- a/navi-vkyc/build.gradle +++ b/navi-vkyc/build.gradle @@ -14,49 +14,45 @@ android { minSdk 21 targetSdk 33 - testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" consumerProguardFiles "consumer-rules.pro" + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } + buildFeatures { + dataBinding true + } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } - buildFeatures { - dataBinding true - } compileOptions { + incremental true sourceCompatibility JavaVersion.VERSION_17 targetCompatibility JavaVersion.VERSION_17 - incremental true } kotlinOptions { - jvmTarget = '17' freeCompilerArgs += ["-Xstring-concat=inline"] + jvmTarget = '17' } } dependencies { implementation project(":navi-common") - + implementation libs.android.material implementation libs.androidx.appcompat implementation libs.androidx.core.ktx implementation libs.androidx.fragment.ktx - - implementation libs.android.material - implementation libs.dagger.hiltAndroid implementation libs.dagger.hiltAndroidTesting - implementation libs.hms.androidSdk implementation libs.hms.videoView - kapt libs.dagger.hiltCompiler - androidTestImplementation libs.androidx.test.espresso.core androidTestImplementation libs.androidx.test.junit testImplementation libs.junit + + kapt libs.dagger.hiltCompiler } diff --git a/navi-widgets/build.gradle b/navi-widgets/build.gradle index ed56b68e2f..8e72c9690a 100644 --- a/navi-widgets/build.gradle +++ b/navi-widgets/build.gradle @@ -14,73 +14,63 @@ android { minSdk 21 targetSdk 33 - testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" consumerProguardFiles "consumer-rules.pro" + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } + buildFeatures { + compose true + dataBinding true + } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } - buildFeatures { - compose true - dataBinding true - } compileOptions { + incremental true sourceCompatibility JavaVersion.VERSION_17 targetCompatibility JavaVersion.VERSION_17 - incremental true } composeOptions { kotlinCompilerExtensionVersion libs.versions.compose.lib.get() } kotlinOptions { - jvmTarget = '17' freeCompilerArgs += ["-Xstring-concat=inline"] + jvmTarget = '17' } } dependencies { api project(":navi-analytics") api project(":navi-design") + api libs.androidx.compose.ui.util + api libs.androidx.paging.runtime.ktx + api libs.masayukiSuda.easingInterpolator + api libs.navi.uitron + implementation libs.android.exoplayer.core + implementation libs.android.exoplayer.hls + implementation libs.android.exoplayer.ui + implementation libs.android.flexbox + implementation libs.android.material implementation libs.androidx.appcompat implementation libs.androidx.core.ktx implementation libs.androidx.gridlayout implementation libs.androidx.hilt.work implementation libs.androidx.legacy.support.v4 - - implementation libs.android.exoplayer.core - implementation libs.android.exoplayer.ui - implementation libs.android.exoplayer.hls - implementation libs.android.flexbox - implementation libs.android.material - - implementation libs.androidx.workRuntime.ktx - + implementation libs.androidx.work.runtimeKtx implementation libs.dagger.hiltAndroid - implementation libs.philjay.mpAndroidChart - implementation libs.retrofit.converter.gson - api libs.androidx.compose.ui.util - api libs.androidx.paging.runtime.ktx - - api libs.masayukiSuda.easingInterpolator - - api libs.navi.uitron - - kapt libs.androidx.hilt.compiler - - kapt libs.dagger.hiltCompiler - androidTestImplementation libs.androidx.test.espresso.core androidTestImplementation libs.androidx.test.junit testImplementation libs.mockk - testImplementation libs.junit + + kapt libs.androidx.hilt.compiler + kapt libs.dagger.hiltCompiler } diff --git a/navi_hl_dynamic/build.gradle b/navi_hl_dynamic/build.gradle index 399e1e07ad..bf8bd3c99f 100644 --- a/navi_hl_dynamic/build.gradle +++ b/navi_hl_dynamic/build.gradle @@ -16,44 +16,44 @@ android { testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } - buildTypes { - release { - minifyEnabled false - shrinkResources false - proguardFiles 'proguard-rules-dynamic-features.pro' - } - } buildFeatures { buildConfig true compose true dataBinding true viewBinding true } + buildTypes { + release { + minifyEnabled false + proguardFiles 'proguard-rules-dynamic-features.pro' + shrinkResources false + } + } + compileOptions { + incremental true + sourceCompatibility JavaVersion.VERSION_17 + targetCompatibility JavaVersion.VERSION_17 + } composeOptions { kotlinCompilerExtensionVersion libs.versions.compose.lib.get() } - compileOptions { - sourceCompatibility JavaVersion.VERSION_17 - targetCompatibility JavaVersion.VERSION_17 - incremental true + kotlinOptions { + freeCompilerArgs += ["-Xstring-concat=inline"] + jvmTarget = '17' } testOptions { unitTests.returnDefaultValues = true } - kotlinOptions { - jvmTarget = '17' - freeCompilerArgs += ["-Xstring-concat=inline"] - } flavorDimensions = ["app"] productFlavors { + dev { + dimension "app" + } qa { isDefault true dimension "app" } - dev { - dimension "app" - } - uitest { + mock { dimension "app" } prod { @@ -64,18 +64,17 @@ android { dependencies { implementation project(':app') - implementation project(":navi-hl") implementation project(":navi-common") - + implementation project(":navi-hl") implementation libs.androidx.constraintlayout implementation libs.androidx.fragment.ktx implementation libs.androidx.legacy.support.v4 + androidTestImplementation libs.androidx.arch.core.testing androidTestImplementation libs.androidx.test.espresso.core androidTestImplementation libs.androidx.test.junit - androidTestImplementation libs.arch.core.testing - testImplementation libs.arch.core.testing + testImplementation libs.androidx.arch.core.testing testImplementation libs.junit testImplementation libs.kotlinx.coroutines.test testImplementation libs.mockk diff --git a/navi_pl_dynamic/build.gradle b/navi_pl_dynamic/build.gradle index 9b705936e4..b75f0e2fdb 100644 --- a/navi_pl_dynamic/build.gradle +++ b/navi_pl_dynamic/build.gradle @@ -1,6 +1,7 @@ plugins { alias libs.plugins.android.dynamic.feature alias libs.plugins.kotlin.android + alias libs.plugins.kotlin.kapt alias libs.plugins.kotlin.parcelize } @@ -14,39 +15,39 @@ android { testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } - buildTypes { - release { - minifyEnabled false - shrinkResources false - proguardFiles 'proguard-rules.pro' - } - } buildFeatures { compose true dataBinding true } + buildTypes { + release { + minifyEnabled false + proguardFiles 'proguard-rules.pro' + shrinkResources false + } + } compileOptions { + incremental true sourceCompatibility JavaVersion.VERSION_17 targetCompatibility JavaVersion.VERSION_17 - incremental true - } - kotlinOptions { - jvmTarget = '17' - freeCompilerArgs += ["-Xstring-concat=inline"] } composeOptions { kotlinCompilerExtensionVersion libs.versions.compose.lib.get() } + kotlinOptions { + freeCompilerArgs += ["-Xstring-concat=inline"] + jvmTarget = '17' + } flavorDimensions = ["app"] productFlavors { + dev { + dimension "app" + } qa { isDefault true dimension "app" } - uitest { - dimension "app" - } - dev { + mock { dimension "app" } prod { @@ -58,16 +59,13 @@ android { dependencies { implementation project(":app") implementation project(":navi-chat") - implementation project(':navi-vkyc') implementation project(":navi-common") - + implementation project(':navi-vkyc') + implementation libs.android.material implementation libs.androidx.appcompat implementation libs.androidx.core.ktx implementation libs.androidx.fragment.ktx - - implementation libs.android.material - - implementation libs.arch.work.runtime.ktx + implementation libs.androidx.work.runtimeKtx androidTestImplementation libs.androidx.test.espresso.core androidTestImplementation libs.androidx.test.junit diff --git a/pulse/build.gradle b/pulse/build.gradle index ba3e4f3da2..351ccff95a 100644 --- a/pulse/build.gradle +++ b/pulse/build.gradle @@ -12,52 +12,50 @@ android { minSdk 21 targetSdk 33 - testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" consumerProguardFiles "consumer-rules.pro" + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } + buildFeatures { + buildConfig true + } buildTypes { release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } - buildFeatures { - buildConfig true - } compileOptions { sourceCompatibility JavaVersion.VERSION_17 targetCompatibility JavaVersion.VERSION_17 } kotlinOptions { - jvmTarget = '17' freeCompilerArgs += ["-Xstring-concat=inline"] + jvmTarget = '17' } } dependencies { - implementation project(":navi-base") + api libs.retrofit.converter.gson + api libs.retrofit.retrofit + implementation project(":navi-base") + implementation libs.android.material implementation libs.androidx.appcompat implementation libs.androidx.core.ktx implementation libs.androidx.room.ktx implementation libs.androidx.room.runtime - implementation libs.androidx.workRuntime.ktx - - implementation libs.android.material + implementation libs.androidx.work.runtimeKtx debugImplementation libs.chucker.library + releaseImplementation libs.chucker.libraryNoOp - api libs.retrofit.converter.gson - api libs.retrofit.retrofit - - ksp libs.androidx.room.compiler - androidTestImplementation libs.androidx.test.espresso.core androidTestImplementation libs.androidx.test.junit testImplementation libs.androidx.room.testing - testImplementation libs.junit + + ksp libs.androidx.room.compiler }