Android应用程序中的OAuth

Pet*_*trS 1 android oauth gradle android-multidex

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

dependencies {        
    compile 'com.android.support:appcompat-v7:21.0.0'
    compile 'com.wu-man:android-oauth-client:0.0.3'    
}
Run Code Online (Sandbox Code Playgroud)

使用gradle文件同步项目工作正常,但是当我尝试构建我的应用程序时,存在一个问题:

错误:任务':app:dexDebug'的执行失败.com.android.ide.common.process.ProcessException:org.gradle.process.internal.ExecException:进程'命令'C:\ Program Files\Java\jdk1.7.0_51\bin\java.exe''以非完成零退出值2

我发现,我应该尝试添加multiDexEnabled truedefaultConfig部分build.gradle.第一个问题已经解决,但还有另一个问题:

错误:任务':app:packageAllDebugClassesForMultiDex'的执行失败.java.util.zip.ZipException:重复条目:android/support/v4/accessibilityservice/AccessibilityServiceInfoCompat $ AccessibilityServiceInfoIcsImpl.class

我不知道如何修复它以及如何构建我的项目.你能帮我吗?提前致谢.

Ale*_*pov 7

支持-V4传递依赖正在增加两倍.您可以使用依赖项任务或依赖性洞察报告来验证它:

MacBook-Pro:demo alex$ ./gradlew app:dependencies --configuration compile
Run Code Online (Sandbox Code Playgroud)

要么:

MacBook-Pro:demo alex$ ./gradlew app:dependencyInsight --configuration compile --dependency support-v4
Run Code Online (Sandbox Code Playgroud)

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

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 (*)
Run Code Online (Sandbox Code Playgroud)

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

: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
Run Code Online (Sandbox Code Playgroud)


请注意,appcompat-v7android-oauth-client都依赖于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'
    }
}
Run Code Online (Sandbox Code Playgroud)