解决意外的顶级水平的最佳方法是什么? [英] What is the best way to solve the UNEXPECTED TOP-LEVEL EXCEPTION?

查看:79
本文介绍了解决意外的顶级水平的最佳方法是什么?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当我使应用程序使用许多库时。我通常遇到的错误是超出预期的顶级水平

When I make the application use many libraries. I usualy meet a error is UNEXPECTED TOP-LEVEL EXCEPTION

此错误的原因如下:


  • 数字函数> 65k,我们需要为其启用multidex

  • 嵌套了一些库,我们需要添加

关于第二种情况,很难检测到嵌套的库是什么。

About second case, it is very difficult to detect what is the lib have been nested.

如果您有此问题的经验,请与我分享。

If you have experience on this issue, please share me.

更新:

dependencies {
    compile files('libs/ormlite-android-4.48.jar')
    compile files('libs/ormlite-core-4.48.jar')
    //    compile 'com.obsez.android.lib.filechooser:filechooser:1.1.2'
    //    compile 'com.github.bumptech.glide:glide:3.6.1'
    compile 'com.android.support:recyclerview-v7:23.1.1'
    compile 'com.android.support:appcompat-v7:23.1.1'
    compile 'com.jakewharton:butterknife:7.0.1'
    compile 'cn.lightsky.infiniteindicator:library:1.0.5'
    compile 'com.firebase:firebase-client-android:2.3.1'
    compile 'de.hdodenhof:circleimageview:2.0.0'
    compile 'com.mcxiaoke.volley:library:1.0.15'
    compile('com.google.apis:google-api-services-drive:v2-rev170-1.20.0') {
        exclude group: 'org.apache.httpcomponents'
    }
    compile('com.google.api-client:google-api-client-android:1.20.0') {
        exclude group: 'org.apache.httpcomponents'
    }
    compile('com.google.android.gms:play-services:8.4.0') {
        exclude group: 'com.android.support', module: 'support-v4'
    }
    compile 'com.nononsenseapps:filepicker:2.4.1'
}


推荐答案

解决非预期的最高水平例外的最佳方法?
我将建议您执行此两步步骤来解决此问题。

The best ways to solve UNEXPECTED TOP-LEVEL EXCEPTION? I will suggest you for this Two step to solve this.


  • 检查附加库的依赖性/ hierarchy

  • 检查哪些库类或文件是重复的原因
    文件或方法计数超过65k



  • 如何检查附加库的依赖关系/层次结构?

  • How to Check attached libraries Dependency/hierarchy ?

首先找到从maven / jcenter / mavencentral附加/编译的库中使用的依赖项。因为support-v4& appcompact已包含在从maven附加的库中(例如播放服务包含v4,appcompact已附加,因此无需附加support-v4,因为它已经包含了。)

First found the dependency which is used in library which is attached/compiled from the maven/jcenter/mavencentral.Major issue will come with support because it may possible that support-v4 & appcompact already contains in library which is attached from maven (like play service contains v4 ,appcompact attached then no need to attach support-v4 as it already contains.)

如何在gradle中检查附加库的依赖性/层次结构

Gradle菜单>:modulename >>任务>> android >>运行 androidDependcies

OR

渐变菜单> :app >>任务>> android >>运行 androidDependcies

通过在 Gradle Console 中这样做,您将获得一些东西像下面这样作为输出(输出可能取决于附加的库)。哪个可以给出关于库的复制/层次结构的想法

By doing so in Gradle Console you will get something like below as a output(output may depends on libraries attached) .Which can give idea about duplication/hierarchy of the libraries

release
+--- LOCAL: picasso-2.5.2.jar
+--- LOCAL: YouTubeAndroidPlayerApi.jar
+--- LOCAL: commons-lang-2.6.jar
+--- LOCAL: signpost-core-1.2.1.1.jar
+--- LOCAL: kxml2_2.3.0.jar
+--- LOCAL: classes.jar
+--- LOCAL: signpost-commonshttp4-1.2.1.1.jar
+--- LOCAL: json-simple-1.1.1.jar
+--- LOCAL: universal-image-loader-1.9.3.jar
+--- LOCAL: linkedin-j-.jar
+--- LOCAL: maps.jar
+--- LOCAL: nineoldandroids-2.4.0.jar
+--- com.android.support:multidex:1.0.1
+--- com.android.support:multidex:1.0.1
+--- com.android.support:appcompat-v7:23.1.1
|    \--- com.android.support:support-v4:23.1.1
|         \--- LOCAL: internal_impl-23.1.1.jar
+--- com.google.android.gms:play-services-maps:7.3.0
|    \--- com.google.android.gms:play-services-base:7.3.0
|         \--- com.android.support:support-v4:23.1.1
|              \--- LOCAL: internal_impl-23.1.1.jar
+--- com.google.android.gms:play-services-gcm:7.3.0
|    \--- com.google.android.gms:play-services-base:7.3.0
|         \--- com.android.support:support-v4:23.1.1
|              \--- LOCAL: internal_impl-23.1.1.jar
+--- com.google.android.gms:play-services-location:7.3.0
|    +--- com.google.android.gms:play-services-base:7.3.0
|    |    \--- com.android.support:support-v4:23.1.1
|    |         \--- LOCAL: internal_impl-23.1.1.jar
|    \--- com.google.android.gms:play-services-maps:7.3.0
|         \--- com.google.android.gms:play-services-base:7.3.0
|              \--- com.android.support:support-v4:23.1.1
|                   \--- LOCAL: internal_impl-23.1.1.jar
+--- com.google.android.gms:play-services-ads:7.3.0
|    +--- com.google.android.gms:play-services-base:7.3.0
|    |    \--- com.android.support:support-v4:23.1.1
|    |         \--- LOCAL: internal_impl-23.1.1.jar
|    \--- com.google.android.gms:play-services-analytics:7.3.0
|         \--- com.google.android.gms:play-services-base:7.3.0
|              \--- com.android.support:support-v4:23.1.1
|                   \--- LOCAL: internal_impl-23.1.1.jar
+--- com.google.android.gms:play-services-analytics:7.3.0
|    \--- com.google.android.gms:play-services-base:7.3.0
|         \--- com.android.support:support-v4:23.1.1
|              \--- LOCAL: internal_impl-23.1.1.jar
+--- com.google.android.gms:play-services-plus:7.3.0
|    \--- com.google.android.gms:play-services-base:7.3.0
|         \--- com.android.support:support-v4:23.1.1
|              \--- LOCAL: internal_impl-23.1.1.jar
\--- com.android.support:recyclerview-v7:23.1.1
     \--- com.android.support:support-v4:23.1.1
          \--- LOCAL: internal_impl-23.1.1.jar

您也可以从终端检查上述过程。

You can also check this from terminal for the above process .

gradlew app:dependencies

您可以在下面的图片中检查图片价值一千字

You can check below image as "picture is worth a thousand words"

如何检查导致重复输入/方法重复的类或文件超过65k吗?

How to check which class or files causing duplicate entry/or method count exceed 65k ?

而不是检查消息或错误,您将得到 android studio的消息 标签在 Gradle Console

Rather than checking on message or error which you are getting Message tab of android studio check it in Gradle Console

如果出现消息错误,例如传输clas ses到dex :app:transformClassesWithDexForDebug :app:transformClassesWithDexForRelease 的最大机会就像是因为多个dex(方法超出65k限制)。

If in message error is like while transferring classes to dex :app:transformClassesWithDexForDebug or :app:transformClassesWithDexForRelease maximum chances are like because of Multiple dex (method excess 65k limit).

或者是否存在其他错误(例如与重复条目相关的错误等)。

Or if any other error than it will specify like duplicate entry related etc.

这篇关于解决意外的顶级水平的最佳方法是什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆