Android eclipse常见错误开发总结

Posted 红日666

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android eclipse常见错误开发总结相关的知识,希望对你有一定的参考价值。

使用android 开发工具eclipse的过程中,出现过很多问题,总结了一下,拿出来共同学习:


问题1、This Android SDK requires Android Developer Toolkit version 20.0.0 or above...
*在android_sdk_windows/tools/lib下的plugin.prop文件里把
#begin plugin.prop
plugin.verson=20.0.0
#end plugin.prop
变更为:
#begin plugin.prop
plugin.verson=18.0.0(其中这里的18.0.0是你目前的ADT版本)
#end plugin.prop


问题2:R cannot be resolved to a variable.
*方案一 系统自动添加了import android.R这条语句;这个时候只要删除这条语句就可以了。
 方案二 布局文件里多了个.out的xml文件,删除这个xml文件,然后把工程clean下就可以了。


问题3:error opening trace file:No such file or directory.
这主要是android api的版本和模拟器(或手机)的版本不一致导致的。把项目和模拟器都改成相同版本的,就不报错了。


问题4:FINAL EXCEPTION: main
java.lang.RuntimeException:Unable to instantiate activity ComponentInfo{
com.项目名称.包名.入口Activity名}:java.lang.ClassNotFoundException:com.chapter4layout3.入口Activity名.

原因分析:
AndroidManifest.xml中设置的“入口Activity名”并不是上面所提到的 Activity,即系统找不到Activity的入口,所以程序自然不能运行。
<activity
    android:name = "com.chapter4layout3.ExpanListViewDemoActivity(入口Activity)从下面的MAIN知道是入口Activity,所要运行的Activity必须是此名"
    android:label ="label"="@string/app_name">
      <intent-filter>
            <action  android:name ="android.intent.action.MAIN"/>


            <category android:name="android.intent.category.LAUNCHER"/>
      </intent-filter>
</activity>


问题5:
android - "Bitmap too large to be uploaded into a texture"

出现这个问题的时候可以把硬加速改为false,即在Manifest文件的application中加入如下语句:
android:hardwareAccelerated="false"就可以显示出来。


问题6:
‘ADB server didn‘t ACK‘(The connection to adb is down, and a severe error has occured.)
的解决办法:
一般情况下1.先把任务管理器上所有的adb.exe关闭掉,重启eclipse就可解决。但如果这种办法不行的话,可以试试:
1、先把eclipse关闭。
2、在管理器站到你的android SDK的platform-tools下,键入adb kill-server,如果adb关闭了会提示server not running *
3、键入adb start-server 如果不成功会提示daemon not running.starting it now on port ***,而如果成功不提示任何语句的,这是再重新打开eclipse就可以正常运行了。
还有一种情况是开了豌豆荚,导致了端口冲突。
我遇到的问题就是USB线真的开始有问题了,没连接好电话,所以出现adb一运行起来然后就消失的情况。⊙﹏⊙b汗。


问题7:
Unable to start activity ComponentInfo(....SecondActivity)java.lang.NullPointerException:

空指针异常:
空指针异常产生的主要原因:
1、当一个对象不存在时又调用其方法会产生此异常obj.method()//obj对象不存在(比如一个对象str你没有赋值,却调用它就会出现空指针异常的情况)。
2、当访问或修改一个对象不存在的字段时会产生异常obj.method()//method方法不存在。
****我出现的问题是R.id.button01由于粗心写成了R.layout.secondactivity这样就找不到那个button01,所以会出现空指针异常。
空指针解决方法:
重点关注报错发生的所在行,通过空指针异常 产生的两条主要原因诊断具体的错误。同时为了避免空指针的发生,最好在做判断处理时将“null”或者空值放到设定的值之前。
详解:NullPointerException是空指针异常。但是在java中没有指针,怎么会有空指针异常呢?在C++中,声明的指针需要指向一个实例(通过new方法构造),这个指针可以理解为地址。在java中,虽然没有指针,但是有引用(通常称为对象引用,一般直接说对象),引用也是要指向一个实例对象(通过new方法构造)的,从这种意义上说,java中的引用于C++中的指针没有区别,不同的是,处于安全的目的,在java中不能对引用进行操作,而在C++中可以直接进行指针的运算,例如book++等。
所以这里的NullPointerException虽然不是真正的空指针异常,但本质上差不多,是因为引用没有指向具体的实例,所以当访问这个引用的方法的时候就会产生这种异常,例如下面的代码:
String str = "这是一个测试用的字符串!";
System.out.println(str.length());
这段代码没有问题,但是如果改成下面的代码:
String str;
System.out.println(str.length);
就会产生NullPointerException异常了。那这种异常通常是如何产生的呢?比较多见的是下面的两种情况:
1、把调用某个方法的返回值直接赋值给某个引用,单后调用这个引用的方法。在这种情况下,如果返回的值是null,必然会产生NullPointerException异常。例如:
String userName = request.getParameter("userName");
if(userName.length()==0)
.....
else
......
如果request.getParameter("userName")的结果为null,则这里就会产生这种异常。
2、在方法体中调用参数的方法。这种情况下,如果调用的方法的时候传递进来的值是null,也要产生NullPointerException异常。
要解决这种异常,只需要检查异常出现在第几行,然后查看调用了哪个对象的方法,然后检查这个对象为什么没有赋值成功即可。
要避免程序产生这种异常,比较好的解决方法是在调用某个对象的时候判断这个对象是否为空,如果可能,则增加判断的语句,例如上面的代码可以写成:
if(str!=null)
System.out.println(str.length());
else
System.out.println(0);


问题8:
如果MyAdapter中的getView()方法不执行,那么就应该调用adapter.notifyDataSetChanged();方法(此方法为BaseAdapter中的方法)

原因:
setAdapter 时,首先会执行getCount(),当getCount()  返回的是0时,就不会去执行getView()方法, 如果 开启线程去下载数据,然后在getCount()中返回其size, 开始的时候因为还没有下载数据,返回的size可能是0,所以不会去调用getView()方法,界面就不会被填充。    下载完成后  通过 notifyDataSetChanged()方法 重新加载适配器,就会调用getView()方法了。。


问题9:
java.lang.ClassNotFoundException:com.example.MainActivity

个人按下面顺序排查:
1.
在Manifest.xml中查看Activity的名字是否书写正确。
2.
在Manifest.xml确认Activity标签中的android:name属性的格式,例如我的activity的名字是helloworld,确认android:name=”.helloworld”(其中的点很重要)。
3.
如果有添加外部包的情况下,在工程根目录下建libs目录,然后将需要导入的外部包放入此目录内再add jars(项目- -》属性- -》- -》Java Build Path - -》Libraries 新加一个support-v4包)。
4.
如果上面都确保OK的情况下仍发生问题的话,clean工程->关闭eclipse->在命令行中重启adb(adb kill-server adb start-server)->打开eclipse->编译启动。


问题10(关于viewflow的使用):
使用网络上比较流行的旧版(也可以称作修改后可以实现循环的版本)的时候,滑动图片的时候,老是出现闪动。

解决方法是:
在AndroidManifest.xml文件中将android:targetSdkVersion = "17"这句话删除掉就可以。


问题11(关于百度地图的问题):
java.lang.NoClassDefFoundError: com.baidu.mapapi.BMapManager

解决办法:

一、右击项目->properties->Java Build Path->Order and Export,在需要引用的包前面打勾。

二、Project->Clean...


问题12:
Caused by: java.lang.ClassCastException: com.fragments.Fragment1 cannot be cast to android.app.Fragment

的解决方法:
(1)app.fragment和v4.fragment都是可以使用<fragment>标签的
      只是在在使用的时候如果是app.fragment则没有什么特殊的地方继承Activity即      可。


(2)当v4.fragment使用<fragment>标签的时候就要特别注意了:
当这个Activity的布局中有<fragment>标签的时候,这个Activity必须继承
FragmentActivity,否则就会报错。
所以本错误的解决方法就是:将MainActivity继承的Activity改成FragmentActivity即可。


问题13:
(非eclipse错误,按钮点击错误2014-3-17花费两天时间搞定的一个问题):
GridView中的setOnItemClickListener不响应的问题:

原因:由于在每个item中使用的类似于Button、ImageButton的按钮,所以是button拦截了点击事件。
解决方法:这个时候,需要将Button或ImageButton改换为ImageView,问题就得到了解决。
当问题解决的时候,总是令人兴奋的(感觉以前的苦恼都是值得的)。




问题14:
 Installation error: INSTALL_FAILED_INSUFFICIENT_STORAGE

 ...
 无效的存储,存储空间不足,卸掉几个无用的APP即可解决问题。
 
 问题15:
 (在使用gridview的情况下--bitmapfun中的)
 java.lang.ClassCastException: android.widget.AbsListView$LayoutParams cannot be cast to android.widget.RelativeLayout$LayoutParams

 主要原因:就是AbsListview的LayoutParams不能准换成.xml布局文件中的RelativeLayout的LayoutParams
 
 问题16:
 (在开启虚拟机的情况下)出现:
 This application has requested the Runtime to terminate it in an unusual way.
 Please contact the application‘s support team for more information.

 可能问题:在创建AVD时设定的RAM过大(我选择的device是Nexus 7,其默认RAM是1024)。
 解决方法:将这个值改为512后就能正常启动AVD了 
 
 问题17(非错误;关于LogCat):
 Eclipse LogCat出现大量"Unexpected value from nativeGetEnabledTags: 0"
的解决方法:
 在logcat的过滤器的log message字段中输入以下过滤串:
^(?!.*(nativeGetEnabledTags)).*$ 
如果依然还有大量的信息出现,可以考虑使用LogCat最上部的过滤搜索,直接搜索Text,或者tag:TAG.这样就可以找到需要打印的信息。


问题18:
The connection to adb is down, and a severe error has occured.

解决方法:在Eclipse进入DDMS模式,重启下ADB


问题19:
Ctrl+Alt+方向上下键:Eclipse中该快捷键用于复制该行代码,但最近在Eclipse中却没任何效果。

可能问题:该快捷键被电脑中的某个应用所占用。
解决方法:当时原因就是网易云音乐的声音调大调小的快捷键就是Ctrl+Alt+方向上下键,与Eclipse中的快捷键重复。
所以当任何时候的快捷键不起作用的时候,都应该想到该快捷键可能被某个应用程序所占用了。


问题20:
Eclipse添加Android library错误
的原因:
我这里是project和library没有在同一个盘符下面。
所以:在windows系统下,library project必须和project处于相同的盘符中.
以后要养成的一个习惯是:导入project或library的时候,要勾选copy projects into workspace...以保证都在同一个盘符下面。


问题21:
Eclipse中Android SDK Manager中,未出现完整的API版本(或者说API版本得不到更新)
,解决方法:
1、在C:\Windows\System32\drivers\etc文件夹下面的hosts文件中添加如下信息:
#Google主页


203.208.46.146 www.google.com


#这行是为了方便打开Android开发官网 现在好像不VPN也可以打开


74.125.113.121 developer.android.com


#更新的内容从以下地址下载


203.208.46.146 dl.google.com


203.208.46.146 dl-ssl.google.com
2、在Eclipse中的Android SDK Manager中Tools -> Options -> others下面的第一个(force...)打上对勾即可。


问题22:
Eclips中layout中的布局文件的Graphical Layout不显示布局

情况<1>(一般情况):
解决办法:项目右键-->Android Tools-->Fix Project Properties,然后右键close项目-->open项目,再次打开,即可;
如果再次打开的时候,依然不可以,那么重启Eclipse即可。
情况<2>(This version of the rendering library is more recent than your version of ADT plug-in. Please update ADT plug-in):
解决办法:
     1、更新ADT。2、更改右上角adt版本为低版本3、manifest.xml文件夹中sdk配置版本的更改


问题23:
Eclipse中查看不了系统的源代码:即出现:the source attachment does not contain the source for...
时:
解决办法:选择最下面的folder按钮,然后选择相应的路径(我的选择是:C:\Program Files (x86)\adt-bundle-windows-x86-20130514\sdk\sources\android-14\android),
即可解决该问题(另外:MyEclipse中如果想要查看Java的源代码,那么选择的是一个src压缩的文件包,如我的路径是:C:\Program Files (x86)\Java\jdk1.6.0_10)。


问题24:
(关于ListView的使用问题)

(1)listview中添加的footer不显示时:
解决方法:将添加footer的代码添加到listView.setAdaper(adapter)代码之前。
(2)listView中footer出现不居中显示的问题时:
解决方法:将布局文件中的ListView的属性改为MATCH_PARENT。


问题25:
导入android-support-v7-appcompat.jar包时出现:Jar mismatch! Fix your dependencies:

我的问题是:两个包v4与v7都在项目中,所以引起了冲突。
解决方法是:将v4包删除即可。


问题26:
问题:微信打包后还是分享不了

解决方法是:
微信分享不了:
1、测试没有打包(打包成apk测试)
2、打包的keystore跟微信开放平台上面的不一致, 导致MD5码不一致(在微信填写的MD5是小写,冒号要去掉)
3、分享参数错误(微信指定平台分享有参数类型,每个类型对应的有相应的参数,建议用户先用网络图片测试,调通后再用本地图片,onekeyshare没有参数类型,会自动判断)
4、应用没有审核通过
5、包名跟开放平台上面的不一致
6、没有在mob.com申请key!


我的解决方法是:
在微信开放平台上下载签名生成工具,下载地址:https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419319167&lang=zh_CN
将APK项目及签名工具都安装到手机上,签名工具中输入报名,即可获取签名,经该签名重新填到微信上的应用签名。


问题27:
问题:修改手机系统字体大小时,虽然添加相应代码,但还是会有个别字体发生变化(华为手机)

解决方法是:
将相应字体的sp改为dp即可


问题28:
问题:如何无线调试运行

1、cd到adb所在的目录
2、命令行输入adb tcpip 5555
3、断开 USB数据,在计算机命令行输入 adb connect <设备的IP地址>:5555
4、如果需要断开连接:adb disconnect <设备的IP地址>


问题29:
问题:已安装了签名冲突的同名数据包

原因分析:由于前一个APP是eclipse运行出来的,而后一个版本是打包出来的,所以签名会有冲突。
解决方法是:重新打个包安装,再次更新就会避免出现这个问题。


问题30:
问题:使用 eclipse 的 svn 查看历史版本乱码的问题

原因分析:编码问题
解决方法是:Windows--Preferences--General--WorkSpace--Text file Encoding (other UTF-8)

以上是关于Android eclipse常见错误开发总结的主要内容,如果未能解决你的问题,请参考以下文章

Android开发各类常见错误解决方案

android(eclipse)新手常见问题总结

Android jni开发有哪些常见的错误

Android入门知识

ubuntu下Android开发环境的搭建:eclipse+SDK详细安装教程+常见问题及其解决方案

bug--常见的bug总结: