在手机上运行时,Android Studio应用程序NoClassDefFoundError

时间:2018-07-16 03:41:58

标签: java android noclassdeffounderror dji-sdk

当我在Android手机上运行我的应用程序时,我在Android Studio中不断收到此错误。我花了几周的时间来修复它,并采取了以下措施:

  • 添加了要添加的android名称

    android:name="android.support.multidex.MultiDexApplication"
    
  • 添加了源兼容性,如下所示:

    compileOptions
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
    
  • 已声明带有其他类列表的proguard + multidex文件

  • 通过在存储库中添加url来更改根级别gradle文件,然后更改了调用存储库的顺序

  • 更新了android IDE和android studio,android sdk平台工具。 gradle构建文件

  • 将所有库从.idea / libs文件夹复制到GSDemo / apps / libs文件夹

  • 在项目根目录中创建一个新的libs文件夹,并将所有库的jar文件复制到其中

  • 禁用即时运行

  • 将代码从java子文件夹移动到src文件夹

  • 无效的缓存/重新启动

以下是我得到的错误:

java.lang.NoClassDefFoundError: Failed resolution of:
Ldji/common/mission/waypoint/WaypointMissionFinishedAction;
at googlemap.gsdemo.dji.com.gsdemo.MainActivity.(MainActivity.java:81)
at java.lang.Class.newInstance(Native Method)
at android.app.Instrumentation.newActivity(Instrumentation.java:1086)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2843)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3049)
at android.app.ActivityThread.-wrap14(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1646)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6836)
at java.lang.reflect.Method.invoke(Native Method)

2 个答案:

答案 0 :(得分:0)

NoClassDefFoundError::表示您的手机在其他版本的android(例如32位或64位)上运行,您需要在android项目中添加 jniLibs 文件夹。

在jniLibs文件夹中搜索更多内容。

enter image description here

答案 1 :(得分:0)

由于您使用的Proguard规则,似乎未导入SDK文件或将其删除。

包含SDK的最简单方法是将导入添加到build.gradle中,如下所示:

compile 'com.dji:dji-sdk:4.6'
provided 'com.dji:dji-sdk-provided:4.6'

您可以尝试关闭Proguard进行测试,如果没有得到例外,它将指向Proguard规则。

希望其中之一会有所帮助。