Android studio 3.0: Unable to resolve dependency for :app@dexOptions/compileClasspath': Could not resolve project :animators

Android StudioAndroid Gradle-PluginAndroid Studio-3.0

Android Studio Problem Overview


I migrate to Android studio 3.0. So, the project become unable to compile a module named ":animator" and it displays me this error:

 Error:Unable to resolve dependency for
 ':app@dexOptions/compileClasspath': Could not resolve project
 :animators. <a
 href="openFile:/home/mobilepowered/MobilePowered/MyInnovalee/trunk17-10-2017/app/build.gradle">Open
 File</a><br><a href="Unable to resolve dependency for
 &#39;:app@dexOptions/compileClasspath&#39;: Could not resolve project
 :animators.">Show Details</a>
 

and show details gives this log :

 Unable to resolve dependency for ':app@dexOptions/compileClasspath':
 Could not resolve project :animators.
 
 Could not resolve project :animators. Required by:
     project :app
 Unable to find a matching configuration of project :animators:
      - Configuration 'debugApiElements':
          - Required com.android.build.api.attributes.BuildTypeAttr 'dexOptions' 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 'dexOptions' 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 'dexOptions' 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 'dexOptions' 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'.

Android Studio Solutions


Solution 1 - Android Studio

With Android Studio 2.3(AS) the project works fine and i can able to run the App. After updating the AS to Android Studio 3.0. i too got the error as below for libraries and build types.

Unable to resolve dependency for ':app@dexOptions/compileClasspath': Could not resolve project : library_Name.

Unable to resolve dependency for ':app@release/compileClasspath': Could not resolve project : library_Name.

To Solve the issue, simply.

What ever the

buildTypes{
          debug{ ... }
          release{ ... }
    }

you have in your (app) build.gradle file, You have to include all the buildTypes{ } with same names as like

buildTypes{
      debug{ ... }
      release{ ... }
}

in to build.gradle files of All libraries/modules included in project.

clean and rebuild the project, the issue will be fixed.

Still issue not fixed, update the gradle-wrapper.properties to

distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip

Solution 2 - Android Studio

As stated in the official migration guide, this error is encountered when: > Your app includes a build type that a library dependency does not

android {
  buildTypes {
      release {
          ...
      }
      dexOptions {
          ...
        // release & debug is in project animators
        matchingFallbacks = ['release', 'debug']
      }
      debug {
          ...
      }
    }
}

Correct place to find the info is now this documentation

Solution 3 - Android Studio

Make sure you're in your project

  1. Open the Preferences, by clicking File > Settings (on Mac, Android Studio > Preferences).
  2. In the left pane, click Build, Execution, Deployment >> Gradle.
  3. Uncheck/disable the Offline work checkbox.
  4. Click Apply or OK.

Solution 4 - Android Studio

I spent a lot of time on this issue and none of above solutions work for me. The names and number of build types were also exactly equal in both app and library project.

The only mistake I was making was - In library project's build.gradle, I was using line

> apply plugin: 'com.android.application'

While this line should be -

> apply plugin: 'com.android.library'

After making this change, this error got resolved.

Solution 5 - Android Studio

Modify all

compile project(':library:yourproject')

to

implementation project(path: ':library:yourproject', configuration:'default')

in your app build.gradle. Note the line with configuration.

Solution 6 - Android Studio

I tried everything from unchecking offline work to matchingFallbacks. But nothing worked.

Then, in dependencies of app.gradle,

instead of

> implementation project(':lib-name')

I used,

> implementation project(path:':lib-name', configuration: 'default')

> Eg: implementation project(path:':myService', configuration: > 'default')

And it worked like a charm. :)

I was adding a dependency module with service and am not making a library as its a part of AOSP project.

Just in case, it helps someone.

Solution 7 - Android Studio

Solution:

Dowload the ultimate version of Gradle

http://services.gradle.org/distributions/

gradle-4.x-rc-1-all.zip.sha256 09-Jan-2018 01:15 +0000 64.00B

Unzip the distribution

Go to Android Studio -> File -> Settings -> Gradle -> Use local gradle distribution Search the file and OK

In the gradle:app write this, implementation(path: ':animators', configuration: 'default')

dependencies {
   .
   .
   .


    implementation project(path: ':animators', configuration: 'default')


}

Solution 8 - Android Studio

Here is how I solved my problem:

instead of

compile project(':library_name')
compile project(':library_name')

in app gradle I have used

implementation project(':library_name')
implementation project(':library_name')

And in my build types for example

demoTest {
 .........
}

I added this line

demoTest {
   matchingFallbacks = ['debug', 'release']
}

Solution 9 - Android Studio

I had the same issue, and solved it by adding 'mavenCentral()' to build.gradle(Project)

allprojects {
    repositories {
        ...
        mavenCentral()
    }
}

Solution 10 - Android Studio

My problem is below

Unable to resolve dependency for ':app@debug/compileClasspath': Could not download rxjava.jar (io.reactivex.rxjava2:rxjava:2.2.2)

Solved by checking Enable embedded Maven Repository

enter image description here

Solution 11 - Android Studio

Even, I have faced the same issue.

I have fixed the issue by referring the above Solution 2 with the new g‌​radle-4.1 :

I have done the following gradle changes. It seems downloading resources through maven Amazon helped me to fix the issue, there are issues with appcompat library. Check and ensure that appcompat compatible support libraries downloaded in your system. What I feel, it just simply the resources not downloaded through maven, causing the compile error issue. Ensure the resources are found in your local drive to fix the issue.

Just Played around with

  1. Maven Amazon url

repositories {
	maven {
		url "https://s3.amazonaws.com/repo.commonsware.com"
	}
	jcenter()
}

2. Compatible support libraries downloaded in the drive and referring compatible libraries in gradle.

dependencies {
	implementation fileTree(dir: 'libs', include: \['*.jar'\])
	implementation 'com.android.support:appcompat-v7:26.0.0-alpha1'
	implementation  'com.android.support:support-v4:26.0.0-alpha1'
	implementation 'com.android.support.constraint:constraint-layout:1.0.2'

}

Complete file

        apply plugin: 'com.android.application'
        
        repositories {
            maven {
                url "https://s3.amazonaws.com/repo.commonsware.com"
            }
            jcenter()
        }
        
        android {
            compileSdkVersion 26
            defaultConfig {
                applicationId "com.cognizant.interviewquestions.cognizantiqpractice2"
                minSdkVersion 18
                targetSdkVersion 26
                versionCode 1
                versionName "1.0"
        
                javaCompileOptions {
                    annotationProcessorOptions {
                        includeCompileClasspath false
                    }
                }
        
                dexOptions {
                    javaMaxHeapSize "4g"
                    preDexLibraries = false
                }
            }
        
            buildTypes {
                release {
                    minifyEnabled false
                    proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
                }
            }
        }
        
        dependencies {
            implementation fileTree(dir: 'libs', include: \['*.jar'\])
            implementation 'com.android.support:appcompat-v7:26.0.0-alpha1'
            implementation  'com.android.support:support-v4:26.0.0-alpha1'
            implementation 'com.android.support.constraint:constraint-layout:1.0.2'
        
        }
---------------------------------------------------------------------------

enter image description here

enter image description here

Solution 12 - Android Studio

Change this code in gradle:

  compile project(':yourLibrary')

to

   implementation project(path: ': yourLibrary', configuration:'default')

Solution 13 - Android Studio

I found two type of solutions :

  1. Solution with the old g‌​radle-3.3 :

As first and temporary solution to make the project run with android studio 3.0 , I maintain the old config of my previous of Android Studio 2.3

distributionUrl=https\://services.gradle.org/distributions/g‌​radle-3.3-all.zip   , compileSdkVersion 25** and **buildToolsVersion "25.0.3" and classpath 'com.android.tools.build:gradle:2.3.3

2. Solution with the new g‌​radle-4.1 :

To work with the new features of gradle 4.1 and the classpath com.android.tools.build:gradle:3.0.0' , I followed this link https://developer.android.com/studio/build/gradle-plugin-3-0-0-migration.html . So, Those are my implementations :

In the file gradle-wrapper.properties :

distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip

In the file build.gradle of the project :

buildscript {
    repositories {
        jcenter()
        google()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.0'
        //classpath 'me.tatarka:gradle-retrolambda:3.3.1' remove this line
    }
}

allprojects {
    repositories {
        google()
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}
   

In the file build.gradle of the app :

apply plugin: 'com.android.application'
//apply plugin: 'me.tatarka.retrolambda' remove this line

repositories {
    maven {
        url "https://s3.amazonaws.com/repo.commonsware.com"
    }
    jcenter()
    mavenCentral()
    maven { url "https://jitpack.io" }
}

android {
    compileSdkVersion 26
    buildToolsVersion "26.0.2"
    defaultConfig {
        applicationId "com.imennmn.myprojectid"
        minSdkVersion 21
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        /**
         * Enabling multidex support.
         */
        multiDexEnabled true
        missingDimensionStrategy 'minApi' , 'minApi24'

        javaCompileOptions {
            annotationProcessorOptions {
                includeCompileClasspath true
            }
        }

        dexOptions {
            javaMaxHeapSize "4g"
            preDexLibraries = false
        }

    }
    buildTypes {
        release {
            shrinkResources false
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }

    lintOptions {
        checkReleaseBuilds false
        abortOnError false
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    configurations.all {
        resolutionStrategy.force 'com.google.code.findbugs:jsr305:1.3.9'
    }

    /**
     * Solve the problem when using multiple free source libs
     * NOTICE or LICENSE files cause duplicates
     */
    packagingOptions {
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/NOTICE.txt'
        exclude 'META-INF/DEPENDENCIES.txt'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/DEPENDENCIES'
        //exclude duplicate butterknife and parceler libs
        exclude 'META-INF/services/javax.annotation.processing.Processor'
        exclude 'META-INF/DEPENDENCIES'
        exclude 'META-INF/rxjava.properties'

    }


}

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation files('libs/motwin-android-sdk-3.2.0-RELEASE-TLS.jar')
    implementation files('libs/notifmanager-android-lib-3.1.0-RELEASE.jar')
    implementation files('libs/commons-lang-2.4.jar')
    androidTestImplementation('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    implementation 'com.android.support:appcompat-v7:26.0.2'
    implementation 'com.android.support:support-v4:26.0.2'
    implementation 'com.android.support:design:26.0.2'
    implementation 'com.android.support:multidex:1.0.2'
    api 'com.jakewharton:butterknife:7.0.1'
    implementation 'de.hdodenhof:circleimageview:2.1.0'
    implementation 'com.android.support:percent:26.0.2'
    implementation 'com.google.android.gms:play-services-maps:11.4.2'
    implementation 'com.github.bumptech.glide:glide:3.7.0'
    implementation 'com.google.code.gson:gson:2.8.1'
    testImplementation 'junit:junit:4.12'
    implementation 'com.facebook.rebound:rebound:0.3.8'
    implementation 'com.google.android.gms:play-services-gcm:11.4.2'
    implementation 'io.reactivex.rxjava2:rxjava:2.1.1'
    implementation 'io.reactivex.rxjava2:rxandroid:2.0.1'

    implementation project(':animators')

    // Retrofit2 & XmlConverter
    implementation 'com.squareup.retrofit2:retrofit:2.3.0'
    implementation 'com.squareup.retrofit2:converter-gson:2.1.0'
    implementation 'com.squareup.retrofit2:adapter-rxjava:2.1.0'

    implementation('com.squareup.retrofit2:converter-simplexml:2.3.0') {
        exclude group: 'xpp3', module: 'xpp3'
        exclude group: 'stax', module: 'stax-api'
        exclude group: 'stax', module: 'stax'
    }

    implementation 'com.squareup.okhttp3:okhttp:3.4.1'
    implementation 'com.squareup.okhttp3:logging-interceptor:3.4.1'

    //Library to reports crash
    implementation('ch.acra:acra:4.5.0') {
        exclude group: 'org.json'
    }

    implementation 'com.github.kenglxn.QRGen:android:2.3.0'

}

In the build.gradle of the library animator I upgrade targetSdkVersion to 26 :

apply plugin: 'com.android.library'

android {
  compileSdkVersion 26
  buildToolsVersion '26.0.2'

  defaultConfig {
    minSdkVersion 21
    targetSdkVersion 26
    versionCode 1
    versionName "1.0"
  }
}

dependencies {
  implementation "com.android.support:support-compat:26.0.2"
  implementation "com.android.support:support-core-ui:26.0.2"
  implementation "com.android.support:recyclerview-v7:26.0.2"
}

Solution 14 - Android Studio

you just need to reset dependencies in app.gradle file like old one as

androidTestImplementation 'com.android.support.test:runner:0.5'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:2.2.2'

to new one as

androidTestImplementation 'com.android.support.test:runner:1.0.1'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'

Solution 15 - Android Studio

Make sure you have disabled "Offline work" in Gradle settings (Setting->Build, Execution, Deployment->Build Tools->Gradle).

I made this mistake. I followed a guide on speeding up gradle builds and had turned on the Offline work option. If that is enabled, Gradle won't be able to download any new dependencies and hence will result in the "Unable to resolve dependency" error.

Solution 16 - Android Studio

I met the same problems and has solved.

Due to my situation, I guess your build.gradle file for app project contains snippets below:

android {
    ...
    buildTypes {
        debug {...}
        release {...}
        dexOptions {...}
    }
}

but actually, dexOptions is not a build type, you should move dexOptions section out buildTypes, like this:

android {
    ...
    dexOptions {
        ...
    }

    buildTypes {
        debug {...}
        release {...}
    }
}

Hope that can help someone.

Solution 17 - Android Studio

Adding productFlavors{} to the app build.gradle solved the issue for me. See below:

buildTypes {
        release {
             ...
        }
    }
productFlavors {
    }

Solution 18 - Android Studio

This may also happen when you add a reference to the feature module that uses the incorrect plugin type. Simply change com.android.application to com.android.feature or com.android.library

https://i.stack.imgur.com/NDjnG.png

Solution 19 - Android Studio

I think it's from gradle-wrapper.properties file : make distribution url distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip and do not upgarde to : distributionUrl=https\://services.gradle.org/distributions/gradle-4 ....

Solution 20 - Android Studio

It seems like it's a bug on Gradle. This solves the problem for me, but it's not a solution. We have to wait for a new version fixing this problems.

On build.gradle in the project set classpath 'com.android.tools.build:gradle:2.3.3' instead classpath 'com.android.tools.build:gradle:3.0.0'.

On gradle-wrapper.properties set https://services.gradle.org/distributions/gradle-3.3-all.zip instead https://services.gradle.org/distributions/gradle-4.1.2-all.zip

Solution 21 - Android Studio

In my case, the problem I had was due to a dependency I was trying to import (BottomNavigationViewEx).

This dependency requires to be downloaded from jitpack.io and maven.google.com, and I was putting this config in buildscript section:

buildscript {
    repositories {
        google()
        jcenter()
        maven { url "https://jitpack.io" } // this is incorrect
        maven { url "https://maven.google.com" } // this is incorrect
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.1.2'
    } 
}

which it was incorrect, I need to remove these two maven lines and include them in the right section, 'allprojects':

allprojects {
    repositories {
        google()
        jcenter()
        maven { url "https://jitpack.io" }
        maven { url "https://maven.google.com" }
    }
}

Hope it helps somebody as same for me.

Solution 22 - Android Studio

I tried all the solutions given above and none of them worked for me, I ensured that I have exact build types and product flavours in my library module and app module.

Solution 23 - Android Studio

This thread seems to have wondered a bit, however as relating to the original question, not only do you have to have your buildTypes in both build.gradle files, you need to have your productFlavors (if you are using them of course) in both build.gradle files as well.

Solution 24 - Android Studio

I tried running Android studio 3.0.1 with internet connection. Android studio started downloading something from a link automatically which was showing in Gradle build notification. I can't say this is a sure answer but try this out.. maybe you can get your issue resolved.

Solution 25 - Android Studio

If using Android Studio on Linux:

go to: Home/Android Studio Projects folder/App name folder open terminal on that page and type:

./gradlew -Dhttp.proxyHost

check if JAVA_HOME is set on valid directory, if not set valid location finally rebuild your project.

> NOTE: if that doesn't work remove gradle cache folder or all of that > and download again with Android Studio.

Solution 26 - Android Studio

Add the library from File->Right click->New->Module->Import Eclipse ADT project->brows your library->finish Now add in the app gradle setting following code:

implementation project(':library')

Finally add in the setting gradle following code:

include ':app', ':library'

Solution 27 - Android Studio

After updating android studio to 3.3. I faced this problem when I tried to load Firebase JobDispatcher. Adding this link on gradle.properties solved my problem

distributionUrl=https://services.gradle.org/distributions/gradle-4.1-all.zip

Solution 28 - Android Studio

I know none of the above solutions is gonna work as I have remained stuck into this sort of issue a long time, finally resolved this issue after watching the issue very carefully, which is pointing that

> Unable to resolve dependency for ':app@dexOptions/compileClasspath': > Could not resolve project : library_Name.

You need to make a sure and double check if the class is residing there. This one thing will prove much helpful to many I guess because focusing on this point took me much closer to the solution. Now if nothing exists in that folder path you need to get the whole stuff like src folder build folder etc everything, copy that and paste it over there sync/rebuild project, if needed try invalidate and restart android studio. Hope so this will get you out of trouble as happend in my case.

Thanks

Solution 29 - Android Studio

changing implementation 'com.android.support:appcompat-v7:27+' to implementation 'com.android.support:appcompat-v7:+' worked for me

I am using Intellij 2019 CE, with Kotlin

Solution 30 - Android Studio

In my case it was so:

> Unable to resolve dependency for ':app@debug/compileClasspath': Failed to transform artifact....

I tried ten solutions, no one worked, thus my solution was to remove C:\Users\djdance.gradle\caches and restart AS

Solution 31 - Android Studio

Step 1:
1.Open the Preferences, by clicking File > Settings (on Mac, Android Studio > Preferences).
2.In the left pane, click Build, Execution, Deployment >> Gradle.
3.Uncheck/disable the Offline work checkbox.
4.Click Apply or OK.

Step 2:
downgrade the gradle-wrapper.properties content which you can access this 
file directory by clicking on CTRL + SHFT +R KEY 
e.g from
    distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip

to 
    distributionUrl=https\://services.gradle.org/distributions/gradle-4.0-all.zip

or to any lower version like /gradle-3.9-all.zip or /gradle-3.8-all.zip

Solution 32 - Android Studio

Try this I already fix my problem after all by commenting the lines below

dependencies

{

compile 'com.android.support:appcompat-v7:26.1.0'
compile 'com.android.support.constraint:constraint-layout:1.0.2'
//compileOnly 'com.android.support.test:runner:1.0.1'
//compileOnly 'com.android.support.test.espresso:espresso-core:3.0.1'
//androidTestImplementation 'junit:junit:4.12'

}

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionImene NoomeneView Question on Stackoverflow
Solution 1 - Android StudioSackuriseView Answer on Stackoverflow
Solution 2 - Android StudioJackHangView Answer on Stackoverflow
Solution 3 - Android StudioBeyondoView Answer on Stackoverflow
Solution 4 - Android StudioAnuj GargView Answer on Stackoverflow
Solution 5 - Android StudioDuy PhanView Answer on Stackoverflow
Solution 6 - Android StudioShachiView Answer on Stackoverflow
Solution 7 - Android StudioIgnacio_aaView Answer on Stackoverflow
Solution 8 - Android StudioAnik DeyView Answer on Stackoverflow
Solution 9 - Android StudioMaybelle PacateView Answer on Stackoverflow
Solution 10 - Android StudioduyuanchaoView Answer on Stackoverflow
Solution 11 - Android StudioArvind AnandalaView Answer on Stackoverflow
Solution 12 - Android StudioMaryam AzhdariView Answer on Stackoverflow
Solution 13 - Android StudioImene NoomeneView Answer on Stackoverflow
Solution 14 - Android StudioWasif AliView Answer on Stackoverflow
Solution 15 - Android StudioYashasView Answer on Stackoverflow
Solution 16 - Android StudioZhuang MaView Answer on Stackoverflow
Solution 17 - Android StudiocbelwalView Answer on Stackoverflow
Solution 18 - Android StudioIgorView Answer on Stackoverflow
Solution 19 - Android StudioNawrezView Answer on Stackoverflow
Solution 20 - Android StudioRaminView Answer on Stackoverflow
Solution 21 - Android StudioNeonigmaView Answer on Stackoverflow
Solution 22 - Android StudioJerry OkaforView Answer on Stackoverflow
Solution 23 - Android Studiouser330844View Answer on Stackoverflow
Solution 24 - Android StudioAnkit JhaView Answer on Stackoverflow
Solution 25 - Android StudioFazelView Answer on Stackoverflow
Solution 26 - Android StudioSoumen DasView Answer on Stackoverflow
Solution 27 - Android StudioShaonView Answer on Stackoverflow
Solution 28 - Android StudioAli NawazView Answer on Stackoverflow
Solution 29 - Android StudiotausifView Answer on Stackoverflow
Solution 30 - Android StudiodjdanceView Answer on Stackoverflow
Solution 31 - Android StudioAlabi TemitopeView Answer on Stackoverflow
Solution 32 - Android StudiogebrehiwotView Answer on Stackoverflow