2015-02-11 101 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

相關問題