1. 程式人生 > >android studio常見的執行錯誤總結

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' 就可以了

在此做記錄,方便後面快速解決,後面再遇到問題慢慢在補充進來。