2016-04-27 6 views
2

私のアプリを直接コンパイルすると、すべてのデバイスで動作します。しかし、私はファブリックを介してビルドを行い、右の私のアプリを起動した後、私はこのクラッシュを得たファブリックベータ版アプリから私のアプリをインストールするとき:Fabric Betaからアプリをインストールした後のjava.lang.NoClassDefFoundError

java.lang.NoClassDefFoundError: com.android.tools.fd.runtime.AppInfo 
    at com.android.tools.fd.runtime.BootstrapApplication.attachBaseContext(BootstrapApplication.java:229) 
    at android.app.Application.attach(Application.java:201) 
    at android.app.Instrumentation.newApplication(Instrumentation.java:998) 
    at android.app.Instrumentation.newApplication(Instrumentation.java:982) 
    at android.app.LoadedApk.makeApplication(LoadedApk.java:502) 
    at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4720) 
    at android.app.ActivityThread.access$1500(ActivityThread.java:166) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1343) 
    at android.os.Handler.dispatchMessage(Handler.java:102) 
    at android.os.Looper.loop(Looper.java:136) 
    at android.app.ActivityThread.main(ActivityThread.java:5584) 
    at java.lang.reflect.Method.invokeNative(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:515) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1268) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084) 
    at dalvik.system.NativeStart.main(Native Method) 

これが唯一のデバイスバージョン4.4以前で発生します。私はまた、thisに関連する問題を抱えていました。私が得たクラッシュは関連していると思いますか?

これは私のプロジェクトのbuild.gradleです:

buildscript { 
    repositories { 
     jcenter() 
     maven { url 'https://maven.fabric.io/public' } 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:2.0.0' 
     classpath 'io.fabric.tools:gradle:1.+' 
     // NOTE: Do not place your application dependencies here; they belong 
     // in the individual module build.gradle files 
    } 
} 

allprojects { 
    repositories { 
     jcenter() 
    } 
} 

task clean(type: Delete) { 
    delete rootProject.buildDir 
} 

、これが私のアプリのbuild.gradleです:

apply plugin: 'com.android.application' 
apply plugin: 'io.fabric' 
... 
buildscript { 
    repositories { 
     jcenter() 
     mavenCentral() 
     maven { url 'https://maven.fabric.io/public' } 
    } 
    dependencies { 
     classpath 'io.fabric.tools:gradle:1.+' 
    } 
} 

repositories { 
    mavenCentral() 
    maven { url 'https://maven.fabric.io/public' } 
} 

答えて

8

Androidスタジオバージョン2.0以上を使用している場合は、即時実行を無効にする&もう一度ビルドしてください。

インスタント・ランは、コードのホット・スワップを試みます。これにより、アプリケーションクラスが移動されます。私はコンパイルして、それらの携帯電話に直接アプリを実行すると

+0

私のために働いた:) – LeonardoSibela

+0

これは投稿された質問とは何か関係がありません。 –

+0

こんにちは、@EthanHolshouser即時実行はその時点で少しバグがあり、ビルドはインクリメンタルビルドを適切に生成していませんでした。実際に開発時間を節約するには良いツールです。 インスタントランの詳細はこちら:https://medium.com/google-developers/instant-run-how-does-it-work-294a1633367f – NAUSHAD

0

のNoClassDefFoundError - 通常問題をmultidexに関連しています。この回答を確認してください:Multidex

+0

「インスタント実行を有効にする」 ファイル]> [設定]> [ビルドし、実行、配備>インスタントファイル名を指定して実行>のチェックを外しにインスタント実行Go]を無効にするには

私はこのエラーを受け取るべきか? – tufekoi

+0

@タフ私は確かではない、多分ファブリックビルドはいくつかのコード(ライブラリ)を追加し、あなたは64kの限界を超えている。両方のapkファイルに対してdex-method-countスクリプトを実行して結果を比較しようとすることができます。とにかく私は前に上記の修正を試みるでしょう、あなたのコードをmultidexで調整するのに2分しかかかりません。 – 3mpty

+0

はい、私はそれをしましたが、アプリはまだクラッシュします – tufekoi

関連する問題