Android Gradle build release EXCEPTION FROM SIMULATION 错误

Android Gradle build release EXCEPTION FROM SIMULATION error

在我的项目中,我决定包含 Appsee 库,但是一旦我这样做了,我在尝试 运行 gradle assembleRelease 和构建时开始收到 Exception From Simulation 错误我的应用程序的发布版本。这是错误日志:

Error:Execution failed for task ':startActivity:dexRelease'.
> com.android.ide.common.internal.LoggedErrorException: Failed to run command:
    /Users/hardartcore/Library/Android/sdk/build-tools/21.1.2/dx -JXmx4g --dex --output /Users/hardartcore/Desktop/sworkspace/Work/startActivity/build/intermediates/dex/release --input-list=/Users/hardartcore/Desktop/sworkspace/Work/startActivity/build/intermediates/tmp/dex/release/inputList.txt
  Error Code:
    1
  Output:
    EXCEPTION FROM SIMULATION:
    expected type int but found cfz
    ...at bytecode offset 0000000d
    ...while working on block 000d
    ...while working on method <clinit>:()V
    ...while processing <clinit> ()V
    ...while processing cfz.class
    1 error; aborting

我在 google 中做了一些研究,但没有看到任何关于这种错误的解释以及为什么会发生这种情况。如果我删除 AppSee jar 库,一切正常,我可以构建我的应用程序。

还有我的 build.gradle 文件:

buildscript {
    repositories {
        maven { url 'http://download.crashlytics.com/maven' }
    }

    dependencies {
        classpath 'com.crashlytics.tools.gradle:crashlytics-gradle:1.14.7'
    }
}

apply plugin: 'com.android.application'

apply plugin: 'crashlytics'

repositories {
    maven {
        url 'http://download.crashlytics.com/maven'
    }
}

android {

    signingConfigs {
        release_config {
            storeFile file('****')
            keyAlias '*****'
            keyPassword '*****'
            storePassword '*****'
        }
    }

    compileSdkVersion 21
    buildToolsVersion "21.1.2"

    defaultConfig {
        applicationId "com.startactivity"
        minSdkVersion 14
        targetSdkVersion 21
        renderscriptTargetApi 20
        renderscriptSupportModeEnabled true
    }

    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-project.txt'
            signingConfig signingConfigs.release_config
            buildConfigField "boolean", "USE_CRASHLYTICS", "true"
            ext.enableCrashlytics = true
        }
        debug {
            debuggable true
            buildConfigField "boolean", "USE_CRASHLYTICS", "false"
            ext.enableCrashlytics = false
        }
    }

    dexOptions {
        javaMaxHeapSize "4g"
        preDexLibraries = false
    }
}

dependencies {
    compile project(':nineOldAndroids')
    compile project(':robotoTextView')
    compile project(':roundedImageView')
    compile project(':securePreferences')
    compile project(':viewPagerIndicator')
    compile project(':facebookSDK')
    compile project(':styledDialogs')
    compile project(':swipeListView')
    compile project(':memorizingActivity')
    compile project(':photoView')
    compile project(':apptentiveandroidsdk')
    compile project(':floatingActionButton')
    compile 'com.android.support:support-v4:21.0.3'
    compile 'com.google.code.gson:gson:2.3'
    compile files('libs/asmack-android-8-4.0.4-SNAPSHOT-2014-08-20.jar')
    compile files('libs/crittercism_v4_5_1_sdkonly.jar')
    compile files('libs/logentries-android-2.1.2.jar')
    compile files('libs/okhttp-2.1.0.jar')
    compile files('libs/okhttp-urlconnection-2.1.0.jar')
    compile files('libs/okio-1.2.0.jar')
    compile files('libs/org.xbill.dns_2.1.6.jar')
    compile files('libs/picasso-2.4.0.jar')
    compile files('libs/retrofit-1.9.0.jar')
    compile 'com.crashlytics.android:crashlytics:1.1.13'
    compile files('libs/appsee.jar') // THIS CAUSE THE ERROR
    // Google Play Services separated APIs
    compile 'com.google.android.gms:play-services-base:6.5.87'
    compile 'com.google.android.gms:play-services-maps:6.5.87'
    compile 'com.google.android.gms:play-services-location:6.5.87'
    compile 'com.android.support:appcompat-v7:21.0.3'
}

P.S。这仅在我构建发布版本时发生,在调试模式下它不会发生。

提前致谢!

因此,经过一些研究并联系 Appsee 支持,我找到了解决我自己问题的方法。是的,这是一个问题,因为 appsee jar,但主要原因是这个 jar 使用的 org.jcodec 包。因此,在您的 proguard 文件中包含这些设置应该可以解决此问题:

# AppSee integration
-optimizations !code/*,!field/*,!class/merging/*,!method/*
-keep class com.appsee.** { *; }
-keep class org.jcodec.** { *; }
-dontwarn com.appsee.**

希望这对其他人有帮助!