Android工作室很多错误:找不到类'android.XXX'

时间:2016-06-23 17:32:59

标签: android android-studio linphone

我正在使用Android Studio 2.1.2,调试设备android 4.4.2 API19,构建env:

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.2"
}

我已经尝试重新打开项目,使缓存无效,禁用instantRun ,但我仍然会收到以下错误:

06-24 01:15:08.302 27320-27320/org.linphone E/InstantRun: Could not find slices in APK; aborting.
06-24 01:15:08.322 27320-27320/org.linphone E/dalvikvm: Could not find class 'android.os.PersistableBundle', referenced from method org.linphone.LinphoneLauncherActivity.access$super
06-24 01:15:08.322 27320-27320/org.linphone E/dalvikvm: Could not find class 'android.os.PersistableBundle', referenced from method org.linphone.LinphoneLauncherActivity.access$super
06-24 01:15:08.322 27320-27320/org.linphone E/dalvikvm: Could not find class 'android.media.session.MediaController', referenced from method org.linphone.LinphoneLauncherActivity.access$super
06-24 01:15:08.322 27320-27320/org.linphone E/dalvikvm: Could not find class 'android.widget.Toolbar', referenced from method org.linphone.LinphoneLauncherActivity.access$super
06-24 01:15:08.332 27320-27320/org.linphone E/dalvikvm: Could not find class 'android.app.ActivityManager$TaskDescription', referenced from method org.linphone.LinphoneLauncherActivity.access$super
06-24 01:15:08.332 27320-27320/org.linphone E/dalvikvm: Could not find class 'android.app.SharedElementCallback', referenced from method org.linphone.LinphoneLauncherActivity.access$super
06-24 01:15:08.332 27320-27320/org.linphone E/dalvikvm: Could not find class 'android.os.PersistableBundle', referenced from method org.linphone.LinphoneLauncherActivity.access$super
06-24 01:15:08.342 27320-27320/org.linphone E/dalvikvm: Could not find class 'android.app.SharedElementCallback', referenced from method org.linphone.LinphoneLauncherActivity.access$super
06-24 01:15:08.342 27320-27320/org.linphone E/dalvikvm: Could not find class 'android.app.assist.AssistContent', referenced from method org.linphone.LinphoneLauncherActivity.access$super
06-24 01:15:08.352 27320-27320/org.linphone E/dalvikvm: Could not find class 'android.view.SearchEvent', referenced from method org.linphone.LinphoneLauncherActivity.access$super
06-24 01:15:08.352 27320-27320/org.linphone E/dalvikvm: Could not find class 'android.os.PersistableBundle', referenced from method org.linphone.LinphoneLauncherActivity.access$super

有人可以帮助我吗?

2 个答案:

答案 0 :(得分:3)

在阅读许多类似的问题时,我发现它可以通过启用Multidex来修复,this answer from Bharath Kumar。他还发布了一些我推荐阅读的有用链接。至少它对我有用(确切地说:我现在只剩下其中一个错误,而之前已有数百个错误)!

简而言之:只需在 gradle defaultConfig 中添加multiDexEnabled true并添加此依赖项compile 'com.android.support:multidex:1.0.1'即可启用multidex。 最后,通过将这段代码添加到Application类来安装Multidex:

@Override
protected void attachBaseContext(Context base) {
    super.attachBaseContext(base);
    MultiDex.install(this);
}

当然另一种选择是防止64K方法限制,因此您不再需要MultiDex。您可以通过减少Gradle文件中(未使用的)依赖项的数量来实现此目的,或者使用更具体的依赖项(在this answer中由wittyurchin提供了一个很好的google play-services示例)。

但是,如果你需要Multidex,那么你可能会遇到一些问题,比如我发现的问题:

1)在构建目标API设备时禁用即时运行(当您从Android Studio运行应用时,您会看到弹出的错误消息)。

2)如果您正在使用Robolectric进行单元测试,您可能无法再运行测试了。您可以通过扩展之前的MultiDex.install(this);代码来解决此问题。不是自己解释一切,而是更容易检查问题,并回答here上的sschuberth。

...

PS。似乎我不一定需要compile 'com.android.support:multidex:1.0.1'让MultiDex工作,但是,我已经看到很多推荐说它是必需的。如果有人对此有更多建议,请成为我的客人!

答案 1 :(得分:1)

我遇到了同样的问题,问题几乎相同(和Android API19-4.4调试设备)。

概述修复我的错误的步骤。 (根据建议here,缩小和准备规则):

  1. 更新了gradle版本(只需在File-> settings-> Build,Execution,Deployment-> Build Tools-> Gradle::( RightPanel)项目级设置 - >使用默认gradle设置默认选项包装)
      

    如果您必须使用特定版本的gradle,则可以尝试跳过此步骤

  2. 清理项目+重建项目(如果您想重新启动Android Studio,可能会这样)
  3. 从模块(app) build.gradle 中删除依赖项 - 确保在下一步中复制依赖项值以恢复
  4. 同步/ Gradle构建,以获取错误(只是一个安全保护步骤,有趣但有时因为某些原因Android工作室独立,即使配置已更改)
  5. 在同一模块(app) build.gradle 中<3>中按步骤3中的说明添加依赖项。

      

    好吧,如果你想知道为什么步骤3,4,5-&gt;有人指出here依赖包含后gradle更新可能会导致导致这些错误的问题

  6. 最终也是最重要的:缩小代码并使用 progaurd规则正式解释here

      

    由于我是Android Studio的新手,感觉我的项目,虽然是一个非常小的应用程序,可能会被多个实验库内容夸大+许多评论(和内部的非活动代码)导致64K? (nopeIguess),非法引用(可能!);在阅读@PKuijpers的答案后,这是一个直观的猜测(谢谢!)。老实说,我不想包含multiDex,因为在阅读完官方文档之后,我确信我的应用程序不是PokemonGo或NFS,或者足够大,不足以获得multidex。

  7. 为我解决,p!而且,作为副产品,我在Android资源监视器中看到了更好的内存利用率!