Android Studio:Gradle sync失败:Project:app声明了依赖项

时间:2017-04-13 11:43:59

标签: android android-studio gradle build.gradle

我在Android Studio 2.3中工作,我想使用我在github(https://github.com/henrychuangtw/Android-ChatHead)上找到的库,而且没有Jar文件。 在settings.gradle中,我已经声明了库所在的目录,如下所示:

include ':app'
include ':Android-ChatHead'

project(':Android-ChatHead').projectDir=new File('/Users/lorand/AndroidStudioProjects/Doritest/android_chatHeads')

我还将库添加到build.gradle依赖项中:

dependencies {

        compile fileTree(dir: 'libs', include: ['*.jar'])

        compile project(':Android-ChatHead')

        androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
            exclude group: 'com.android.support', module: 'support-annotations'
        })
        compile 'com.android.support:appcompat-v7:25.1.1'
        compile 'com.android.support.constraint:constraint-layout:1.0.2'
        testCompile 'junit:junit:4.12'
    }

在此之后,如果我同步,我会收到此错误:

  

Gradle sync失败:Project:app声明了一个依赖项   配置'编译'配置'默认'不是   在项目描述符中声明:Android-ChatHead。请教   IDE日志了解更多详细信息(帮助|显示日志)

如果我将/ app添加到settings.gradle文件路径的末尾,则会收到以下错误:

Error:Dependency Doritest:Android-ChatHead:unspecified on project core resolves to an APK archive which is not supported as a compilation dependency. 
File: /Users/lorand/AndroidStudioProjects/Doritest/android_chatHeads/Android-ChatHead/app/build/outputs/apk/Android-ChatHead-release-unsigned.apk

我无法弄清楚我应该做些什么。

2 个答案:

答案 0 :(得分:2)

就我所知,你无法添加这样的依赖关系 我假设您没有要使用的依赖jar,因此您必须添加Android-ChatHead作为模块

为此,请按照以下步骤操作:

  1. 点击文件>新>导入模块。
  2. 在“源目录”框中,键入 或选择要导入的模块的目录:

    • 如果要导入一个模块,请指明其根目录。

    • 如果要从项目导入多个模块,请指明项目 夹。对于文件夹内的每个模块,将出现一个框 表示源位置和模块名称。确保导入 对于要导入的每个模块,都会选中框。

  3. 输入您想要的模块名称 在模块名称字段中。

  4. 单击“完成”。

  5. 在您的settings.gradle中添加

    include ':app', ':Android-ChatHead'

  6. 在你的app build.gradle add的依赖项部分中添加

    compile project(':Android-ChatHead')

  7. 清理/构建项目

答案 1 :(得分:2)

通过复制和引用导入是不同的

P.Lorand正在做的是引用模块而不是复制,因此他对模块所做的任何编辑都会影响引用该模块的所有其他应用程序。

使用Ivan Milisavljevic方式,模块将被复制到应用程序。对导入的模块进行的编辑仅在应用程序中有效;有时候是好主意,有时是烦恼。

应用程序和模块具有不同的结构

应用程序具有应用程序根目录和应用程序模块;通常命名为app 模块的根是模块本身。

改变这个:

project(':Android-ChatHead').projectDir=new File('/Users/lorand/AndroidStudioProjects/Doritest/android_chatHeads')

project(':Android-ChatHead').projectDir=new File('/Users/lorand/AndroidStudioProjects/Doritest/android_chatHeads/moduleName')

可能有帮助。

另外,如果要将应用程序转换为模块,请确保重命名app,同名的两个模块app是灾难的承诺。

使用Android-ChatHead

它包含一个app文件夹,因此它是一个应用程序,而不是一个模块 build.gradle包含一行apply plugin: 'com.android.application',因此application位需要替换为library
评论applicationId "henrychuang.tw.chatheadmsg"
将模块名称应用重命名为其他内容;我从来没有手动完成它,在项目选项卡的app folfder上使用android studio ctl + alt + r。

然后你应该没事。首先尝试通过副本导入。