【问题标题】:Android Studio Gradle failing during buildAndroid Studio Gradle 在构建期间失败
【发布时间】:2017-07-12 18:23:00
【问题描述】:

这是我的问题场景:

我无法在 android studio 中构建和运行我的应用程序。在安装 apk 之前似乎失败并出现以下错误。但是,当我使用 gradle 包装器通过命令行构建应用程序时,事情进展顺利。显然这并不理想,因为其他团队成员需要使用该项目,并且 android studio 的 IDE UI 应该足够了。

当我在 Android Studio 中构建和运行我的应用时,我在构建步骤中遇到错误:

transformClassesAndResourcesWithProguardForRelease FAILED 

path may not be null or empty: path='null'

但是当我调用命令时:

./gradlew cleanRelease assembleRelease installRelease,

这会在设备上构建和安装工作版本。

我也可以 Build->Generate Signed Apk 并且这行得通。

因此,在 android studio 上按下运行按钮 (>) 是唯一不起作用的事情......奇怪的是,当我只指定一个 abi 时它可以工作,但是当我将三个都放在它上面时它不起作用。

我的问题是:

为什么会出现这条消息??什么路径是空的??以及如何解决这个问题。

apply plugin: 'com.android.application'

////Grab location of opencv sdk
String systemHome = System.getenv('HOME');
File libDir = new File(systemHome + "/Library/Android/sdk/OpenCV-android-sdk");

//If home directory exists choose this path, otherwise we're doing CI 
//with jenkins so we can hardcode this ...
String opencvSdkPath =
    (libDir != null && libDir.isDirectory()) ?
            systemHome + "/Library/Android/sdk/OpenCV-android-sdk/sdk/native/libs"
            :
            "/Users/userx/Library/Android/OpenCV-android-sdk/sdk/native/libs";

println("Look for opencv within " + opencvSdkPath)

android {
signingConfigs {
    XSigningCredentials {
        keyAlias 'asdfsdf'
        keyPassword 'asdfasdf'
        storeFile file('asdfsdf.jks')
        storePassword 'asdfsdf'
    }
}
compileSdkVersion 25
buildToolsVersion '25.0.2'
//Give the default configurations for gradles build
defaultConfig {
    //Package name
    applicationId "a.b.c"

    //Minimum working sdk
    minSdkVersion 19

    //Target sdk with support
    targetSdkVersion 25

    //Actual version ID
    versionCode vrsCode as Integer

    //Google play visible version string
    versionName vrsCustomerFacingCode

    multiDexEnabled true

    ndk {
        abiFilters 'armeabi', 'armeabi-v7a', 'x86'
    }
    externalNativeBuild {
        cmake {
            cppFlags "-std=c++11" ,
                    "-latomic",
                    "-DASSIMP_BUILD_NO_X_IMPORTER",
                    "-DASSIMP_BUILD_NO_3DS_IMPORTER",
                    "-DASSIMP_BUILD_NO_MD3_IMPORTER",
                    "-DASSIMP_BUILD_NO_MDL_IMPORTER",
                    "-DASSIMP_BUILD_NO_MD2_IMPORTER",
                    "-DASSIMP_BUILD_NO_PLY_IMPORTER",
                    "-DASSIMP_BUILD_NO_ASE_IMPORTER",
                    "-DASSIMP_BUILD_NO_HMP_IMPORTER",
                    "-DASSIMP_BUILD_NO_SMD_IMPORTER",
                    "-DASSIMP_BUILD_NO_MDC_IMPORTER",
                    "-DASSIMP_BUILD_NO_MD5_IMPORTER",
                    "-DASSIMP_BUILD_NO_STL_IMPORTER",
                    "-DASSIMP_BUILD_NO_LWO_IMPORTER",
                    "-DASSIMP_BUILD_NO_DXF_IMPORTER",
                    "-DASSIMP_BUILD_NO_NFF_IMPORTER",
                    "-DASSIMP_BUILD_NO_RAW_IMPORTER",
                    "-DASSIMP_BUILD_NO_OFF_IMPORTER",
                    "-DASSIMP_BUILD_NO_AC_IMPORTER",
                    "-DASSIMP_BUILD_NO_BVH_IMPORTER",
                    "-DASSIMP_BUILD_NO_IRRMESH_IMPORTER",
                    "-DASSIMP_BUILD_NO_IRR_IMPORTER",
                    "-DASSIMP_BUILD_NO_Q3D_IMPORTER",
                    "-DASSIMP_BUILD_NO_B3D_IMPORTER",
                    "-DASSIMP_BUILD_NO_COLLADA_IMPORTER",
                    "-DASSIMP_BUILD_NO_TERRAGEN_IMPORTER",
                    "-DASSIMP_BUILD_NO_CSM_IMPORTER",
                    "-DASSIMP_BUILD_NO_3D_IMPORTER",
                    "-DASSIMP_BUILD_NO_LWS_IMPORTER",
                    "-DASSIMP_BUILD_NO_OGRE_IMPORTER",
                    "-DASSIMP_BUILD_NO_MS3D_IMPORTER",
                    "-DASSIMP_BUILD_NO_COB_IMPORTER",
                    "-DASSIMP_BUILD_NO_Q3BSP_IMPORTER",
                    "-DASSIMP_BUILD_NO_NDO_IMPORTER",
                    "-DASSIMP_BUILD_NO_IFC_IMPORTER",
                    "-DASSIMP_BUILD_NO_XGL_IMPORTER",
                    "-DASSIMP_BUILD_NO_FBX_IMPORTER",
                    "-DASSIMP_BUILD_NO_C4D_IMPORTER",
                    "-DASSIMP_BUILD_NO_OPENGEX_IMPORTER",
                    "-DASSIMP_BUILD_NO_ASSBIN_IMPORTER",
                    "-DASSIMP_BUILD_NO_BLEND_IMPORTER",
                    "-DASSIMP_BUILD_NO_GEO_IMPORTER",
                    "-DANDROID -fPIC",
                    "-DANDROID -fsigned-char",
                    "-mstackrealign",
                    "-O2",
                    "-fexceptions",
                    "-frtti"

            cFlags "-latomic",
                    "-DASSIMP_BUILD_NO_X_IMPORTER",
                    "-DASSIMP_BUILD_NO_3DS_IMPORTER",
                    "-DASSIMP_BUILD_NO_MD3_IMPORTER",
                    "-DASSIMP_BUILD_NO_MDL_IMPORTER",
                    "-DASSIMP_BUILD_NO_MD2_IMPORTER",
                    "-DASSIMP_BUILD_NO_PLY_IMPORTER",
                    "-DASSIMP_BUILD_NO_ASE_IMPORTER",
                    "-DASSIMP_BUILD_NO_HMP_IMPORTER",
                    "-DASSIMP_BUILD_NO_SMD_IMPORTER",
                    "-DASSIMP_BUILD_NO_MDC_IMPORTER",
                    "-DASSIMP_BUILD_NO_MD5_IMPORTER",
                    "-DASSIMP_BUILD_NO_STL_IMPORTER",
                    "-DASSIMP_BUILD_NO_LWO_IMPORTER",
                    "-DASSIMP_BUILD_NO_DXF_IMPORTER",
                    "-DASSIMP_BUILD_NO_NFF_IMPORTER",
                    "-DASSIMP_BUILD_NO_RAW_IMPORTER",
                    "-DASSIMP_BUILD_NO_OFF_IMPORTER",
                    "-DASSIMP_BUILD_NO_AC_IMPORTER",
                    "-DASSIMP_BUILD_NO_BVH_IMPORTER",
                    "-DASSIMP_BUILD_NO_IRRMESH_IMPORTER",
                    "-DASSIMP_BUILD_NO_IRR_IMPORTER",
                    "-DASSIMP_BUILD_NO_Q3D_IMPORTER",
                    "-DASSIMP_BUILD_NO_B3D_IMPORTER",
                    "-DASSIMP_BUILD_NO_COLLADA_IMPORTER",
                    "-DASSIMP_BUILD_NO_TERRAGEN_IMPORTER",
                    "-DASSIMP_BUILD_NO_CSM_IMPORTER",
                    "-DASSIMP_BUILD_NO_3D_IMPORTER",
                    "-DASSIMP_BUILD_NO_LWS_IMPORTER",
                    "-DASSIMP_BUILD_NO_OGRE_IMPORTER",
                    "-DASSIMP_BUILD_NO_MS3D_IMPORTER",
                    "-DASSIMP_BUILD_NO_COB_IMPORTER",
                    "-DASSIMP_BUILD_NO_Q3BSP_IMPORTER",
                    "-DASSIMP_BUILD_NO_NDO_IMPORTER",
                    "-DASSIMP_BUILD_NO_IFC_IMPORTER",
                    "-DASSIMP_BUILD_NO_XGL_IMPORTER",
                    "-DASSIMP_BUILD_NO_FBX_IMPORTER",
                    "-DASSIMP_BUILD_NO_C4D_IMPORTER",
                    "-DASSIMP_BUILD_NO_OPENGEX_IMPORTER",
                    "-DASSIMP_BUILD_NO_ASSBIN_IMPORTER",
                    "-DASSIMP_BUILD_NO_BLEND_IMPORTER",
                    "-DASSIMP_BUILD_NO_GEO_IMPORTER",
                    "-DANDROID -fPIC",
                    "-DANDROID -fsigned-char",
                    "-mstackrealign",
                    "-O2",
                    "-fexceptions",
                    "-frtti"

            arguments "-DANDROID_STL=gnustl_shared"

        }
    }
}
splits {

    // Configures screen ABI split settings

    abi {

        // Enable ABI APK splits
        enable true

        // Resets the list of ABIs that Gradle should create APKs for to none
        reset()

        // Specifies a list of ABIs that Gradle should create APKs for
        include "armeabi", "armeabi-v7a", "x86"

        // Specify that we do not want to also generate a universal APK that includes all ABIs
        universalApk false
    }

}
buildTypes {
    release {
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        signingConfig signingConfigs.XSigningCredentials
        minifyEnabled true
    }
    debug {
        debuggable true
        minifyEnabled false
    }
}
packagingOptions {
    exclude 'META-INF/services/javax.annotation.processing.Processor'
    pickFirst 'META-INF/maven/org.bytedeco.javacpp-presets/opencv/pom.properties'
    pickFirst 'META-INF/maven/org.bytedeco.javacpp-presets/opencv/pom.xml'
    pickFirst 'META-INF/maven/org.bytedeco.javacpp-presets/ffmpeg/pom.properties'
    pickFirst 'META-INF/maven/org.bytedeco.javacpp-presets/ffmpeg/pom.xml'
}
dexOptions {
    javaMaxHeapSize "2g"
}
externalNativeBuild {
    cmake {
        path 'CMakeLists.txt'
    }
}
sourceSets {
    main {
        jniLibs.srcDirs opencvSdkPath, 'src/main/jni/ffmpeg'
    }
    }
}
// map for the version code that gives each ABI a value
ext.versionCodes = ['armeabi': 1, 'armeabi-v7a': 2, 'x86': 3]

// For each APK output variant, override versionCode with an ABI value 
schema
android.applicationVariants.all { variant ->
    // assign different version code for each output
    variant.outputs.each { output ->
        output.versionCodeOverride =((project.versionCodes.get(output.getFilter(com.android.build.OutputFile.ABI)) * 1000000)
                    + android.defaultConfig.versionCode)
}
}

repositories {
    mavenCentral()
}

configurations {
all*.exclude group: 'org.bytedeco', module: 'javacpp-presets'
}

dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile project(':openCVLibrary310')
compile 'org.bytedeco.javacpp-presets:opencv:3.1.0-1.2'
compile 'org.bytedeco.javacpp-presets:ffmpeg:3.0.2-1.2'
compile 'com.squareup.okhttp3:okhttp:3.5.0'
compile 'org.bytedeco.javacpp-presets:opencv:3.1.0-1.2'
compile 'org.bytedeco.javacpp-presets:ffmpeg:3.0.2-1.2'
compile 'com.squareup.okhttp3:okhttp:3.5.0'
compile 'org.bytedeco:javacv:1.2'
compile 'org.bytedeco:javacpp:1.2.4'
compile 'com.android.support:appcompat-v7:25.3.1'
compile 'com.android.support:design:25.3.1'
compile 'com.github.bumptech.glide:glide:3.7.0'
compile 'com.android.support:support-v4:25.3.1'
compile 'com.facebook.android:facebook-android-sdk:[4,5)'
compile 'com.android.support:multidex:1.0.1'
compile 'com.google.firebase:firebase-core:11.0.2'
compile 'com.google.firebase:firebase-crash:11.0.2'
compile 'com.google.firebase:firebase-auth:11.0.2'
compile 'com.google.android.gms:play-services-auth:11.0.2'
compile 'com.android.support.constraint:constraint-layout:1.0.0-beta4'
compile 'com.desk:sdk:1.3.1'
compile 'se.akerfeldt:okhttp-signpost:1.1.0'
compile 'oauth.signpost:signpost-core:1.2.1.2'
compile 'com.jakewharton.timber:timber:4.5.1'
compile 'org.slf4j:slf4j-api:1.7.21'
compile 'com.github.tony19:logback-android-core:1.1.1-6'
compile 'com.github.tony19:logback-android-classic:1.1.1-6'
testCompile 'junit:junit:4.12'
}

apply plugin: 'com.google.gms.google-services'

【问题讨论】:

  • 这一行 -> with jenkins 这样我们就可以对其进行硬编码 ... 我猜应该注释掉
  • 是的.. 对此感到抱歉
  • 我不确定你想在这里做什么:/ 稍微解释一下会有所帮助
  • 当然..我稍微编辑了这个问题..基本上我无法使用android studio运行应用程序..我已经附加了我的gradle.build文件以及错误......不知道如何解决这个问题,需要帮助!
  • 您是否尝试在buildTypes 中将minifyEnabled 设置为false-->release?或useProguard false

标签: android android-gradle-plugin


【解决方案1】:

要调试为什么 Gradle 任务之一在按下运行按钮时失败,您可以在 Android Studio -> 设置 -> 构建、执行、部署 -> 编译器中启用命令行选项。将命令行选项设置为 --stacktrace --debug。按 Run 按钮并在 Gradle Console 窗口中检查输出。

您可能在三个 ABI 之间存在某种依赖关系,这些依赖关系会被重置并影响其他 ABI,但如果没有更多日志就很难知道。

【讨论】:

    【解决方案2】:

    我没有评论的声誉。 我想知道您是否使用 Instant Run?尝试构建发布 apk 时不要启用即时运行

    点击此处了解更多关于Android studio - Instant run & Proguard

    【讨论】:

    • 即时运行已关闭.. 我发现使用拆分 apk 时很奇怪
    猜你喜欢
    • 2020-10-16
    • 1970-01-01
    • 2017-05-29
    • 2013-06-13
    • 2015-02-06
    • 1970-01-01
    • 1970-01-01
    • 2016-02-04
    • 1970-01-01
    相关资源
    最近更新 更多