9

我想编译我的应用程序时遇到问题:

意外的顶级异常:java.lang.IllegalArgumentException:已添加`

android-support-v4.jar 似乎是一个错误。

在我的项目中,我有 3 个库:appcompat、facebook、google_play_services。

我的毕业文件:

  • AppProject/settings.gradle

    include ':libraries:google_play_services', ':libraries:appcompat', ':libraries:facebook', ':app'
    
  • AppProject/build.gradle:

    buildscript {
        repositories {
            mavenCentral()
        }
        dependencies {
            classpath 'com.android.tools.build:gradle:0.5.+'
        }
    }
    
  • AppProject/app/build.gradle:

    apply plugin: 'android'
    
    dependencies {
        compile project(':libraries:appcompat')
        compile project(':libraries:facebook')
        compile project(':libraries:google_play_services')
        compile files('libs/android-async-http-1.4.3.jar')
        compile files('libs/gson-2.2.4.jar')
        compile files('libs/libGoogleAnalyticsV2.jar')
        compile files('libs/universal-image-loader-1.8.4.jar')
        compile files('libs/urbanairship-lib-3.0.0.jar')
    }
    
  • AppProject/libraries/appcompat/build.gradle:

    apply plugin: 'android-library'
    
    dependencies {
        compile files('libs/android-support-v4.jar')
        compile files('libs/android-support-v7-appcompat.jar')
    }
    
  • AppProject/libraries/facebook/buidle.gradle:

    apply plugin: 'android-library'
    
    dependencies {
        compile files('libs/android-support-v4.jar')
    }
    
  • AppProject/libraries/google_play_services/buidle.gradle:

    apply plugin: 'android-library'
    
    dependencies {
        compile files('libs/google-play-services.jar')
    }
    

但是当我编译它时,会出现这个错误:

Output:
        UNEXPECTED TOP-LEVEL EXCEPTION:
        java.lang.IllegalArgumentException: already added: Landroid/support/v4/app/NotificationCompatIceCreamSandwich;

你能帮助我吗?

4

4 回答 4

8

我发现了问题:

AppProject/settings.gradle

include ':libraries:facebook', ':app'

AppProject/libraries/facebook/build.gradle

apply plugin: 'android-library'

dependencies {
    compile 'com.android.support:support-v4:18.0.0'
}

AppProject/app/build.gradle

apply plugin: 'android'

dependencies {
    compile 'com.android.support:support-v4:18.0.0'
    compile 'com.android.support:appcompat-v7:18.0.+'
    compile 'com.google.android.gms:play-services:3.1.36'

    compile project(':libraries:facebook')
    compile files('libs/android-async-http-1.4.3.jar')
    compile files('libs/gson-2.2.4.jar')
    compile files('libs/libGoogleAnalyticsV2.jar')
    compile files('libs/universal-image-loader-1.8.4.jar')
    compile files('libs/urbanairship-lib-3.0.0.jar')
}
于 2013-07-30T13:43:52.167 回答
6

Prcaen 回答的主要思想是使用:

compile 'com.android.support:support-v4:18.0.0'

内部依赖部分而不是:

compile files('libs/google-play-services.jar')

可以解决重复问题。确实如此!

于 2013-12-12T07:11:03.760 回答
2

正如我从您的构建文件中看到的那样,您已将 android-support 库添加到您的两个模块中。我有完全相同的问题,并通过从主模块中删除库来解决它,只留下一个库一个。我不确定这是否是最好的解决方案,但它有效并且 gradle 不会抱怨。

于 2013-08-03T22:14:22.213 回答
2

您的项目中可能包含两次该 jar 文件。尝试转到 File -> Project Structure 并检查您是否有 2 个相同的模块或库。

于 2013-07-30T13:25:53.037 回答