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:\app\src\main\res\drawable-hdpi\tabbg.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之后就腿也不酸了腰也不疼了上楼也不喘气儿了

 

陆续记录中...

 

转载于:https://www.cnblogs.com/Sharley/p/5554030.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值