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);

相关文章
相关标签/搜索