如何解决Android的13个最常见的错误消息(一)

测试是Android开发的重要组成部分,允许您解决可能潜伏在应用程序中的所有错误,错误和性能问题,然后再向公众发布。

每次遇到错误时,Android都会生成错误消息,然后将该消息显示为Android Studio的Logcat Monitor的一部分,或者作为您用来测试应用的设备上的对话框。

这些错误消息通常很短且非常重要,乍一看似乎没有任何帮助。但是,这些消息实际上包含了使项目重回正轨所需的所有信息 - 您只需要知道如何破译它们!

在本文中,我们将深入探讨在开发任何 Android应用时最有可能遇到的13条错误消息。我们将仔细研究每个错误消息的真正含义,检查可能遇到每个错误的所有可能原因,最重要的是,分享有关如何解决这些错误的逐步说明。  

发现错误消息

在测试应用程序时可能会遇到各种各样的错误消息,其中包括严重错误,这些错误会导致您的应用在首次尝试将其安装到目标设备时崩溃,导致更细微的错误,从而降低应用程序的性能。

根据您遇到的错误类型,Android会在您用于测试应用的设备或Android Studio中显示错误消息。

发现物理设备或AVD上显示的错误消息很简单 - 您只需要关注设备屏幕上显示的任何对话!但是,发现Android Studio中出现的错误可能会非常棘手,因为Logcat Monitor会记录大量信息,因此很容易错过重要的错误消息。 

确保您不会错过任何错误消息的最简单方法是打开Logcat Monitor的详细下拉列表并将其设置为Error,这将过滤掉除错误消息之外的所有内容。

æå¼Logcat Monitorsä¸æå表并éæ©Error

1. R.layout.main无法找到/无法解析符号R.

当Android Studio无法正确生成您的R.java文件时会导致此错误,并且它通常会突然冒出来 - 前一分钟一切都会正常工作,然而下一分钟项目的每个部分都无法编译。更糟糕的是,当Android Studio遇到R.layout错误时,它通常会将所有布局资源文件标记为包含错误,这使得很难知道从哪里开始查找错误来源。

通常,最有效的解决方案是最简单的:清理和重建项目。从Android Studio工具栏中选择Build> Clean Project,稍等片刻,然后选择Build> Rebuild Project构建项目

如果单个清理/重建周期不起作用,则尝试重复此过程几次,因为一些开发人员在快速连续完成多个清理/重建周期后报告了积极结果。

如果在移动某些文件和目录后遇到此错误,则可能是R.layout错误是由Android Studio缓存与项目当前布局不匹配引起的。如果您怀疑可能是这种情况,请从Android Studio的工具栏中选择文件>无效缓存/重新启动>无效并重新启动

资源名称的问题也可能会阻止正确创建R.java文件,因此请检查您没有多个具有相同名称的资源,并且没有任何文件名包含无效字符。Android Studio仅支持小写az,0-9,句号和下划线,并且一个无效字符可能会导致R.layout整个项目出错,即使您实际上没有在项目中的任何位置使用此资源!

如果确实识别并解决了错误,但Android Studio仍然显示R.layout错误,则可能需要在Android Studio正确注册更改之前完成清理/重建周期。

2.太多的字段引用...... .Max是65,536

当您编译应用程序时,APK包含Dalvik可执行文件(DEX)字节码文件形式的可执行字节码文件。DEX规范声明单个DEX文件最多可以引用65,536个方法,如果遇到太多字段...错误则表示您的应用已超过此限制。请注意,这是对项目引用的方法数量的限制  ,而不是项目定义的方法数量。

如果您遇到此错误,则可以:  

  • 减少项目中的引用数量。修剪方法引用的最有效方法之一是检查应用程序的依赖关系,因为这些通常是方法引用的最大贡献者之一。
  • 通过启用multidex,将您的应用配置为使用多个DEX文件。

启用multidex支持的过程将根据您的项目支持的Android版本而有所不同。

如果您的目标是Android 5.0或更高版本,那么第一步是打开模块级build.gradle文件并设置multiDexEnabledtrue

android {

   defaultConfig {

       minSdkVersion 21

       multiDexEnabled true

但是,如果您的等级minSdkVersion为20或更低,则需要添加multiDexEnabled true属性,然后将multidex支持库添加为项目依赖项:

dependencies {

 compile 'com.android.support:multidex:1.0.1'

}

下一步取决于你是否覆盖了Application班级。

如果您的项目确实覆盖了Application该类,则打开您的Manifest并将以下内容添加到<application>标记中:

 

<application

           android:name="android.support.multidex.MultiDexApplication" >

       ...

       ...

       ...

   </application>

如果您的项目没有覆盖Application该类,那么您需要扩展MultiDexApplication

public class MyApplication extends MultiDexApplication

最后,如果您覆盖了Application类但无法更改基类,则可以通过重写attachBaseContext()方法并调用来启用multidex MultiDex.install(this),例如:

@Override

 protected void attachBaseContext(Context base) {

    super.attachBaseContext(base);

    MultiDex.install(this);

 }

 

3.请选择有效的JDK目录

如果您在尝试构建应用程序时遇到JDK错误,那么这意味着Android Studio很难找到开发计算机上安装JDK的位置。

要修复此错误:

  • 从Android Studio工具栏中选择“ 文件”>“项目结构... ”。
  • 从左侧菜单中选择SDK Location
  • 确保选中Use embedded JDK复选框。
  • 导èªå°æ件项ç®ç»æSDKä½ç½®ï¼ç¶åéæ©ä½¿ç¨åµå¥å¼JDKå¤éæ¡

如果这不能解决问题,请导航回文件>项目结构...> SDK位置,然后手动输入JDK的完整文件路径。如果您不确定开发计算机上JDK的安装位置,则可以通过打开终端(Mac)或命令提示符(Windows)并输入以下命令来查找:/usr/libexec/java_home 

4.安装APK时出错

虽然AVD非常适合在各种不同的硬件和软件上测试您的应用,但您应该始终在至少一个物理Android智能手机或平板电脑上测试您的应用。

如果您已将设备连接到开发计算机,但在尝试安装APK时遇到错误安装APK消息,或者您的设备甚至没有出现在“ 选择部署目标”窗口中,请尝试以下修复:

检查USB调试是否已启用。 

打开设备的设置,然后选择开发人员选项,并确保已启用USB调试。如果在“ 设置”菜单中没有看到“ 开发者选项,则选择“ 关于手机”并继续点击“ 内部版本号”,直到出现“ 您现在是开发人员通知” 为止。返回主“设置”屏幕,您会发现  已添加“ 开发者选项”

检查智能手机或平板电脑的屏幕。 

有时,您的设备在连接到开发计算机之前可能需要一些额外的输入。例如,它可能要求您在不同模式之间进行选择,或者明确授权连接。

确保安装了正确的USB驱动程序。 

如果您在Windows上进行开发,则需要为您的设备下载相应的OEM USB驱动程序。如果您是Nexus用户,则可以通过Android Studio的SDK Manager 下载Google USB驱动程序。

检查您的设备是否符合项目的最低SDK要求。 

您可以在模块级gradle.build文件中找到项目的最低SDK,并可以通过打开“设置”并滑动到“ 关于手机”部分来查看设备上安装的Android版本。

尝试重新启动adb(Android Debug Bridge)进程。 

打开终端或命令提示符窗口,然后更改目录(cd),使其指向您的平台工具窗口,例如:

1

cd /Users/Downloads/adt-bundle-mac/sdk/platform-tools

然后,通过一个接一个地输入以下命令来终止并重新启动adb进程:

1

./adb kill-server

1

./adb start-server

重启一切! 

如果所有其他方法都失败了,请尝试断开连接,然后重新连接设备,重新启动设备,重新启动Android Studio,并且作为绝对的最后手段,重新启动开发计算机。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值