我正在使用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
有人可以帮助我吗?
答案 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,缩小和准备规则):
如果您必须使用特定版本的gradle,则可以尝试跳过此步骤
在同一模块(app) build.gradle 中<3>中按步骤3中的说明添加依赖项。
好吧,如果你想知道为什么步骤3,4,5-&gt;有人指出here依赖包含后gradle更新可能会导致导致这些错误的问题
最终也是最重要的:缩小代码并使用 progaurd规则正式解释here
由于我是Android Studio的新手,感觉我的项目,虽然是一个非常小的应用程序,可能会被多个实验库内容夸大+许多评论(和内部的非活动代码)导致64K? (nopeIguess),非法引用(可能!);在阅读@PKuijpers的答案后,这是一个直观的猜测(谢谢!)。老实说,我不想包含multiDex,因为在阅读完官方文档之后,我确信我的应用程序不是PokemonGo或NFS,或者足够大,不足以获得multidex。
为我解决,p!而且,作为副产品,我在Android资源监视器中看到了更好的内存利用率!