集成AppDynamics时出错:transformClassesWithMultidexlistForLiveDebug

时间:2017-01-30 10:00:03

标签: android appdynamics android-studio-2.2.3

我正在尝试将应用程序性能监控工具与我的Android应用程序集成,我的gradle无法说

Error:Execution failed for task ':app:transformClassesWithMultidexlistForLiveDebug'.
> java.util.NoSuchElementException (no error message)

以下是我的gradle root gradle文件

// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.2.3'
        classpath 'com.appdynamics:appdynamics-gradle-plugin:4.+'
    }
}

allprojects {
    repositories {
        jcenter()
    }
}

这是我的应用程序的gradle文件,

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.3"


    defaultConfig {
        applicationId "com.app.abc"
        minSdkVersion 14
        targetSdkVersion 23
        versionCode 1
        versionName "1"
        multiDexEnabled true
    }

    dexOptions {
        preDexLibraries = false
        javaMaxHeapSize "4g"
    }

    signingConfigs {
        config {
            keyAlias 'xxx'
            keyPassword 'xxx'
            storeFile file('xxx')
            storePassword 'xxx'
        }
    }

    buildTypes {
        release {
            minifyEnabled false
        }
        debug {
            debuggable true
            minifyEnabled false
        }
    }

    afterEvaluate {
        tasks.matching {
            it.name.startsWith('dex')
        }.each { dx ->
            if (dx.additionalParameters == null) {
                dx.additionalParameters = []
            }
            dx.additionalParameters += "--set-max-idx-number=55000" 
        }
    }

    packagingOptions {
        exclude 'META-INF/DEPENDENCIES.txt'
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/NOTICE.txt'
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/DEPENDENCIES'
        exclude 'META-INF/notice.txt'
        exclude 'META-INF/license.txt'
        exclude 'META-INF/dependencies.txt'
        exclude 'META-INF/LGPL2.1'
    }

    lintOptions {
        checkReleaseBuilds false
        // Or, if you prefer, you can continue to check for errors in release builds,
        // but continue the build even when errors are found:
        abortOnError false
    }

    sourceSets { main { assets.srcDirs = ['src/main/assets', 'src/main/assets/'] } }
}

dependencies {
    ...
    compile 'com.appdynamics:appdynamics-runtime:4.+'
}

我已经启用了Multidex标志,但在运行应用程序时它仍然存在问题。

而且,我的应用程序类

也有
 @Override
    protected void attachBaseContext(Context base) {
        super.attachBaseContext(base);
        MultiDex.install(this);
    }

1 个答案:

答案 0 :(得分:0)

我已尝试添加多个dex而不提供每个dex文件的任何最小或最大方法计数。我已经尝试过简单地添加multidex并且能够构建。并且是的!我也可以构建应用程序。

重大变化发生在afterEvaluate& incremental true中的dexoption

build.gradle

android {
    compileSdkVersion 23
    buildToolsVersion '23.0.3'    
    defaultConfig {
        minSdkVersion 14
        targetSdkVersion 18
        renderscriptTargetApi 18
        //renderscriptSupportModeEnabled true
        // To enable MultiPle dex
        multiDexEnabled true
    }
    dexOptions {
        // Option to handle multi dex
        incremental true
        javaMaxHeapSize "4g" // try with 2g as it worked for my case its working in both cases
        // here 4g i got this thing from https://groups.google.com/forum/#!topic/adt-dev/P_TLBTyFWVY
    }
    packagingOptions {

        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/DEPENDENCIES'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/NOTICE'

    }
    signingConfigs {
        Release {
            keyAlias 'helloworld'
            keyPassword 'helloworld'
            storeFile file('../helloworld')
            storePassword 'helloworld'
        }
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'),
                    'proguard-project.txt'
        }
        debug {
            signingConfig signingConfigs.Release
        }
    }
}


dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'

      compile 'com.android.support:multidex:1.0.1'
    compile 'com.android.support:appcompat-v7:23.3.0'
    compile 'com.android.support:design:23.3.0'

    compile 'com.google.android.gms:play-services-maps:8.4.0'
    compile 'com.google.android.gms:play-services-ads:8.4.0'
    compile 'com.google.android.gms:play-services-analytics:8.4.0'
    compile 'com.google.code.gson:gson:2.6'    
    compile 'com.github.bumptech.glide:glide:3.7.0'
    compile 'com.github.bumptech.glide:okhttp3-integration:1.4.0@aar'
    compile 'com.squareup.okhttp3:okhttp:3.2.0'    
    compile 'com.appdynamics:appdynamics-runtime:4.+'
}
afterEvaluate {
    tasks.matching {
        it.name.startsWith('dex')
    }.each { dx ->
        if (dx.additionalParameters == null) {
            dx.additionalParameters = []
        }
        dx.additionalParameters += '--multi-dex' // enable multidex without giving minimum or maximum limit
    }
}

应用程序的父级gradle

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.2.3'
        classpath 'com.appdynamics:appdynamics-gradle-plugin:4.+'
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

如果上面的问题仍有问题,请检查您的家属层级,如果添加了任何其他额外的家属(根据您的build.gradle packagingOptions,那里应该有其他一些家属。)不确定但可能由于内部库冲突,它不再继续创建dexfile或build。

如果有的话,请告诉我