Android应用中的OAuth

问题描述:

我需要在我的Android应用程序中使用OAuth协议。我决定使用android-oauth-client。在我build.gradle文件我有:Android应用中的OAuth

dependencies {   
    compile 'com.android.support:appcompat-v7:21.0.0' 
    compile 'com.wu-man:android-oauth-client:0.0.3'  
} 

与gradle这个文件同步项目工作正常,但是当我尝试建立我的应用程序,有一个问题:

Error:Execution failed for task ':app:dexDebug'. com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'C:\Program Files\Java\jdk1.7.0_51\bin\java.exe'' finished with non-zero exit value 2

我发现,我应该尝试在build.gradledefaultConfig部分添加multiDexEnabled true。第一个问题解决了,但还有一个:

Error:Execution failed for task ':app:packageAllDebugClassesForMultiDex'. java.util.zip.ZipException: duplicate entry: android/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoIcsImpl.class

我不知道我该如何解决这个问题,我该如何构建我的项目。你能帮我吗?提前致谢。

support-v4传递性依赖性正在被添加两次。

MacBook-Pro:demo alex$ ./gradlew app:dependencies --configuration compile 

或:您可以使用依赖任务或依赖洞察力报告验证

MacBook-Pro:demo alex$ ./gradlew app:dependencyInsight --configuration compile --dependency support-v4 

演示是你的项目的根目录。对于编译配置的输出将是:

compile - Classpath for compiling the main sources. 
+--- com.android.support:appcompat-v7:21.0.0 
| \--- com.android.support:support-v4:21.0.0 
|   \--- com.android.support:support-annotations:21.0.0 
\--- com.wu-man:android-oauth-client:0.0.3 
    +--- com.google.oauth-client:google-oauth-client-java6:1.15.0-rc 
    | \--- com.google.oauth-client:google-oauth-client:1.15.0-rc 
    |   +--- com.google.http-client:google-http-client:1.15.0-rc 
    |   | \--- com.google.code.findbugs:jsr305:1.3.9 
    |   \--- com.google.code.findbugs:jsr305:1.3.9 
    +--- com.google.http-client:google-http-client-jackson:1.15.0-rc 
    | +--- com.google.http-client:google-http-client:1.15.0-rc (*) 
    | \--- org.codehaus.jackson:jackson-core-asl:1.9.11 
    +--- com.google.android:support-v4:r7 
    \--- com.google.api-client:google-api-client-android:1.15.0-rc 
      +--- com.google.api-client:google-api-client:1.15.0-rc 
      | \--- com.google.oauth-client:google-oauth-client:1.15.0-rc (*) 
      \--- com.google.http-client:google-http-client-android:1.15.0-rc 
       \--- com.google.http-client:google-http-client:1.15.0-rc (*) 

和依赖洞察力报告的输出将是:

:app:dependencyInsight 
com.android.support:support-v4:21.0.0 
\--- com.android.support:appcompat-v7:21.0.0 
    \--- compile 

com.google.android:support-v4:r7 
\--- com.wu-man:android-oauth-client:0.0.3 
    \--- compile 


注意,这两个程序兼容性-V7Android的OAuth的客户取决于support-v4。您可以通过排除android-oauth-client的依赖性来轻松解决此问题:

dependencies { 
    compile 'com.android.support:appcompat-v7:21.0.0' 
    compile ('com.wu-man:android-oauth-client:0.0.3') { 
     exclude group: 'com.google.android', module: 'support-v4' 
    } 
} 
+1

这是一个很好的答案,来自我遇到的确切问题。 –