8

I am getting the following traceback when I am migrating to Android studio 3.0

* What went wrong:
Could not determine the dependencies of task ':celltower:compileExternalNativeBuildJavaWithJavac'.
> Could not resolve all task dependencies for configuration ':celltower:externalNativeBuildCompileClasspath'.
   > Could not resolve project :commonandroidutils.
     Required by:
         project :celltower
      > Unable to find a matching configuration of project :commonandroidutils:
          - Configuration 'debugApiElements':
              - Required com.android.build.api.attributes.BuildTypeAttr 'externalNativeBuild' and found incompatible value 'debug'.
              - Required com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' and found compatible value 'Aar'.
              - Found com.android.build.gradle.internal.dependency.VariantAttr 'debug' but wasn't required.
              - Required org.gradle.api.attributes.Usage 'java-api' and found compatible value 'java-api'.
          - Configuration 'debugRuntimeElements':
              - Required com.android.build.api.attributes.BuildTypeAttr 'externalNativeBuild' and found incompatible value 'debug'.
              - Required com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' and found compatible value 'Aar'.
              - Found com.android.build.gradle.internal.dependency.VariantAttr 'debug' but wasn't required.
              - Required org.gradle.api.attributes.Usage 'java-api' and found incompatible value 'java-runtime'.
          - Configuration 'releaseApiElements':
              - Required com.android.build.api.attributes.BuildTypeAttr 'externalNativeBuild' and found incompatible value 'release'.
              - Required com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' and found compatible value 'Aar'.
              - Found com.android.build.gradle.internal.dependency.VariantAttr 'release' but wasn't required.
              - Required org.gradle.api.attributes.Usage 'java-api' and found compatible value 'java-api'.
          - Configuration 'releaseRuntimeElements':
              - Required com.android.build.api.attributes.BuildTypeAttr 'externalNativeBuild' and found incompatible value 'release'.
              - Required com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' and found compatible value 'Aar'.
              - Found com.android.build.gradle.internal.dependency.VariantAttr 'release' but wasn't required.
              - Required org.gradle.api.attributes.Usage 'java-api' and found incompatible value 'java-runtime'.
   > Could not resolve project :wimtutils.
     Required by:
         project :celltower
      > Unable to find a matching configuration of project :wimtutils:
          - Configuration 'debugApiElements':
              - Required com.android.build.api.attributes.BuildTypeAttr 'externalNativeBuild' and found incompatible value 'debug'.
              - Required com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' and found compatible value 'Aar'.
              - Found com.android.build.gradle.internal.dependency.VariantAttr 'debug' but wasn't required.
              - Required org.gradle.api.attributes.Usage 'java-api' and found compatible value 'java-api'.
          - Configuration 'debugRuntimeElements':
              - Required com.android.build.api.attributes.BuildTypeAttr 'externalNativeBuild' and found incompatible value 'debug'.
              - Required com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' and found compatible value 'Aar'.
              - Found com.android.build.gradle.internal.dependency.VariantAttr 'debug' but wasn't required.
              - Required org.gradle.api.attributes.Usage 'java-api' and found incompatible value 'java-runtime'.
          - Configuration 'releaseApiElements':
              - Required com.android.build.api.attributes.BuildTypeAttr 'externalNativeBuild' and found incompatible value 'release'.
              - Required com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' and found compatible value 'Aar'.
              - Found com.android.build.gradle.internal.dependency.VariantAttr 'release' but wasn't required.
              - Required org.gradle.api.attributes.Usage 'java-api' and found compatible value 'java-api'.
          - Configuration 'releaseRuntimeElements':
              - Required com.android.build.api.attributes.BuildTypeAttr 'externalNativeBuild' and found incompatible value 'release'.
              - Required com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' and found compatible value 'Aar'.
              - Found com.android.build.gradle.internal.dependency.VariantAttr 'release' but wasn't required.
              - Required org.gradle.api.attributes.Usage 'java-api' and found incompatible value 'java-runtime'.

My build.gradle is here.

apply plugin: 'com.android.library'

android {
    compileSdkVersion 26
    buildToolsVersion "26.0.1"

    defaultConfig {
        minSdkVersion 15
        targetSdkVersion 22
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        externalNativeBuild {
            ndkBuild {
            }
        }

        ndk {
//            abiFilters   "armeabi-v7a", "x86"
            abiFilters "armeabi-v7a"
            moduleName "HelloJNI"
            //ldLibs.addAll(["android", "log"])
        }
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        debug {
            debuggable true
            minifyEnabled false

            ndk {
                abiFilters   "armeabi-v7a", "x86"
                moduleName "HelloJNI"
            }
        }
        externalNativeBuild {
            ndkBuild {
                path "src/main/jni/Android.mk"
            }
        }
    }

    buildTypeMatching 'debug', 'release'

    compileOptions {
        targetCompatibility 1.8
        sourceCompatibility 1.8
    }
}

ext {
    retrofitVersion = '2.1.0'
    rxJavaVersion = '1.2.1'
    rxAndroidVersion = '1.2.1'
    okHttpVersion = '3.4.1'
    playServicesVersion = '9.8.0'
    fireBaseVersion = '9.8.0'
    daggerVersion = '2.7'
    appCompatV7Version = '26.0.1'
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    androidTestImplementation('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    implementation "com.android.support:support-annotations:$appCompatV7Version"
    implementation 'com.google.code.gson:gson:2.7'
    testImplementation 'junit:junit:4.12'
    implementation 'com.squareup.retrofit:retrofit:1.9.0'
    implementation 'com.jakewharton.retrofit:retrofit1-okhttp3-client:1.0.2'
    implementation "com.squareup.retrofit2:retrofit:$retrofitVersion"
    implementation "com.squareup.retrofit2:adapter-rxjava:$retrofitVersion"
    implementation "com.squareup.retrofit2:converter-gson:$retrofitVersion"
    implementation 'com.readystatesoftware.sqliteasset:sqliteassethelper:+'
    implementation project(':commonandroidutils')
    implementation project(':wimtutils')
}

Any help is much appreciated!

nizam.sp
  • 4,002
  • 5
  • 39
  • 63

3 Answers3

2

I moved out the externalNativeBuild outside of buildTypes and have put it under android. It started working.

android {
....
...
   buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        debug {
            debuggable true
            minifyEnabled false

            ndk {
                abiFilters   "armeabi-v7a", "x86"
                moduleName "HelloJNI"
            }
        }
    }

    externalNativeBuild {
        ndkBuild {
            path "src/main/jni/Android.mk"
        }
    }

    buildTypeMatching 'debug', 'release'
...
....
} // end of android
nizam.sp
  • 4,002
  • 5
  • 39
  • 63
  • This produces an error: **Could not find method buildTypeMatching() for arguments [debug, release] on object of type com.android.build.gradle.AppExtension.** – IgorGanapolsky Apr 09 '18 at 15:52
0

Try replacing implementation with api only for last two project dependencies:

  1. commonandroidutils
  2. wimutils

Documentation states that:

The dependency is available to the module at compile time, and it's also available to the consumer of the module at compile time and runtime. This configuration behaves just like compile (which is now deprecated), and you should typically use this only in library modules. App modules should use implementation, unless you want to expose its API to a separate test module.

Reference: Migrate to Android Plugin for Gradle 3.0.0

Not sure, but give it a try. Hope it helps.

Sneh Pandya
  • 8,197
  • 7
  • 35
  • 50
0

I'm not sure how this is possible. It looks like you have a mismatch between the Gradle plugin itself and its dependencies that provides the WaitableExecutor class.

However you mention Gradle 1.5 and this is a problem.

The plugin version 0.3 was compatible with Gradle 1.3-1.4 The new version release last week, 0.4 is compatible with Gradle 1.6+

Make sure you use 0.4 and the new Gradle version.

Vishal Yadav
  • 1,020
  • 4
  • 15
  • 30