transistorsoft / react-native-background-fetch

Periodic callbacks in the background for both IOS and Android
MIT License
1.43k stars 191 forks source link

Android PlugIn Setup: groovy.lang.MissingMethodException: No signature of method: org.gradle.initialization.DefaultProjectDescriptor.allprojects() is applicable for ... #477

Closed Aleks99999 closed 5 months ago

Aleks99999 commented 5 months ago

Your Environment

Expected Behavior

Project synced with updated grandle files (main and app) and ready to integrate for DEBUG version.

Actual Behavior

I'ld like to start working with Android plug-in but after executing all steps from README.md (installing with npm) sync with grandle files fails.

Steps to Reproduce

  1. npm install react-native-background-geolocation --save
  2. Android Auto-linking Setup
  3. npm install react-native-background-geolocation --save
  4. npm install react-native-background-fetch@^4.2.1
  5. edit android/build.gradle
  6. edit app/build.gradle

Context

Install Android PlugIn

Debug logs

groovy.lang.MissingMethodException: No signature of method: org.gradle.initialization.DefaultProjectDescriptor.allprojects() is applicable for argument types: (build_1ofqqn3zh7euwbgl9abwap9os$_run_closure1) values: [build_1ofqqn3zh7euwbgl9abwap9os$_run_closure1@59c019a7] Project folder

christocracy commented 5 months ago

Post your android/build.gradle

Why are you posting this issue at the background-fetch repo and not background-geolocation?

Aleks99999 commented 5 months ago
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
    ext {
        minSdkVersion       = 19          // Required minimum
        targetSdkVersion    = 33          // Or higher.
        compileSdkVersion   = 33          // Or higher.
        appCompatVersion    = "1.4.2"      // Or higher.  Required for new AndroidX compatibility.
        googlePlayServicesLocationVersion = "21.0.1"  // Or higher.
    }

    repositories {
        google()
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:7.3.1'
        classpath 'com.google.gms:google-services:4.3.15'
    }
}

allprojects {
    repositories {
        google()
        mavenCentral()

        mavenLocal()
        maven {
            // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
            url("$rootDir/../node_modules/react-native/android")
        }
        maven {
            // Android JSC is installed from npm
            url("$rootDir/../node_modules/jsc-android/dist")
        }
        // Required for react-native-background-fetch
        maven { url("${project(':react-native-background-fetch').projectDir}/libs") }
    }
}

/**
 * Project-wide configuration properties
 */
ext
{
    compileSdkVersion   = 33
    targetSdkVersion    = 33
    buildToolsVersion   = "26.0.2"
    supportLibVersion   = "26.1.0"
    googlePlayServicesVersion = "11.8.0"
}
Aleks99999 commented 5 months ago

Post your android/build.gradle

Why are you posting this issue at the background-fetch repo and not background-geolocation?

By mistake, haven't noticed. Sorry.

christocracy commented 5 months ago

I suggest you open your /Android folder with Android Studio and look for warnings.

Aleks99999 commented 5 months ago

I opened Android folder in Android Studio and found only warning concerning newer version: A newer version of com.google.gms:google-services than 4.3.15 is available: 4.4.0. (Problems tab) A screenshot will help?

christocracy commented 5 months ago

Why do you have this orphaned ext block at the end of your build.gradle?

/**
 * Project-wide configuration properties
 */
ext
{
    compileSdkVersion   = 33
    targetSdkVersion    = 33
    buildToolsVersion   = "26.0.2"
    supportLibVersion   = "26.1.0"
    googlePlayServicesVersion = "11.8.0"
}
Aleks99999 commented 5 months ago

I'm not good enough in making grandle configurations. I left it there by mistake. But even if i remove this block the error persists.

christocracy commented 5 months ago

post your android/app/build.gradle.

Aleks99999 commented 5 months ago
apply plugin: 'com.android.application'
apply plugin: 'com.google.gms.google-services'
apply plugin: "com.facebook.react"

// background-geolocation
Project background_geolocation = project(':react-native-background-geolocation')
apply from: "${background_geolocation.projectDir}/app.gradle"

android {
    compileSdkVersion rootProject.compileSdkVersion
    //compileSdkVersion 33

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    defaultConfig {
        applicationId "ru.good4.project1"
        minSdkVersion 21
        targetSdkVersion rootProject.targetSdkVersion
        //targetSdkVersion 33
        multiDexEnabled true
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
        debug {
            minifyEnabled false
            debuggable true
        }
    }
    // This is important, it will run lint checks but won't abort build
    lintOptions {
        abortOnError false
    }

    flavorDimensions 'default'
    productFlavors {
        flavorUfin {
            dimension = 'default'
            applicationId = 'ru.good4.project1'
        }
        flavorAnyGPS {
            dimension = 'default'
            applicationId = 'ru.anygps.web'
        }
    }
    sourceSets {
        flavorAnyGPS {
            res {
                srcDirs 'src/flavorAnyGPS/res', 'src/flavorAnyGPS/res/'
            }
            manifest {
                srcFile 'app/src/flavorAnyGPS/AndroidManifest.xml'
            }
        }
        flavorAnyGPSDebug {
            res {
                srcDirs 'src/flavorAnyGPS/res', 'src/flavorAnyGPS/res/'
            }
        }
    }
}

repositories {
    mavenCentral()
    maven { url 'http://JRAF.org/static/maven/2' }
    maven { url 'https://maven.fabric.io/public' }
    maven {
        // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
        url("$rootDir/../node_modules/react-native/android")
    }
    maven {
        // Android JSC is installed from npm
        url("$rootDir/../node_modules/jsc-android/dist")
    }
    maven {
        // react-native-background-fetch
        url("${project(':react-native-background-fetch').projectDir}/libs")
        }
}

dependencies {
    implementation "androidx.multidex:multidex:2.0.1"

    implementation 'com.google.code.gson:gson:2.8.6'
    implementation files('libs/simple-xml-2.7.jar')
    implementation 'com.makeramen:roundedimageview:1.5.0'
    implementation 'androidx.appcompat:appcompat:1.0.0'
    implementation 'androidx.cardview:cardview:1.0.0'
    implementation 'androidx.recyclerview:recyclerview:1.0.0'
    implementation 'com.google.android.material:material:1.0.0'
    implementation 'com.jakewharton:butterknife:7.0.1'
    implementation 'com.google.android.gms:play-services-auth:20.7.0'
    annotationProcessor 'com.jakewharton:butterknife:7.0.1'

    implementation 'androidx.core:core:1.0.0'

    //# Google Actions, Base Client Library
    implementation 'com.google.android.gms:play-services-base:18.2.0'
    implementation 'com.google.android.gms:play-services-tflite-java:16.1.0'
    //# Google Cloud Messaging
    implementation 'com.google.android.gms:play-services-gcm:16.0.0'
    //# Google Location, Activity Recognition, and Places
    implementation 'com.google.android.gms:play-services-location:17.1.0'
    //# Google Maps
    implementation 'com.google.android.gms:play-services-maps:17.0.0'
    implementation 'org.jetbrains:annotations-java5:15.0'

    // AppMetrica SDK.
    implementation 'com.yandex.android:mobmetricalib:5.3.0'

    // Optionally. Play Install Referrer library.
    implementation 'com.android.installreferrer:installreferrer:1.0'
    implementation 'androidx.core:core:1.0.0'

    implementation 'com.yandex.android:mobmetricapushlib:1.4.1'
    implementation 'com.google.firebase:firebase-core:16.0.4'
    implementation 'com.google.firebase:firebase-messaging:23.0.0'
    implementation 'com.google.firebase:firebase-auth:17.0.0'
    // Import the Firebase BoM
    implementation platform('com.google.firebase:firebase-bom:29.1.0')
    // Add the dependency for the Firebase SDK for Google Analytics
    // When using the BoM, don't specify versions in Firebase dependencies
    implementation 'com.google.firebase:firebase-analytics'

    // Use this dependency to bundle the model with your app
    implementation 'com.google.mlkit:barcode-scanning:17.1.0'
    implementation 'com.google.android.gms:play-services-code-scanner:16.0.0-beta3'

    def work_version = "2.8.1"
    // (Java only)
    implementation "androidx.work:work-runtime:$work_version"

    // Kotlin + coroutines
    implementation "androidx.work:work-runtime-ktx:$work_version"

    // optional - RxJava2 support
    implementation "androidx.work:work-rxjava2:$work_version"

    // optional - GCMNetworkManager support
    implementation "androidx.work:work-gcm:$work_version"

    // optional - Test helpers
    androidTestImplementation "androidx.work:work-testing:$work_version"

    // optional - Multiprocess support
    implementation "androidx.work:work-multiprocess:$work_version"

    implementation "androidx.startup:startup-runtime:1.1.1"

    implementation "androidx.concurrent:concurrent-futures:1.1.0"

    compile "com.android.support:appcompat-v7:$rootProject.supportLibVersion"
    compile(project(':react-native-device-info'))
}

configurations {
    cleanedAnnotations
    compile.exclude group: 'org.jetbrains' , module:'annotations'
}
christocracy commented 5 months ago

Why do you have this block in android/app/build.gradle??

repositories {
    mavenCentral()
    maven { url 'http://JRAF.org/static/maven/2' }
    maven { url 'https://maven.fabric.io/public' }
    maven {
        // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
        url("$rootDir/../node_modules/react-native/android")
    }
    maven {
        // Android JSC is installed from npm
        url("$rootDir/../node_modules/jsc-android/dist")
    }
    maven {
        // react-native-background-fetch
        url("${project(':react-native-background-fetch').projectDir}/libs")
        }
}
christocracy commented 5 months ago

I suggest you generate yourself a fresh new HelloWorld project and learn to setup and use the plugin in isolation.

christocracy commented 5 months ago

You're pasting random stuff into your gradle files and corrupting your own project.

Aleks99999 commented 5 months ago

Only needed dependancies, nothing random. For new project it hardly will be a problem, I need to integrate Plug In in existing project. I can rollback all actions to the working state and retry the setup if you think that it helps.

christocracy commented 5 months ago

Only needed dependancies, nothing random.

These don't belong in android/app/build.gradle. They are the sort of thing that goes into the root android/build.gradle.

I've pointed out two glaring mistakes. Who knows what other mistakes lurk in your files. Your problem is related to mistakes in your own project.

christocracy commented 5 months ago

What I do periodically when upgrading react-native is generate a fresh new app and migrate my source and dependencies into the new project, using react-native-rename to rename my project accordingly.

Aleks99999 commented 5 months ago

Ok, thank you. Will try both ways tomorrow and return. //Sure I would not try to integrate the plug-in into broken project.

Aleks99999 commented 5 months ago

Hello, Updated JVM, nodejs, nvm, started Demo app (without console)..

Refactored my grandle files.

Went through Capacitor BackGround Geolocation Setup (including @transistorsoft/capacitor-background-fetch) . Stucked on: Project with path ':transistorsoft-capacitor-background-fetch' could not be found in root project 'MobileAppAndroid2'.

Read FAQ, checked Setup process. But fail to understand why sync project with grandle returns: Project with path ':transistorsoft-capacitor-background-geolocation' could not be found in root project '

in this block:

allprojects { repositories { google() mavenCentral()

    //mavenLocal()

    // capacitor-background-geolocation

HERE>>> maven { url("${project(':transistorsoft-capacitor-background-geolocation').projectDir}/libs") } maven { url 'https://developer.huawei.com/repo/' } // capacitor-background-fetch maven { url("${project(':transistorsoft-capacitor-background-fetch').projectDir}/libs") } } }

christocracy commented 5 months ago

I have no idea.

Create a simple HelloWorld to practice setting up / using the plug-in.

Aleks99999 commented 5 months ago

Hello World, Android! Absolutely empty simple activity app.. All setup process according with the provided manual for react-native--background-geolocation and react-native-background-fetch results in the same error:

Project with path ':react-native-background-geolocation' could not be found in root project 'My Application'

for this line: maven { url("${project(':react-native-background-geolocation').projectDir}/libs") }

Please give an idea how to locate in correctly

christocracy commented 5 months ago

Publish your simple HelloWorld to a public github repo and post the url here.

Aleks99999 commented 5 months ago

Please kindly have a look: https://github.com/Aleks99999/My-App

christocracy commented 5 months ago

That looks nothing at all like a React Native app. That is a pure native Android app.

christocracy commented 5 months ago

Let me know when you have a react native app for me to look at. This is a react-native plugin meant for React Native apps.

christocracy commented 5 months ago

https://reactnative.dev/

Aleks99999 commented 5 months ago

Ok, thank you for help. I need to integrate TransistorsSoft to my Android (Native) and later to IOS app. Can you please suggest should I convert my native app to React Nativa app or start to work with Capacitor?

/I'm not yet enough qulified in Transistorsoft products./

christocracy commented 5 months ago

I do not support pure native implementations.

I support only cross platform frameworks:

I do not provide application development support. I cannot help you to "convert" apps.

Aleks99999 commented 5 months ago

Ok, thank you