导入Xerces库时无法构建应用程序(退出值1)

时间:2016-04-27 14:33:29

标签: java android-studio gradle xml-parsing xerces

当我在Xerces库中导入时,我似乎无法构建我的应用程序。由于之前的问题,我已经在使用multidex,因此我知道这一切都已正确设置。

我花了几天时间在线查看并尝试各种版本的Xerces并调整到我的build.gradle但无法解决问题。我已经尝试过清理重建,重新设置Android Studio /我的PC,使用jar直接编译,现在正式提出想法。

以下是我的build.gradle设置:

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.2"

    defaultConfig {
        applicationId "#packageid#"
        minSdkVersion 18
        targetSdkVersion 23
        versionCode 1
        versionName "0.8"
        multiDexEnabled true
    }

    buildTypes {
        debug {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
//    compile fileTree(include: ['*.jar'], dir: 'libs')
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:multidex:1.0.1'
    compile 'com.google.android.gms:play-services:8.4.0'
    compile 'com.android.support:appcompat-v7:23.1.1'
    compile 'com.android.support:support-v4:23.1.1'
    compile 'com.android.support:design:23.1.1'
    compile 'me.dm7.barcodescanner:zbar:1.8.4'
    compile project(':rangebar-1.3')
    compile('com.crashlytics.sdk.android:crashlytics:2.5.5@aar') {
        transitive = true;
    }
    compile 'com.batch.android:batch-sdk:1.5'
    compile 'xerces:xercesImpl:2.11.0'
//    compile files('libs/xercesImpl-2.9.1.jar')
}

我已经扩展了我的应用程序,因此在课堂上使用了以下内容:

@Override
protected void attachBaseContext(Context base) {
    super.attachBaseContext(base);

    MultiDex.install(this);
}

但是,每次我尝试构建时都会遇到以下错误:

Error:Execution failed for task ':app:transformClassesWithMultidexlistForDebug'.
> com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'C:\Program Files\Java\jdk1.7.0_79\bin\java.exe'' finished with non-zero exit value 1

以下是我的gradle构建错误日志的结尾部分:

Reading program jar [C:\Documents\MobileProjects\IA\Android\app\build\intermediates\transforms\jarMerging\debug\jars\1\1f\combined.jar]
Reading library jar [C:\AppData\Local\Android\sdk\build-tools\23.0.2\lib\shrinkedAndroid.jar]
Preparing output jar [C:\Documents\MobileProjects\IA\Android\app\build\intermediates\multi-dex\debug\componentClasses.jar]
  Copying resources from program jar [C:\Documents\MobileProjects\IA\Android\app\build\intermediates\transforms\jarMerging\debug\jars\1\1f\combined.jar]
:app:transformClassesWithMultidexlistForDebug FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:transformClassesWithMultidexlistForDebug'.
> com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'C:\Program Files\Java\jdk1.7.0_79\bin\java.exe'' finished with non-zero exit value 1

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

2 个答案:

答案 0 :(得分:3)

正如您尝试过清理重建,重新设置Android Studio /我的PC,直接使用jar进行编译,现在我想给您一些建议。希望它可以帮到你。

在提出建议之前,我想告诉您先阅读本文:Configuring Your App for Multidex with Gradle。然后你可以按照建议。

建议-1:

对于gradle bulid,必须遵循

         dev utilizes minSDKVersion = 21 to allow the Android gradle plugin
         to pre-dex each module and produce an APK that can be tested on
         Android Lollipop without time consuming dex merging processes.

您已将minSdkVersion用作"minSdkVersion 18"。所以请更新它。

建议-2:

注意:对于Gradle版本低于1.1的Android插件,您需要为multidex-instrumentation添加以下依赖项:

dependencies {
    androidTestCompile('com.android.support:multidex-instrumentation:1.0.1') {
         exclude group: 'com.android.support', module: 'multidex'
    }
}

注意:目前不支持使用multidex创建测试APK。

建议-3:

您的输入jar包含多个具有相同名称的资源文件。 ProGuard像往常一样继续复制资源文件,跳过以前使用过的名称的所有文件。此外,警告可能表示某些问题,因此建议删除重复项。一种方便的方法是在输入罐上指定过滤器。没有选项可以关闭这些警告。

  

标准的Android构建过程会自动指定输入   罐子给你。可能没有一种简单的方法可以过滤它们以进行删除   这些警告。您可以手动删除重复的资源文件   来自输入和库。

ProGuard可能会在遇到解析错误或I / O错误或更严重的警告时终止:

建议-4:

问题RAM。我在Messages Gradle Build

中有类似的消息

错误:任务':app:dexDebug'执行失败。

  

com.android.ide.common.process.ProcessException:org.gradle.process.internal.ExecException:进程'命令'C:\ Program Files \ Java \ jdk1.8.0_45 \ bin \ java.exe''已完成非零退出值1   我的笔记本电脑上没有OS Windows 8.1的免费RAM。我关闭了一些我不需要的程序。在那之后,我有更多的免费RAM,我的项目是在android studio中构建的。

建议-5:

有些人建议关闭Android Studio并杀死java进程,这个进程非常大(1.2 GB)。然后你可以用gradle运行。它会有所帮助。

建议-6:

安装最新版本的构建工具。调整build.gradle以使用

`buildToolsVersion "22.0.1"`

它有助于某些情况。

答案 1 :(得分:2)

我从build.gradle中看到您的项目似乎包含不同的模块(SELECT CASE WHEN SchemaName.TableName.BitFieldName = 'true' THEN 1 ELSE 0 END AS 'bit Value' FROM SchemaName.TableName )。

我在我的多模块项目中遇到了同样的问题。根本原因是同一个库明确包含在多个模块中。

假设您的项目具有以下结构:

compile project(':rangebar-1.3')

在这个配置中,我在尝试编译Module1时遇到了同样的错误。解决方案是重新配置模块以仅在一个地方包含Lib.jar,例如:

Project
+-Module1 (includes Module2, Module3)
+-Module2 (includes Lib.jar)
+-Module3 (includes Lib.jar)