Android之平时遇见的异常和错误总结

Android之平时遇见的异常和错误总结

  1. Installation failed since the device possibly has stale dexed jars that don’t match the current version (dexopt error). In order to proceed, you have to uninstall the existing application.

    WARNING: Uninstalling will remove the application data!
    Do you want to uninstall the existing application?
    已运行就是这样,死活没办法,AndroidStudio-> Build -> Clean Projects 然后等下面任务完成后,重新运行就可以了。
    INSTALL_FAILED_INSUFFICIENT_STORAG
    原因:空间不够用
    解决办法:

    第一种办法:
    在反复安装android apk的时候,有的时候可能会遇到adb install错误,内容是:Failure       [INSTALL_FAILED_UPDATE_INCOMPATIBLE]
    这很可能是因为你在以前uninstall应用的时候,没有做彻底,只是简单的rm /data/app/下面的apk文件了,一个补救的办法如下:
    启动模拟器,然后进入菜单settings->applications->mange
    applications-> select the application->select “unistall”.
    这样就能彻底删除了,然后再重新安装这个apk就没问题了
    第二种办法:
    你用的是emulator?如果是的話可以在起emulator启动的时候加个参数 例:emulator -avd android22 -partition-size 200

  2. Error:Execution failed for task ‘:app:dexDebug’.
    com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process ‘command ‘C:\Program Files\Java\jdk1.7.0_60\bin\java.exe” finished with non-zero exit value 2
    (1)如果是初搭环境,运行失败。可能是安装包路径有空格的原因。
    (2)如果以前运行项目正常,楼主标红部分,我不知道问题出在哪。但只看问题标题的话,有的是因为项目路径为汉字的问题(我今天就遇到了,把项目换个全英文的路径就可以了)
    删掉v4包就行了 有相同包了,注意finished这句话,删除包,
    如果还不行的话加上multiDex的配置

    defaultConfig {  
           applicationId "com.kuyu.kuxianghui"  
           minSdkVersion 14  
           targetSdkVersion 22  
           versionCode 1  
           versionName "1.0"  
           multiDexEnabled true  
       }  
    
  3. Android 自定义view中的属性,命名空间,以及tools标签

    (1)res和res-auto的区别

        xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:customview="http://schemas.android.com/apk/res-auto"
    

    这2个实际上前者是就是让你引用系统自带属性的,后者是让你使用lib库里自定义属性的。但是这个地方要注意,在eclipse中如果要使用你自定义的属性 是不能用res-auto的必须得替换成你自定义view所属的包名,如果你在恰好使用的自定义属性被做成了lib那就只能使用res-auto了,而在android-studio里,无论你是自己写自定义view还是引用的lib里的自定义的view 都只能使用res-auto这个写法。以前那个包名的写法在android-studio里是被废弃无法使用的。

    (2)tools标签

    这个地方很多人不明白xmlns:tools 这行代码是干嘛的,好像删除了以后对程序也没么影响,实际上这个tools标签主要是为adt插件使用的。
    他里面的很多属性能在很大程度上方便我们的开发,但是并不会影响我们最终生成的apk包。比如大家在写一个界面的时候一般都会给textview写上text的值,然后在开发完毕的时候再删除他,这个操作就很麻烦,但是现在你就可以。

    如果加上tools:text 你就可以在界面预览中看到效果,但是实际运行时是不会有效果的。很方便的,同样的以往我们在开发listview的时候之所以累就是无法预览listview的item效果,
    每次都得运行以后才能看到。但是现在你只需要利用tools标签。

    然后你无需run你的程序 直接在界面预览就能看到item的效果

    官方给出的文档在这里 http://tools.android.com/tech-docs/tools-attributes

  4. Android ListView 除去边缘阴影、选中色、拖动、底部上拉、顶部下拉背景色等

    以下是通过XML定义的方式实现,如果需要通过代码实现,找到对应是set方式设置即可:

    去除下滑到底部,上拉时出现的蓝色区域 
    android:overScrollMode="never" 
    
    去除ListView滑到顶部和底部时边缘的黑色阴影: 
    android:fadingEdge="none" 
    
    去除拖动时默认的黑色背景: 
    android:cacheColorHint="#00000000" 
    
    去除选中时的黄色底色: 
    android:listSelector="#00000000" 
    
    去除行与行之间的黑线:   
    list.setDivider(null); 
    
    ListView刷新后自动滚到最底部: 
    list.setSelection(msgList.getAdapter().getCount()-1);
    
  5. 报错提示代码:
    Caused by: java.lang.NoSuchMethodException: [class android.content.Context, interface android.util.AttributeSet]

    (1).报错原因:
    在自定义view时,没有重写含有(Context context,AttributeSet attrs)的构造器

    解决办法:
    重新对于构造器,例如:

    public ControlKeyboardLinearLayout(Context 
    context,AttributeSet attrs){
            super(context, attrs);
        }
    

    (2).报错原因:
    自定义view为内部类时,没有将内部类设置为static,例如:

    public class a{
    public class b extents TextVIew{
           ...
           }
    }
    

    解决办法:
    为内部类加上static关键字,例如:

    public class a{
    public static class b extents TextVIew{
           ...
           }
    }
    
  6. AndroidStudio 导入HttpClient最简单的方法

    Android开发使用AS是大势所趋的了,毕竟是谷歌的正统血脉,从刚开始的1.0到现在的1.4已经逐渐稳定,修复了很多Bug, 越来越人性化了。但是还是会出现或多或少的问题,今天想用HttpClient下载网络图片,却没有HttpClient以及相关的类,查询了一下发现原来-

    在API 23中,Google已经移除了移除了Apache HttpClient相关的类 。谷歌推荐使用HttpUrlConnection,如果要继续使用需要Apache HttpClient,需要在
    Eclipse下libs里添加org.apache.http.legacy.jar,
    Android studio里在相应的module下的build.gradle中加入即可。

    android {
        useLibrary 'org.apache.http.legacy'
            }
    

    HttpClient虽然已经被Google抛弃,但是有限项目依然依赖这些库,还得用。我把Httpclient的所有库导入项目后,会产生如下错误。

    Error:duplicate files during packaging of APK                   F:\Downloads\MyApplication7\app\build\outputs\apk\app-debug-unaligned.apk
    Path in archive: META-INF/DEPENDENCIES
    Origin 1: F:\Downloads\MyApplication7\app\libs\httpclient-4.5.2.jar
    Origin 2: F:\Downloads\MyApplication7\app\libs\httpcore-4.4.4.jar
    

    经过查找可以在文件中加入以下代码消除这个问题。

    packagingOptions {  
        exclude 'META-INF/DEPENDENCIES'  
        exclude 'META-INF/NOTICE'  
        exclude 'META-INF/LICENSE'  
        exclude 'META-INF/LICENSE.txt'  
        exclude 'META-INF/NOTICE.txt'  
        exclude 'META-INF/ASL2.0'  
        exclude 'META-INF/notice.txt'  
    }  
    

    如果在build.gradle中看不到android{}部分,可能是gradle的版本过低Android Studio每次更新版本都会更新Gradle这个插件,但由于长城的问题每次更新都是失败,又是停止在Refreshing Gradle Project ,有时新建项目的时候报 Gradle Project Compile Error 等等相关的问题

    解决这些问题办法是:
    首先打开android studio项目 找到项目目录gradle\wrapper\gradle-wrapper.properties这个文件
    内容如下:

    distributionBase=GRADLE_USER_HOME
    distributionPath=wrapper/dists
    zipStoreBase=GRADLE_USER_HOME
    zipStorePath=wrapper/dists
    distributionUrl=http://services.gradle.org/distribu
    tions/gradle-1.9-all.zip

    最重要的就是最下面一句,android studio会联网下载符合当前版本的gradle插件,而这个网址虽然可以访问但速度实在太慢,所以每次更新需要花很长时间或直接超时

    下面是我尝试后解决问题的办法就是先通过下载工具下载http://services.gradle.org/distributions/gradle-1.9-all.zip 这个版本的插件,用下载工具会比较快下载后 直接把zip文件,不要解压拷贝到 C:\Users\Administrator.gradle\wrapper\dists\gradle-1.9-all\3jdgemv0iv8uqohg3kcp2o88r1 目录下

    重新关闭android studio 重新打开 或 直接单击android studio工具栏 Sync Project Gradle Files android studio就是自动更新插件了,不用下载了

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值