bug_ _ _常見的bug??

 

======= 7    Failure [INSTALL_FAILED_INVALID_APK]html

執行  adb install -r test.apk。時出現錯誤  Failure [INSTALL_FAILED_INVALID_APK]java

多是apk的簽名出現問題,這個在以前遇到過,須要給apk簽名android

今天安裝多個apk都是出現這個錯誤,遂關閉系統對簽名的檢測數組

方法:修改 /system/build.prop 文件。app

ro.install.3rd_cert=trueide

修改成ro.install.3rd_cert=false工具

重啓設備就能夠安裝apk了post

 

=========6   安裝失敗:INSTALL_FAILED_VERIFICATION_FAILURE?  Install_failed_verifcation_failure?測試

    你必須容許未簽名的應用。安裝被Android。容許設置非市場的應用程序安裝。gradle

 

 =========5    關於魅族MX3沒法彈出Toast的問題

    設置->應用->你的應用,裏面有一個顯示通知的選項,打上勾,應該就能夠了,你試一下 

==========  4.3   Segmentation fault 問題淺談 

   今天調試程序時遇到了一個問題,當我用GDB調試程序時出現了Segmentation fault,之前沒有遇到過,最後查看資料,有點明白了。
    出現了Segmentation fault,基本上的緣由是,非法的內存訪問。
例如數組的越界,在循環操做時循環變量的控制問題,也有字符串拷貝時長度溢出,指針指向了非法的空間,還有就是申明一個指針,但卻沒有對其初始化,就直接引用,或者沒有開闢內存空間就釋放內存,因此要檢查申請空間時間偶成功。。。

還有那個問題在調試時會有這樣的信息:Program terminated with signal SIGSEGV, Segmentation fault.
對於SIGSEGV這個信號,常常會和SIGBUS信號出如今一塊,

SIGBUS與SIGSEGV信號的通常區別以下:

1) SIGBUS(Bus error)意味着指針所對應的地址是有效地址,但總線不能正常使用該指針。
一般是未對齊的數據訪問所致。
2) SIGSEGV(Segment fault)意味着指針所對應的地址是無效地址,沒有物理內存對應該地址。
 
一般致使段錯誤的幾個直接緣由:
一、解除引用一個包含非法值的指針。
二、解除引用一個空指針(經常因爲從系統程序中返回空指針,並未經檢查就使用)。
三、在未獲得正確的權限時進行訪問。
四、用完了堆棧或堆空間(虛擬內存雖然巨大,但絕非無限)。

這些是我我的的一些見解,但願和你們交流。。。

 

 

 ======= 4。2    java 異常java.lang.UnsupportedOperationException

 在項目中採用一個枚舉的集合,本人採用Collections中的空集合Collections.emptyList()在添加時發生異常:

常見集合以下:

private List<VacationCategory> vacationcategorys = Collections.emptyList();

 報錯誤以下:

-- Encapsulated exception ------------\
java.lang.UnsupportedOperationException
..............................

JDK API解釋以下:

java.lang.CloneNotSupportedException

不支持克隆異常。當沒有實現Cloneable接口或者不支持克隆方法時,調用其clone()方法則拋出該異常。

在網上查一下緣由是由於部分集合類型同樣可是缺乏部分方法或不支持。

如特殊狀況以下:

(1)經常使用Arrays.asLisvt()後調用add,remove這些method時出現java.lang.UnsupportedOperationException異常。這是因爲:

Arrays.asLisvt() 返回java.util.Arrays$ArrayList, 而不是ArrayList。Arrays$ArrayList和ArrayList都是繼承AbstractList,remove,add等method在AbstractList中是默認throw UnsupportedOperationException並且不做任何操做。ArrayList override這些method來對list進行操做,可是Arrays$ArrayList沒有override remove(int),add(int)等,因此throw UnsupportedOperationException。
解決方法是使用Iterator,或者轉換爲ArrayList

List list = Arrays.asList(a[]);
List arrayList = new ArrayList(list);

(2)

private List<VacationCategory> vacationcategorys = Collections.emptyList();

執行remove,add等method時,拋出此異常,本人將上述代碼改成:

private List<VacationCategory> vacationcategorys = new ArrayList<VacationCategory>();

沒有此錯誤,因而我查看一下源代碼:

源碼以下:此類在Collections的類中:

EmptyList此集合居然沒有相應的add,remove等方法

 

 ========== 4.1  Caused by: java.lang.IllegalArgumentException: Invalid path: /mnt/sdcar

E/AndroidRuntime( 2766): Caused by: java.lang.IllegalArgumentException: Invalid path: /mnt/sdcard

E/AndroidRuntime( 2766):      at android.os.StatFs.doStat(StatFs.java:46)

E/AndroidRuntime( 2766):      at android.os.StatFs.(StatFs.java:39)

E/AndroidRuntime( 2766): Caused by: libcore.io.ErrnoException: statfs failed: EIO (I/O error)

try {

StatFs f = new StatFs(path);

BigInteger freeBig = BigInteger.valueOf(f.getFreeBlocks())

.multiply(BigInteger.valueOf(f.getBlockSize()));

BigInteger sizeBig = BigInteger.valueOf(f.getBlockCount())

.multiply(BigInteger.valueOf(f.getBlockSize()));

.......................

} catch (Exception e) {

LogUtils.e("e ----------------------yyyyyyyyyyyyyyyyyyyyyyyyy  = " + e.toString());

}

很少說了, 添加try ,能夠解決上面異常。

 

======4   完全解決 Canvas 引發的 java.lang.unsupported operation exception, android.view.GLES20Canvas.clipPath(GLES20Canvas異常

發如今使用 Canvas.clipPath() 方法的時候,3.0版本如下能夠正常使用,可是3.0以上因爲谷歌默認開啓了硬件加速,

就會拋 java.lang.unsupported operation exception, android.view.GLES20Canvas.clipPath(GLES20Canvas... 的異常,能夠關閉硬件加速,可是最低編譯版本就要換成3.0,因此2.X 的機器就用不了這個應用,後來搜索發現能夠給View設置關閉硬件加速,可是翻頁效果是直接畫出來的,沒有View...

解決方法 1:

使用如下代碼:

if (Build.VERSION.SDK_INT > Build.VERSION_CODES.HONEYCOMB) {
   Gma_CustomImage.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
}

====

最近在作一個電子書項目,想要把開源的Shelves+iReader的翻頁捲曲等弄到一塊兒,在作捲曲效果時遇到如下問題:

 java.lang.unsupported operation exception, android.view.GLES20Canvas.clipPath(GLES20Canvas...

萬能的谷哥告訴我,這是硬件加速的問題,但是我歷來沒開啓過硬件加速啊,作了個測試,View層的硬件加速已經幹掉了

,那硬件加速確定來自於Canvas繪製層了,測試了下,果真是繪製層開啓了硬件加速。

給一個連接,講硬件加速講的很清楚的文章:點擊查看

綜合看了以後解決了,即在AndroidManifest.xml application下設定:

<application
        android:label="@string/application_name"
        android:hardwareAccelerated="false">

---------------------------------------------------------------------------------------------------------------------------------------------

關於 Hardware Acceleration

  一、不一樣層級的加速:

Application

<applicationandroid:hardwareAccelerated="true" ...>

Activity

<application android:hardwareAccelerated="true">
    <activity ... />
    <activity android:hardwareAccelerated="false" />
</application>

Window

    getWindow().setFlags(
    WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED,
    WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);

View

myView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);

二、如何判斷是否開啓了硬件加速

在繪製以前,你必須作該測試 Canvas.isHardwareAccelerated() 替代View.isHardwareAccelerated() 在必要時。

View.isHardwareAccelerated() ;//returns true if the View is attached to a hardware accelerated window.
Canvas.isHardwareAccelerated();// returns true if the Canvas is hardware accelerated

三、開啓硬件加速以後,許多2D的繪製方法會拋出異常:

複製代碼
 
  
 
 
 

In addition, some operations behave differently with hardware acceleration enabled:

 
  
 
 
 
複製代碼

 

 =========3   com.google.gson.stream.MalformedJsonException的解決辦法

關於Gson解析的異常,我花費兩個小時才調試出來。若是你程序出現如下的異常,有兩種可能性:‘

1. 找到一個JSON格式的驗證工具,這個網上不少你們能夠百度下

2.你的JSON格式驗證沒有問題,卻一直報這個解析錯誤,請肯定你的JSON數據沒有多餘的空格。這個空格有可能在IO流讀取的時候多讀了

  1. com.google.gson.JsonSyntaxException: com.google.gson.stream.MalformedJsonException: Use JsonReader.setLenient(true) to accept malformed JSON at line 1 column 33  
  2.     at com.google.gson.Gson.assertFullConsumption(Gson.java:779)  
  3.     at com.google.gson.Gson.fromJson(Gson.java:769)  
  4.     at com.google.gson.Gson.fromJson(Gson.java:717)  
  5.     at com.google.gson.Gson.fromJson(Gson.java:689)  
  6.     at com.ant.Test.main(Test.java:24)  
  7. Caused by: com.google.gson.stream.MalformedJsonException: Use JsonReader.setLenient(true) to accept malformed JSON at line 1 column 33  
  8.     at com.google.gson.stream.JsonReader.syntaxError(JsonReader.java:1505)  
  9.     at com.google.gson.stream.JsonReader.checkLenient(JsonReader.java:1386)  
  10.     at com.google.gson.stream.JsonReader.doPeek(JsonReader.java:531)  
  11.     at com.google.gson.stream.JsonReader.peek(JsonReader.java:414)  
  12.     at com.google.gson.Gson.assertFullConsumption(Gson.java:775)  
  13.     ... 4 more  

 

 =======2   Error:(1, 0) Plugin with id 'com.android.application' not found.

    在build.gradle文件里加入

// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.0+'
}
}

allprojects {
repositories {
jcenter()
}
}

=========1  ,java.lang.UnsupportedOperationException 解決方案

經常使用Arrays.asLisvt()後,  調用add,remove這些method時出現 java.lang.UnsupportedOperationException異常。

這是因爲:
Arrays.asLisvt() 返回java.util.Arrays$ArrayList, 而不是ArrayList。Arrays$ArrayList和ArrayList都是繼承AbstractList,remove,add等 method在AbstractList中是默認throw UnsupportedOperationException並且不做任何操做。

ArrayList override這些method來對list進行操做,可是Arrays$ArrayList沒有override remove(int),add(int)等,因此throw UnsupportedOperationException。解決方法是使用Iterator,或者  轉換爲ArrayListList list = Arrays.asList(a[]);List arrayList = new ArrayList(list);

相關文章
相關標籤/搜索