20

I'm trying to modify an open source code in android studio, but I keep getting Error:(134, 0) Could not get unknown property 'release' for SigningConfig container of type org.gradle.api.internal.FactoryNamedDomainObjectContainer. Does anyone know what's wrong with the code? The code in the build.gradle file is posted below.

//apply plugin: 'idea'
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'

android {

    // Create a variable called keystorePropertiesFile, and initialize it to your
    // keystore.properties file, in the rootProject folder.
    def keystorePropertiesFile = rootProject.file("keystore.properties")
    if (keystorePropertiesFile.exists()) {
        Properties keystoreProperties = new Properties();
        keystoreProperties.load(new FileInputStream(keystorePropertiesFile))



    compileSdkVersion 27
    buildToolsVersion "$supportLibraryVersion"
    defaultConfig {
        applicationId "org.bottiger.podcast"
        minSdkVersion 16
        targetSdkVersion 27
        versionCode 424        // even - release. Odd - development
        versionName "0.160.2" // even - release. Odd - development
        multiDexEnabled = true

        vectorDrawables.useSupportLibrary = true

        // Espresso
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

        externalNativeBuild {
            cmake {
                cppFlags "-std=c++11"
                arguments '-DANDROID_PLATFORM=android-16', '-DANDROID_TOOLCHAIN=clang'
            }
        }
    }
    dataBinding {
        enabled = true
    }
    // Point Gradle at the directory where you want to root all of your native code
    // There is a default directory but I prefer to control which directories to use
    // and there will be a point later where keeping control over this is important
    sourceSets.main {
        jni.srcDirs = ["src/main/jni"];
        java.srcDirs += 'src/main/kotlin'

    }
    lintOptions {
        checkReleaseBuilds false
        abortOnError false
    }
    packagingOptions {
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/NOTICE.txt'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/NOTICE'
        exclude 'LICENSE.txt'
        exclude 'META-INF/rxjava.properties'
    }

    flavorDimensions "default"

    productFlavors {

        dev {
            // To avoid using legacy multidex when building from the command line,
            // set minSdkVersion to 21 or higher. When using Android Studio 2.3 or higher,
            // the build automatically avoids legacy multidex when deploying to a device running
            // API level 21 or higher—regardless of what you set as your minSdkVersion.
            minSdkVersion 21
            versionNameSuffix "-dev"
            //applicationIdSuffix '.dev'

            // The following configuration limits the "dev" flavor to using
            // English stringresources and xxhdpi screen-density resources.
            resConfigs "en", "xxhdpi"

            buildConfigField "boolean", "DEV_MODE", "true"
            buildConfigField "boolean", "PRIVATE_MODE", "false"
            buildConfigField "boolean", "LIBRE_MODE", "false"

            dimension "default"
        }

        free {
            ndk {
                abiFilters "armeabi-v7a", "x86"
            }

            buildConfigField "boolean", "DEV_MODE", "false"
            buildConfigField "boolean", "PRIVATE_MODE", "true"
            buildConfigField "boolean", "LIBRE_MODE", "true"

            dimension "default"
        }

        google {
            buildConfigField "boolean", "DEV_MODE", "false"
            buildConfigField "boolean", "PRIVATE_MODE", "false"
            buildConfigField "boolean", "LIBRE_MODE", "false"

            dimension "default"
        }

        amazon {
            buildConfigField "boolean", "DEV_MODE", "false"
            buildConfigField "boolean", "PRIVATE_MODE", "false"
            buildConfigField "boolean", "LIBRE_MODE", "false"

            dimension "default"
        }
    }

        signingConfigs {
            release {
                keyAlias keystoreProperties['keyAlias']
                keyPassword keystoreProperties['keyPassword']
                storeFile file(keystoreProperties['storeFile'])
                storePassword keystoreProperties['storePassword']
            }
        }
        android.buildTypes.release.signingConfig = signingConfigs.release
    } else  {
        android.buildTypes.release.signingConfig = null
    }


    buildTypes {
        release {
            minifyEnabled true
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.release


        }
    }
    // http://stackoverflow.com/questions/22851103/android-studio-gradle-error-multiple-dex-files-define
    dexOptions {
        preDexLibraries true
        maxProcessCount 8
        javaMaxHeapSize "2g"
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    // Encapsulates your external native build configurations.
    externalNativeBuild {

        // Encapsulates your CMake build configurations.
        cmake {
            // Provides a relative path to your CMake build script.
            path "src/main/cpp/CMakeLists.txt"
        }
    }
}

repositories {
    mavenCentral()
    maven { url 'https://jitpack.io' }
    google()
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.android.support:multidex:1.0.2'

    compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"

    compile "com.android.support:support-v4:$supportLibraryVersion"
    compile "com.android.support:appcompat-v7:$supportLibraryVersion"
    compile "com.android.support:recyclerview-v7:$supportLibraryVersion"
    compile "com.android.support:palette-v7:$supportLibraryVersion"
    compile "com.android.support:cardview-v7:$supportLibraryVersion"
    compile "com.android.support:mediarouter-v7:$supportLibraryVersion"
    compile "com.android.support:design:$supportLibraryVersion"
    compile "com.android.support:percent:$supportLibraryVersion"

    compile "android.arch.lifecycle:runtime:$architectureComponentsVersion"
    compile "android.arch.lifecycle:extensions:$architectureComponentsVersion"
    compile "android.arch.lifecycle:reactivestreams:$architectureComponentsVersion"
    annotationProcessor "android.arch.lifecycle:compiler:$architectureComponentsVersion"
    compile "android.arch.persistence.room:runtime:$architectureComponentsVersion"
    annotationProcessor "android.arch.persistence.room:compiler:$architectureComponentsVersion"
    compile "android.arch.persistence.room:rxjava2:$architectureComponentsVersion"

    compile 'com.android.support.constraint:constraint-layout:1.0.2'

    compile "com.squareup.okhttp3:okhttp:$okhttp_version"
    compile 'com.squareup.retrofit2:retrofit:2.2.0'
    compile 'com.squareup.retrofit2:converter-gson:2.2.0'
    compile('com.googlecode.json-simple:json-simple:1.1.1') {
        exclude module: 'junit'
    }
    //compile 'com.google.apis:google-api-services-drive:+'
    compile 'io.reactivex:rxandroid:1.2.1'
    compile 'io.reactivex:rxjava:1.3.0'

    compile 'com.jakewharton.rxbinding2:rxbinding:2.0.0'
    compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
    compile 'io.reactivex.rxjava2:rxjava:2.1.8'

    compile 'io.requery:sqlite-android:3.20.0'
    compile 'com.google.android.exoplayer:exoplayer:2.6.1'
    compile('com.wdullaer:materialdatetimepicker:3.1.1') {
        exclude group: 'com.android.support'
    }

    // Glide
    compile "com.github.bumptech.glide:glide:$glide_version"
    compile "com.github.bumptech.glide:okhttp3-integration:$glide_version"
    compile "com.github.bumptech.glide:compiler:$glide_version"
    compile "com.github.bumptech.glide:recyclerview-integration:$glide_version"
    annotationProcessor "com.github.bumptech.glide:compiler:$glide_version"

    compile 'net.steamcrafted:materialiconlib:1.1.2'
    compile 'org.whispersystems:libpastelog:1.0.7'
    compile 'com.bignerdranch.android:recyclerview-multiselect:0.2'
    compile 'com.google.http-client:google-http-client-gson:1.22.0'

    compile 'jp.wasabeef:recyclerview-animators:2.2.6'
    compile 'com.fasterxml.jackson.core:jackson-databind:2.8.6'
    compile 'com.nineoldandroids:library:2.4.0'
    compile 'com.bugsnag:bugsnag-android:3.8.0'
    compile 'com.journeyapps:zxing-android-embedded:3.4.0'
    compile 'com.heinrichreimersoftware:material-intro:1.6.2'
    compile 'com.dmitrymalkovich.android:material-design-dimens:1.4'
    compile 'com.github.daniel-stoneuk:material-about-library:2.2.3-support26.1.0'
    compile 'org.unbescape:unbescape:1.1.4.RELEASE'
    compile 'com.google.dagger:dagger:2.10'
    annotationProcessor 'com.google.dagger:dagger-compiler:2.10'

    compile project(':armv7-fmmr')
    // For testing only
    testCompile 'junit:junit:4.12'
    testCompile 'org.mockito:mockito-core:2.7.19'
    testCompile("android.arch.persistence.room:testing:$architectureComponentsVersion") {
        exclude group: 'com.android.support'
        exclude group: 'com.google.code.gson'
    }

    configurations.all {
        resolutionStrategy.force "com.android.support:support-annotations:$supportLibraryVersion"
        resolutionStrategy.force 'com.google.code.findbugs:jsr305:3.0.1'

        exclude group: "org.apache.httpcomponents", module: "httpclient"
    }
    // Espresso
    // https://developer.android.com/training/testing/ui-testing/espresso-testing.html
    androidTestCompile 'com.android.support.test:runner:1.0.1'
    androidTestCompile 'com.android.support.test:rules:1.0.1'
    androidTestCompile 'com.jakewharton.espresso:okhttp3-idling-resource:1.0.0'
    androidTestCompile "com.squareup.okhttp3:okhttp:$okhttp_version"
    androidTestCompile("com.android.support.test.espresso:espresso-contrib:$espressoVersion") {
        exclude group: 'com.android.support'
    }
    androidTestCompile("com.android.support.test.espresso:espresso-core:$espressoVersion") {
        exclude group: 'com.android.support', module: 'support-annotations'
    }
    // Free version
    // Amazon version
    amazonCompile fileTree(dir: 'src/amazon/libs', include: ['*.jar'])
    amazonCompile "com.google.android.gms:play-services-cast:$playServicesVersion"
    amazonCompile "com.google.android.gms:play-services-cast-framework:$playServicesVersion"
    amazonCompile "com.google.android.gms:play-services-auth:$playServicesVersion"
    amazonCompile "com.google.android.gms:play-services-location:$playServicesVersion"
    amazonCompile "com.google.firebase:firebase-messaging:$playServicesVersion"
    // google cast
    // Play Store
    googleCompile "com.google.android.gms:play-services-analytics:$playServicesVersion"
    // analytics
    googleCompile "com.google.android.gms:play-services-cast:$playServicesVersion"
    googleCompile "com.google.android.gms:play-services-cast-framework:$playServicesVersion"
    googleCompile "com.google.android.gms:play-services-auth:$playServicesVersion"
    googleCompile "com.google.android.gms:play-services-location:$playServicesVersion"
    googleCompile "com.google.firebase:firebase-core:$playServicesVersion"
    googleCompile "com.google.firebase:firebase-messaging:$playServicesVersion"
    googleCompile "com.google.firebase:firebase-database:$playServicesVersion"
    // google cast
    compile project(':soundwavescommon')
}

apply plugin: 'com.google.gms.google-services'
Gifer
  • 211
  • 1
  • 2
  • 8

5 Answers5

51

I was also facing the same issue. In my case I just placed the signingConfigs{} above the buildTypes{}

signingConfigs {
        release {
            keyAlias keystoreProperties['keyAlias']
            keyPassword keystoreProperties['keyPassword']
            storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
            storePassword keystoreProperties['storePassword']
        }
    }

buildTypes {
        release {
            signingConfig signingConfigs.release
        }
    }
Inamur Rahman
  • 2,913
  • 1
  • 27
  • 29
4

In my case, I had already the signingConfigs{} block.

What I did to fix this was, make sure that the signingConfigs{} block is declared before the buildTypes{} block.

I didn't know that Gradle files are oriented by declaration position.

Dr Mido
  • 2,414
  • 4
  • 32
  • 72
3

Please try the following 10 steps :

  1. Go to "Build" on the top panel of Android Studio.
  2. Select "Edit Build Variant".
  3. Go to "Modules"(on the left side).
  4. Click "signin configs"
  5. Click on "+" sign, and type "release".
  6. Click apply and ok

After this please enter your keystore details,

  1. go to "Build variants" on the same place in the left side.
  2. Click on "release"
  3. scroll down and go to "sign in config" and select "$signinConfig.release"
  4. Click apply and Ok.
Aarti
  • 101
  • 7
1

I had the exact same issue while I was creating an APK with React Native. It was solved changing the scope of signingConfigs.

Source: https://github.com/researchgate/gradle-release/issues/187

Rubén Morales
  • 332
  • 4
  • 6
0

In my case (which was not in signingConfig block), I was using a property called release in a gradle file that was applied in my module gradle file.

build.gradle:

apply from: 'a_file.gradle'

a_file.gradle

def variable = release // which is undefined

And inside that file, I was using this release property which was not defined anywhere. So I simply fixed that problem.

Mahdi-Malv
  • 16,677
  • 10
  • 70
  • 117