相关疑难解决方法(0)

在Android Studio和Gradle中使用ViewPagerIndicator库

我正在尝试使用Jake Wharton的ViewPagerIndicator库,但是我无法在Android Studio中使用我的Gradle项目.

我将其添加为依赖项,如下所示:

    dependencies {
       // ... other ommitted
       compile 'com.viewpagerindicator:library:2.4.1'
       compile 'com.android.support:support-v4:19.0.1'
       compile 'com.nineoldandroids:library:2.4.0'
       // ...
    }
Run Code Online (Sandbox Code Playgroud)

但该项目似乎无法识别库中的任何组件.我想知道不同的support-v4版本是否存在依赖性问题,或者是九折机器人的某些东西......?

android gradle viewpagerindicator android-studio

115
推荐指数
7
解决办法
9万
查看次数

无法使用gradlew或gradle查看依赖关系树

我正在运行最新版本的gradle(1.12).在项目的根目录中,我运行以下命令,如@CommonsWare的回答所述,命令应该给出依赖树:

当我运行它时,会发生这种情况:

$ gradle -q依赖项

------------------------------------------------------------
Root project
------------------------------------------------------------

No configurations
Run Code Online (Sandbox Code Playgroud)

该项目是一个Android gradle项目,使用Android Studio内置的新项目向导从头开始创建.我的顶级build.gradle文件如下所示:

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.10.+'
    }
}

allprojects {
    repositories {
        maven { url "http://dl.bintray.com/populov/maven" }
        mavenCentral()
    }
}

subprojects {
    repositories {
        flatDir {
            dirs "$rootDir/libs"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我的settings.gradle文件如下所示:

include ':app', ':facebook', 'pullToRefresh'
Run Code Online (Sandbox Code Playgroud)

据我所知,这是一个非常基本的gradle配置.有没有人知道为什么依赖树函数什么也没有返回?如果我需要提供更多信息,请告诉我.

android android-gradle-plugin

59
推荐指数
1
解决办法
2万
查看次数

找不到支持的Gradle DSL方法:'exclude()'

如果:

dependencies {
    compile 'com.google.code.gson:gson:2.2.4'
    compile 'de.keyboardsurfer.android.widget:crouton:1.8.3'
    compile 'de.greenrobot:eventbus:2.2.0'
    compile 'com.intellij:annotations:+@jar'
    compile 'com.jpardogo.googleprogressbar:library:1.0.0'

    compile project(':floatlabel')
    compile project(':Android-SwipeToDismiss')
    compile project(':Android-UndoBar') {
        exclude group: 'com.nineoldandroids', module: 'library' // without or without this one
    }
    compile project(':AndroidSlidingUpPanel:library') {
        exclude group: 'com.nineoldandroids', module: 'library' // without or without this one
    }
}
Run Code Online (Sandbox Code Playgroud)

我收到此错误消息:

Gradle 'mProject' project refresh failed: Build script error, unsupported Gradle DSL method found: 'exclude()'!
Run Code Online (Sandbox Code Playgroud)

但这有效:

dependencies {
    compile 'com.google.code.gson:gson:2.2.4'
    compile 'de.keyboardsurfer.android.widget:crouton:1.8.3'
    compile 'de.greenrobot:eventbus:2.2.0'
    compile 'com.intellij:annotations:+@jar'
    compile 'com.jpardogo.googleprogressbar:library:1.0.0'

    compile project(':floatlabel')
    compile project(':Android-SwipeToDismiss') …
Run Code Online (Sandbox Code Playgroud)

android gradle

47
推荐指数
1
解决办法
2万
查看次数

如何使用gradle管理第三方deps的不同支持库版本?

我有一堆第三方库,我包含在我的基础应用程序中.我无法控制那些第三方模块包含的支持库.这使我很难在我的应用程序中拥有相同版本的android支持库.

当我可以从每个依赖项中排除某些库时,我知道使用gradle:

compile('com.test:lib1:1.0.0') {
    exclude group: 'com.android.support'
}
Run Code Online (Sandbox Code Playgroud)

然而,有大量的支持库,并将它们全部排除在我的第三方库的每一个看起来像是矫枉过正.

有没有更好的办法?

阅读这篇博文:https://www.devsbedevin.com/android-understanding-gradle-dependencies-and-resolving-conflicts/

它表明:

configurations.all {
  resolutionStrategy {
    preferProjectModules()
  }
}
Run Code Online (Sandbox Code Playgroud)

但是当使用它时,我仍然在我的gradle文件中的Android Studio中收到警告,检测到有多个版本的支持库.

如果我的依赖项依赖于支持库的不同版本,我该怎么办?在上面的任何一种情况下,我都会强迫第三方库使用它们未构建的特定版本的支持库.我应该使用哪个版本?最新的支持库?Min支持所有第三方依赖的库?

这是一个最小的gradle文件示例,显示了第三方依赖项,每个依赖项依赖于它们自己的支持库版本.

android {
    compileSdkVersion 26
    buildToolsVersion '26.0.2'

    defaultConfig {
        applicationId "com.example.app"
        minSdkVersion 17
        targetSdkVersion 25
    }
}

configurations.all {
    resolutionStrategy {
        preferProjectModules()
    }
}

dependencies {
    compile 'com.android.support:support-v13:26.0.0'
    compile 'com.test:lib1:1.0' // depends on support-v13:25.0.0
    compile 'com.test:lib2:1.0' // depends on support-v13:25.2.0
    compile 'com.test:lib3:1.0' // depends on support-v13:25.4.0
    compile 'com.test:lib4:1.0' // depends on support-v13:26.0.0
}
Run Code Online (Sandbox Code Playgroud)

Android studio提供以下警告:

在此输入图像描述

android dependency-management gradle android-studio android-gradle-plugin

40
推荐指数
1
解决办法
1万
查看次数

Android Studio:编译时在APK META-INF/DEPENDENCIES中复制的重复文件

我从Eclipse导出我的项目并使用此链接中的说明导入到Android Studio:http://developer.android.com/sdk/installing/migrate.html

当我构建时,我有一个错误:

Duplicate files copied in APK META-INF/DEPENDENCIES
Run Code Online (Sandbox Code Playgroud)

搜索后,我找到了一个解决方案:添加

packagingOptions {
    exclude 'META-INF/DEPENDENCIES'
}
Run Code Online (Sandbox Code Playgroud)

进入build.gradle.它的工作原理!

但我不明白为什么我有这个错误以及为什么我必须应用该修复.谁能解释一下?

android meta-inf duplicates android-studio

35
推荐指数
4
解决办法
4万
查看次数

Android Studio:错误:任务':app:dexDebug'的执行失败

我第一次使用Android Studio,导入项目后出现了以下错误(以前这是一个我也有问题的eclipse项目.)

以下是给出的信息:

Error:Execution failed for task ':app:dexDebug'.
> com.android.ide.common.internal.LoggedErrorException: Failed to run command:
    /home/crash-id/Development/SDK/adt-bundle-linux-x86_64-20140702/sdk/build-tools/21.1.2/dx --dex --no-optimize --output /home/crash-id/AndroidstudioProjects/LocalSin/app/build/intermediates/dex/debug --input-list=/home/crash-id/AndroidstudioProjects/LocalSin/app/build/intermediates/tmp/dex/debug/inputList.txt
  Error Code:
    2
  Output:
    UNEXPECTED TOP-LEVEL EXCEPTION:
    com.android.dex.DexException: Multiple dex files define Lcom/google/ads/AdRequest$ErrorCode;
        at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:596)
        at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:554)
        at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:535)
        at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:171)
        at com.android.dx.merge.DexMerger.merge(DexMerger.java:189)
        at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:454)
        at com.android.dx.command.dexer.Main.runMonoDex(Main.java:303)
        at com.android.dx.command.dexer.Main.run(Main.java:246)
        at com.android.dx.command.dexer.Main.main(Main.java:215)
        at com.android.dx.command.Main.main(Main.java:106)

:app:dexDebug
UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dex.DexException: Multiple dex files define Lcom/google/ads/AdRequest$ErrorCode;
    at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:596)
    at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:554)
    at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:535)
    at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:171)
    at com.android.dx.merge.DexMerger.merge(DexMerger.java:189)
    at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:454)
    at com.android.dx.command.dexer.Main.runMonoDex(Main.java:303)
    at com.android.dx.command.dexer.Main.run(Main.java:246)
    at …
Run Code Online (Sandbox Code Playgroud)

android android-build dex android-studio

11
推荐指数
2
解决办法
5万
查看次数

多个dex文件在android studio中定义了Landroid/support/v4 /

我可以integrate (add & work) with many libraries.

但至于ActionBarSherlock图书馆,我有很多问题.

第一期是热门问题Multiple dex files define,

我知道duplicated android-support-v4.jar它的原因,但我现在无法解决这个问题:

Error:Execution failed for task ':fitness:dexDebug'.

Error Code:
2
Output:
UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dex.DexException: Multiple dex files define Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoVersionImpl;
    at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:594)
    at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:552)
    at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:533)
    at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:170)
    at com.android.dx.merge.DexMerger.merge(DexMerger.java:188)
    at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:439)
    at com.android.dx.command.dexer.Main.runMonoDex(Main.java:287)
    at com.android.dx.command.dexer.Main.run(Main.java:230)
    at com.android.dx.command.dexer.Main.main(Main.java:199)
    at com.android.dx.command.Main.main(Main.java:103)
Run Code Online (Sandbox Code Playgroud)

我在同样的错误中遵循了答案.它用于:

dependencies {
    compile('...') {
      exclude module: 'support-v4'
    }

    compile 'com.android.support:support-v4:18.0.+'
}
Run Code Online (Sandbox Code Playgroud)

但我收到第二期:unsupported Gradle …

android android-support-library android-studio build.gradle android-gradle-plugin

7
推荐指数
1
解决办法
2万
查看次数

多个dex文件使用Gradle定义Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat

当我跑步时,./gradlew assembleDebug我得到:

:app:dexDebug FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:dexDebug'.
> com.android.ide.common.internal.LoggedErrorException: Failed to run command:
    /home/grub/Main/android-sdk-linux/build-tools/19.1.0/dx --dex --num-threads=4 --output 
Run Code Online (Sandbox Code Playgroud)

合并类和jar列表:

UNEXPECTED TOP-LEVEL EXCEPTION:
        com.android.dex.DexException: Multiple dex files define Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoVersionImpl;
Run Code Online (Sandbox Code Playgroud)

它与问题非常相似,问题应该在多个support-v4库中.我清理了一下build.gradle:

repositories {
    maven { url "http://dl.bintray.com/populov/maven" }
    mavenCentral()
}

apply plugin: 'android'

android {
    compileSdkVersion 19
    buildToolsVersion '19.1.0'

    defaultConfig {
        minSdkVersion 9
        targetSdkVersion 19
        versionCode 8
        versionName "2.1.17"
    }
    dependencies {
        compile fileTree(dir: 'libs', …
Run Code Online (Sandbox Code Playgroud)

android gradle android-gradle-plugin

7
推荐指数
1
解决办法
2万
查看次数

Android gradle模块具有相同的名称

我正在开发一个使用以下依赖项的Android项目:

    <dependency>
        <groupId>org.glassfish.jersey.core</groupId>
        <artifactId>jersey-client</artifactId>
        <version>2.17</version>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

但是,此依赖关系具有模块javax/inject的2个定义,如gradle依赖关系树中所示:

 +--- org.glassfish.jersey.core:jersey-client:2.17
 |    +--- org.glassfish.jersey.core:jersey-common:2.17
 |    |    +--- org.glassfish.hk2:hk2-api:2.4.0-b10
 |    |    |    +--- javax.inject:javax.inject:1
 |    |    +--- org.glassfish.hk2.external:javax.inject:2.4.0-b10
Run Code Online (Sandbox Code Playgroud)

在尝试运行Android应用程序时,我收到错误:

com.android.dex.DexException: Multiple dex files define L/javax/inject/Inject
Run Code Online (Sandbox Code Playgroud)

我已经尝试排除这些模块中的任何一个,但这不起作用,因为依赖依赖于它们两个来进行方法调用.

有没有其他解决方案来解决这个冲突?

java android gradle

7
推荐指数
1
解决办法
1952
查看次数

Gradle排除或添加库类classes.jar中包含的JAR文件的引用

我在我的项目中包含的库遇到了一些麻烦:一开始它只是一个冲突的依赖性问题,我通过排除 support-v4哪个是共同的共享模块来解决.

问题是其中一个lbsLib-release似乎是.jar在开发人员构建之前在根项目中使用普通文件构建的.

通过运行./gradlew app:dependencies我验证了构建图中没有引用依赖项.

我发现它support-v4嵌入了classes.jar位于:app/build/intermedites/exploded-aar/MyQaaAndroid/lbsLib-release/unspecified/classes.jar/如下图所示:

在此输入图像描述

我不能自己重建项目,因为它不是一个开源的lib,所以有两个问题:

  1. 如果我添加compile 'com.android.support:support-v4:18.0.+'build.gradle一个multiple dex file错误是在编译的时候,因此库引用了两次抛出.

    UNEXPECTED TOP-LEVEL EXCEPTION: com.android.dex.DexException: Multiple dex files define Landroid/support/v4/app/BackStackState;
    at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:596)
    at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:554)
    at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:535)
    at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:171)
    at com.android.dx.merge.DexMerger.merge(DexMerger.java:189)
    at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:454)
    at com.android.dx.command.dexer.Main.runMonoDex(Main.java:303)
    at com.android.dx.command.dexer.Main.run(Main.java:246)
    at com.android.dx.command.dexer.Main.main(Main.java:215)
    at com.android.dx.command.Main.main(Main.java:106)
    
    Run Code Online (Sandbox Code Playgroud)

    `

  2. 如果我删除所有需要support-v4它的库,则会在应用程序运行时抛出缺少的依赖项错误.

所以我想知道是否有可能.jar从构建中排除此文件或使其他libs取决于lbsLib-release嵌入式support-v4 .jar.

compile (project(':lbsLib-release')) {
    exclude module: 'support-v4'
}

compile ('com.sothree.slidinguppanel:library:2.0.4'){ …
Run Code Online (Sandbox Code Playgroud)

android gradle android-gradle-plugin

6
推荐指数
1
解决办法
6900
查看次数