2015-02-11 96 views
4

在我的项目中,我决定包含Appsee库,但是一旦我尝试运行gradle assembleRelease并构建发布版本的应用程序时,我开始收到Exception From Simulation错误。以下是错误日志:Android Gradle build release 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 

我没有在谷歌的一些研究,但并没有看到这种类型的错误,为什么这种情况正在发生任何解释。如果我删除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' 
} 

附:只有当我构建发行版时,才会发生这种情况,在调试模式下它不会发生。

在此先感谢!

+0

我只能使用proguard-android.txt工作(基本上关闭ProGuard的所有优化)。仍然来回AppSee支持替代解决方案... – Yenchi 2015-02-24 23:35:28

+1

我已经与他们讨论过这个问题,他们没有找到任何解决方案,但我现在也没有,但我不能关闭所有优化ProGuard的。 – hardartcore 2015-02-25 07:29:14

回答

5

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

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

希望这可以帮助别人!

+1

我有同样的问题,我解决了你的答案,并且还手动将我的proguard版本升级到5.2.1 – Racker 2015-03-24 11:31:44

+0

您实际上可以在不关闭优化的情况下执行keep class部分。唯一的缺点是只需要AGES即可运行proguard! – Yenchi 2015-03-26 23:56:29

相关问题