android studio常见的运行错误总结

开发中遇到的编译问题汇总:
(1.)java.lang.RuntimeException:Unable to start activity ComponentInfo{com.yhy.testviewdemo/com.yhy.testviewdemo.activity.BitmapActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ImageView.setImageBitmap(android.graphics.Bitmap)' on a null object reference
   ps:" on a null object reference"

===》这种一般都是没有找到控件导致的空指针异常,先排查一下控件找的id是否正确。
 (2)java ioinvalidClassException:Main;local class incompatible:stream classdesc serialVersionUID=87711268828011083044,local class serialVersionUID=87113688280110083043.
该异常是反序列化失败。原因是:在序列化的时候所指定的serialVersionUID和反序列化时指定的UID不一致。只有保证序列化和反序列化的UID相同才能反序列化成功。PS:serialVersionUID主要是用于反序列化的,特别地,如果只是单纯的添加新的成员变量,或者是删除,都是没有问题的,可以正常反序列化。但如果类的结果发生了非常规性的改变时,比如修改了类名,修改了成员变量的类型,这种情况,即使serialVersionUID通过了验证,反序列化还会失败,因为无法从老数据中还原出新的数据结构和改变后的对象。(静态成员变量属于类不属于对象,所以不参与序列化过程,其次用transient关键字标记的成员变量不参与序列化过程。)
  (3)Error:Execution failed for task ':app:preDebugAndroidTestBuild'.
> Conflict with dependency 'com.android.support:support-annotations' in project ':app'. Resolved versions for app (26.1.0) and test app (27.1.1) differ. See https://d.android.com/r/tools/test-apk-dependency-conflicts.html for details.

引用包冲突异常。
解决方法: 在build.gradle,android{}部分里添加以下代码:
configurations.all {
            resolutionStrategy {
                force 'com.android.support:support-v4:27.0.2'
            }
        }
也可以将两个冲突包的版本改一致了。
   (4)Error:Execution failed for task ':app:compileDebugAidl'.
> java.io.IOException: com.android.ide.common.process.ProcessException: Error while executing process D:\Android\AndroidStudio\sdk\build-tools\26.0.2\aidl.exe with arguments {-pD:\Android\AndroidStudio\sdk\platforms\android-26\framework.aidl -oD:\Android\MyAndroid\AIDLDemo\app\build\generated\source\aidl\debug -ID:\Android\MyAndroid\AIDLDemo\app\src\debug\aidl -ID:\Android\MyAndroid\AIDLDemo\app\src\main\aidl -IC:\Users\24543\.gradle\caches\transforms-1\files-1.1\support-media-compat-26.1.0.aar\c28aea46305ceaa495645626f2865a88\aidl -IC:\Users\24543\.gradle\caches\transforms-1\files-1.1\support-compat-26.1.0.aar\37a505457c89ebe1008bb486153800bc\aidl -dC:\Users\24543\AppData\Local\Temp\aidl7751589069971896784.d D:\Android\MyAndroid\AIDLDemo\app\src\main\aidl\com\viii\aidlclient\MessageCenter.aidl}

问题描述:使用aidl,编译时报错,信息如上所示。出现问题的原因-是我所写的MessageCenter.aidl文件中没有导包“import com.viii.aidlclient.Info;”,注:这个实体类必须手动导包才行。
      (5)Error:Execution failed for task ':app:preDebugAndroidTestBuild'.
> Conflict with dependency 'com.android.support:support-annotations' in project ':app'. Resolved versions for app (26.1.0) and test app (27.1.1) differ. See https://d.android.com/r/tools/test-apk-dependency-conflicts.html for details.

版本冲突---解决方案:在app下的build.gradle文件中的dependences {}中添加如下代码:
    androidTestCompile('com.android.support:support-annotations:26.1.0') {
        force = true
    }
或者:让项目的版本都改成27。compileSdkVersion 27 targetSdkVersion 27 implementation 'com.android.support:appcompat-v7:27.1.1' 就可以了

在此做记录,方便后面快速解决,后面再遇到问题慢慢在补充进来。

猜你喜欢

转载自blog.csdn.net/yhy123456q/article/details/81357987