2016-05-09 13 views
1

ああ私はこのエラーを嫌っています。アプリ:dexDebug - 予期しないトップレベル例外 - 非同期タスク

私は恐ろしいdexDebugエラーを表示していますが、今回はどのように修正するかわかりません。

正確なエラーは次のとおりです。

Information:Gradle tasks [:app:assembleDebug] 
:app:preBuild UP-TO-DATE 
:app:preDebugBuild UP-TO-DATE 
:app:checkDebugManifest 
:app:preReleaseBuild UP-TO-DATE 
:app:prepareComAndroidSupportAppcompatV72221Library UP-TO-DATE 
:app:prepareComAndroidSupportSupportV42300Library UP-TO-DATE 
:app:prepareDebugDependencies 
:app:compileDebugAidl UP-TO-DATE 
:app:compileDebugRenderscript UP-TO-DATE 
:app:generateDebugBuildConfig UP-TO-DATE 
:app:generateDebugAssets UP-TO-DATE 
:app:mergeDebugAssets UP-TO-DATE 
:app:generateDebugResValues UP-TO-DATE 
:app:generateDebugResources UP-TO-DATE 
:app:mergeDebugResources UP-TO-DATE 
:app:processDebugManifest UP-TO-DATE 
:app:processDebugResources UP-TO-DATE 
:app:generateDebugSources UP-TO-DATE 
:app:processDebugJavaRes UP-TO-DATE 
:app:compileDebugJavaWithJavac 
Note: Some input files use or override a deprecated API. 
Note: Recompile with -Xlint:deprecation for details. 
:app:compileDebugNdk UP-TO-DATE 
:app:compileDebugSources 
:app:preDexDebug 
:app:dexDebug 
UNEXPECTED TOP-LEVEL EXCEPTION: 
com.android.dex.util.ExceptionWithContext 
    at com.android.dex.util.ExceptionWithContext.withContext(ExceptionWithContext.java:45) 
    at com.android.dx.dex.cf.CfTranslator.processMethods(CfTranslator.java:369) 
    at com.android.dx.dex.cf.CfTranslator.translate0(CfTranslator.java:137) 
    at com.android.dx.dex.cf.CfTranslator.translate(CfTranslator.java:93) 
    at com.android.dx.command.dexer.Main.processClass(Main.java:729) 
    at com.android.dx.command.dexer.Main.processFileBytes(Main.java:673) 
    at com.android.dx.command.dexer.Main.access$300(Main.java:83) 
    at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:602) 
    at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:170) 
    at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:229) 
    at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158) 
    at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:229) 
    at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158) 
    at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:229) 
    at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158) 
    at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:229) 
    at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158) 
    at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:229) 
    at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158) 
    at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:144) 
    at com.android.dx.command.dexer.Main.processOne(Main.java:632) 
    at com.android.dx.command.dexer.Main.processAllFiles(Main.java:510) 
    at com.android.dx.command.dexer.Main.runMonoDex(Main.java:280) 
    at com.android.dx.command.dexer.Main.run(Main.java:246) 
    at com.android.dx.command.dexer.Main.main(Main.java:215) 
    at com.android.dx.command.Main.main(Main.java:106) 
Caused by: java.lang.NullPointerException 
    at com.android.dx.cf.code.ConcreteMethod.<init>(ConcreteMethod.java:87) 
    at com.android.dx.cf.code.ConcreteMethod.<init>(ConcreteMethod.java:75) 
    at com.android.dx.dex.cf.CfTranslator.processMethods(CfTranslator.java:271) 
    ... 24 more 
...while processing <init> (Lcom/appzylabs/pratik/dailydeals/WebFragment;)V 
...while processing com/appzylabs/pratik/dailydeals/WebFragment$1.class 
1 error; aborting 
Error:Execution failed for task ':app:dexDebug'. 
> com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'C:\Program Files\Java\jdk1.7.0_71\bin\java.exe'' finished with non-zero exit value 1 
Information:BUILD FAILED 
Information:Total time: 16.398 secs 
Information:1 error 
Information:0 warnings 
Information:See complete output in console 

私は2つだけの依存関係と、以下のようにかなりきれいapp.gradleを持っている:

ここ
apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 22 
    buildToolsVersion "22.0.1" 

    defaultConfig { 
     applicationId "com.appzylabs.pratik.dailydeals" 
     minSdkVersion 8 
     targetSdkVersion 22 
     versionCode 1 
     versionName "1.0" 

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

dependencies { 
    compile fileTree(include: ['*.jar'], dir: 'libs') 
    compile 'com.android.support:appcompat-v7:22.2.1' 
    compile 'com.android.support:support-v4:23.0.0' 
} 

私はこの問題を解決しようとしたものには、 no avail: 1)私はJSoup用のジャーを入れていましたが、削除しました。助け無し。 2)私はAndroidManifest.xmlにマルチサイドサポート(multiDexEnabled true)AND android:name = "android.support.multidex.MultiDexApplication"を追加しました。ナダ。 3)私はクリーン/ビルドを行い、キャッシュをクリアしてアンドロイドスタジオを再起動しました。もう一度、何も。

これは、asyncTaskを実行しようとしているときにのみ発生していることに注意してください。その行をコメントアウトすると、魅力のようにコンパイルされます。

new MyLoadWebView().execute(""); 

問題は何ですか?誰か助けてもらえますか?

+0

OK、これは、http://stackoverflow.com/questions/27825516/android-dex-issue-nested-class-final-boolean-com-android-dex-util-exceptionに関連している可能性があります。私は私の内なるクラスをプライベートからパブリックに変更することでこれを解決できるようでした!意味がありません!私は投稿して答えますが、もし誰かが私にこれを手伝ってもらいたいです! –

答えて

0

OK、Android dex issue: nested class + final boolean : com.android.dex.util.ExceptionWithContextに基づいて、私は非同期タスク用に作成する内部クラスに問題があると考えました。それでは、私がやったことは、私がプライベートからパブリックにAsyncTaskのクラス宣言を変更しました:

public class MyInnerLoadWebView extends AsyncTask<String, Void, Void> { .. 

private class MyLoadWebView extends AsyncTask<String, Void, Void> { .. 

そして、それは働いた!!!!

私はまだこの理由はわかりませんが、深刻なバグのようです。コメントはありますか?

+0

内部クラスには周囲のクラスへの暗黙の参照があることを忘れないでください。Contextが強い参照で直接AsyncTaskにバインドされているとメモリリークが発生する可能性があります。バス)とにかく彼らはあなたのリンクされた答えとして、ここにバグを提出https://code.google.com/p/android/issues/detail?id=161330&thanks=161330&ts=1427121255と明らかに彼らは本当に気にしませんでした。ちょうどプライベートではなくプライベートなパッケージにして、うまくいくはずです。 – EpicPandaForce

+0

それが得られました。ヒントありがとう! –

関連する問題