zoukankan      html  css  js  c++  java
  • android studio上代码编译调试中遇到的一些异常记录

    下面是记录的在平时代码编写或编译时的一些异常,答案有自己摸索出来的,也有参考其他程序猿朋友的,参考文章过多,就不一一贴出来了。

    I/Choreographer: Skipped 2267 frames! The application may be doing too much

    报出这个错误时app一启动要反应很久才会出现页面或者直接死掉,搞得我一脸懵逼。

    这个报错有的原因是不一样的,我的是出在我读写文件操作后忘记关闭流造成的,之后可能还会报出System.err: java.io.EOFException这样的异常,这时候是可以查看到报错位置的,找到地方关闭流就正常了。

    Error:Error converting bytecode to dex: Cause: com.android.dex.DexException: Multiple dex files define Lcom/lidroid/xutils/task/TaskHandler;

    如果你用 Studio开发,并且要用其他项目作为library,这个问题是很容易出现的。出现这个问题的原因是包的重复引用,意思就是在你自己的项目中引用了某个包,而被你作为library的项目也引用了同一个包,就会有这个问题。

    你可以直接修改gradle文件,也可以在上图中改,如下图所示:

    在gradle文件中改,只需要将compile改成provided就行。

    如果直接配置的话,也是一样的,在下拉框中选择provided。这里说明下,你只要改其中一个项目就可以了。

     java.lang.ClassCastException: com.google.gson.internal.LinkedTreeMap cannot be cast to com.example.bean.

    造成这种问题的原因是:泛型在编译期类型被擦除导致的,解决方法:
    public static <T> List<T> fromJsonArray(String json, Class<T> clazz) throws Exception {
    List<T> lst = new ArrayList<T>();

    JsonArray array = new JsonParser().parse(json).getAsJsonArray();
    for(final JsonElement elem : array){
    lst.add(new Gson().fromJson(elem, clazz));
    }

    return lst;
    }

    链接:https://www.zhihu.com/question/27216298/answer/47805394
     

     Error:Module 'com.github.lecho:hellocharts-library:1.5.8' depends on one or more Android Libraries but is a jar

    在使用android studio导入第三方依赖时报这个错,虽然不知道原因,但是加上   @aar 就行了

    compile 'com.github.lecho:hellocharts-library:1.5.8@aar'

    E/JavaBinder: !!! FAILED BINDER TRANSACTION !!!

    系统对Intent传递数据的大小限制, 即传输的图片大小不能超过1M。

    ② E/NotificationService:android.os.DeadObjectException

    说明应用的service已经停止;要么是从操作系统中中断,要么从应用程序中终止;

    那么可以在application标签里面添加了一句 android:hardwareAccelerated="false"(禁用硬件加速);

    如果加到对应的activity标签里面,那么第一次可以运行完,但一段时间又会出现这个问题;

     Error running app: Instant Run requires 'Tools | Android | Enable ADB integration' to be enabled.

    运行Android Studio,一直提示这个错误,这应该是“即时运行”出问题,一个暂时性的解决方案:在Android Studio中的:Preferences(win中对应“Set”)----->Build,Execution,Deployment----->Instant Run,按照下图进行勾选:

    不过这应该是即时运行,一种更好的解决问题的办法:菜单栏,Tools -> Adnroid -> enable ADB integration

    AAPT err(Facade for 414327768): libpng error: Not a PNG file

     Error:Execution failed for task ':app:mergeDebugResources'. 

       > Crunching Cruncher index_gallery_04.png failed, see logs

      是因为drawable或mipmap文件夹里面有png在预览显示是jpg格式,转过来就行了(可以用Windows自带的画图工具直接将图片另存为png格式)。

    有时将以前在Eclipse中写的项目import到android studio中后,出现AAPT err(Facade for 157667509): libpng error: Not a PNG file错误,提示信息显示图片非PNG格式。

    解决方法:

    在studio中依次点开每个后缀名为png的图片,(如图)

     Android libpng error: Not a PNG file错误解决

    即使图片的后缀名是png,这里会显示真正的格式。找到不符合要求的图片,另存为png格式即可。

    其实我自己用上述方法暂时还未成功,但是觉得也是一些朋友的经验之谈,对于某些来说应该管用,所以先分享出来。。。

    ⑤这个装逼让我猝不及防,电脑突然断电,重启后就发现studio项目的所有java文件都报错,且代码错误提示为要“setup JDK”

    试过更改环境变量无果,重启studio数次无果,更换buildToolsVersion无果,最后终于找到解决方法:

    这样之后就恢复正常了。

    AAPT err(Facade for 1807790075): ERROR: 9-patch image E:appsrcmain esdrawable-hdpi abbg.9.png malformed.

    AAPT err(Facade for 1807790075):        No marked region found along edge.
    AAPT err(Facade for 1807790075):        Found along left edge.

    Error:Execution failed for task ':app:mergeDebugResources'.
    > Crunching Cruncher tabbg.9.png failed, see logs

     像这种报错属于.9图坏点,一般在studio打开以前的eclipse项目时出现,我的处理方法很简单,科不科学不知道,但是很管用。

     

           

    先根据报错目录找到报错的那张图,比如左图,报错时一般四个边缘没有下方那种黑点,或者只有一边有,此时只需自己手动在另外几遍描上黑点即可。有时只要画出上下的其中一边和左右的其中一边就行,但依然报错的话就四边都画上,如右图,当然了,根据自己图片需要拉伸黑线长度。

    Error:(1, 1) 错误: 非法字符: 'ufeff'

     原因:Eclipse可以智能的把UTF-8+BOM文件转为普通的UTF-8文件,Android Studio还没有这个功能,所以使用IDEA和Android Studio编译UTF-8+BOM编码的文件时会出现”非法字符: 'ufeff' “之类的错误。

    1.用Notepad++打开 art+m 或者 点击菜单栏的格式选项  选择 无BOM编码 ;

    2..在那个文件下把他修改成其他编码然后在修改回UTF-8   右下角有个修改编码的东西 这里就类似刷新一下编码的意思吧

    3. 最后,介绍有一种巨蠢巨管用的办法,如果报错文件不是太多的时候可以尝试——找到报错的java文件,把内容全部复制下来,然后把源文件删除,接着新建一个文件,名字一定要和之前一样,把代码全部复制到里面,有几个文件就操作几遍,编译一下代码,有的相关文件会提示找不到类,原因是之前给删除了,依次把类文件导入,就可以运行了

    Error:(31, 35) 错误: -source 1.6 中不支持 diamond 运算符

    (请使用 -source 7 或更高版本以启用 diamond 运算符)

    在studio上导入eclipse项目时报了这个错

     所谓的diamond运算符诸如 ArrayList<>,HashMap<>这样,

    private ArrayList<Map<String, Object>> musicList = new ArrayList<Map<String, Object>>();
    如果前面尖括号里加了元素后面括号每加,就会这样报错,只要补上就行了


    java.lang.IllegalStateException: TimerTask is scheduled already
      at java.util.Timer.scheduleImpl(Timer.java:572)
      at java.util.Timer.schedule(Timer.java:459) 
    前面喜气洋洋的给页面加了一个定时器,结果跑起来抛出这个异常。
    原因是同一个定时器任务只能被放置一次。

    要解决这个问题就是要在每次放定时任务前,确保之前任务已经从定时器队列中移除了,并且每次放任务都要新建一个对象。
    具体的操作流程咧,在这里 ——> TimerTask is scheduled already错误的解决方法
    10.Error:(189, 25) 错误: 找不到符号

    符号: 方法 sqrt(float)

          位置: 类 FloatMath

    原因是Android6.0不支持FloatMath.sin()了,主要有两个方法可以解决。

    方法一:

    用23一下的SDK版本进行编译。将gradle.build文件里(包括project的gradle.build和module的gradle.build)的compileSdkVersion设为23以下。

    方法二:

    将上面报错的地方,即 用Math类替换FloatMath类,Math.sin();


    11.Error:(12, 23) 错误: 程序包org.apache.http不存在

    Android 6.0(api 23)已经不支持HttpClient了,在build.gradle中 加入 useLibrary 'org.apache.http.legacy'就可以了,如图:

    
    

     

    12.IndexOutOfBoundsException Invalid item position 0(0). Item count:0

    这个错误一般出现在使用RecyclerView的时候吧,这个组件似乎本身就存在这样的问题。这时候你检查你导入的版本

    我之前导的是23.4.0,就一直报这样的错,然后换成1之后就腿也不酸了腰也不疼了上楼也不喘气儿了

    陆续记录中...

  • 相关阅读:
    思维导图形式带你读完《大型网站技术架构》中
    思维导图形式带你读完《大型网站技术架构》上
    淘淘商城项目补充(2)商品上架和下架功能实现
    淘淘商城项目补充(1)批量删除商品功能实现
    商城项目(ssm+dubbo+nginx+mysql统合项目)总结(3)
    阿里Java研发工程师实习面经,附面试技巧
    商城项目(ssm+dubbo+nginx+mysql统合项目)总结(2)
    商城项目(ssm+dubbo+nginx+mysql统合项目)总结(1)
    高性能优秀的服务框架-dubbo介绍
    回溯算法_01背包问题_Java实现
  • 原文地址:https://www.cnblogs.com/Sharley/p/5554030.html
Copyright © 2011-2022 走看看