下面是记录的在平时代码编写或编译时的一些异常,答案有自己摸索出来的,也有参考其他程序猿朋友的,参考文章过多,就不一一贴出来了。
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));
}
}
链接: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的图片,(如图)
即使图片的后缀名是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之后就腿也不酸了腰也不疼了上楼也不喘气儿了
陆续记录中...