Android之平时遇见的异常和错误总结(不断更新)

安卓错误经验累积

 1、当出现下面错误时候
    08-21 03:43:16.679: E/AndroidRuntime(1087): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.fragment/com.example.fragment.MainActivity}: android.view.InflateException: Binary XML file line #5: Error inflating class fragment
    肯定是那个MainActivity.xml文件出了问题,就在第五行,我用的fragment,里面的一个class="com.sss.TitleFragment" 原来是这个写错了,
    那个包名写错了,改了就好,然后再xml里面写时候要注意是第一个是小写,不是大写,要记住


2、mTabWeixin.setOnClickListener((OnClickListener) this);  这样写会报错
08-21 04:06:16.920: E/AndroidRuntime(1274): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.fragment/com.example.fragment.MainActivity}: java.lang.ClassCastException: com.example.fragment.MainActivity cannot be cast to android.view.View$OnClickListener
 
 后来改成mTabWeixin.setOnClickListener(new OnClickListener(){ @Override 
        public void onClick(View arg0) {
             // TODO Auto-generated method stub
              stopService(intent);
          }});就可以了
3、 emulator: ERROR: This AVD's configuration is missing a kernel file!!
        以博客形式解决

4、emulator: ERROR: ANDROID_SDK_ROOT is undefined

      以博客形式解决
5 、ADB not responding. If you'd like to retry, then please manually kill "adb.exe" and click 'Restart'

     以博客形式解决
6、android studio 里面修改sdk other setting default project ……
   以博客形式解决

7、CPU acceleration status: HAX kernel module is not installed!
解决方法:
  以博客形式解决

1)打开sdk manager-》Extras,勾选Intel x86 Emulator Accelerator(HAXM installer),并点击
以博客形式解决

install packages。


2)安装完后,进入


/Users/username/Library/Android/sdk/extras/intel/Hardware_Accelerated_Execution_Manager,路径可能不同
,以root权限对silent_install.sh加可执行权限,chmod +x silent_install.sh
3)运行,./silent_install.sh,就ok了


8 、在andorid studio 出现了乱码 
    File-->setting-->Appearance-->name-->修改 就可以了,还以为是电脑问题,找了半天才搞好


9、 Gradle project sync failed. Please fix your project and try again.
    Error:failed to find Build Tools revision 23.0.0
    Install Build Tools 23.0.0 and sync project
     我把那个Build Tools revision 23.0.0拷贝到sdk里面的build-tools里面就可以了


10、当在学习binder的时候 客户端没有执行那个ServiceConnetion里面的连接的时候 报了空指针的错误,原来我没有在AndroidMainfest.xml配置文件写上 下次要注意,不然连接不到服务端.


11、a android.intent.action.MAIN -c android.intent.category.LAUNCHER
    不是主Activity启动的,所以会报错
    
12、ViewHolder holder=null;
    holder.img= (ImageView) convertView.findViewById(R.id.img);出现空指针异常
    要这样写
    ViewHolder holder=new ViewHolder();就不会报错了
13 android:support.v4.view.ViewPager   错了
   android.support.v4.view.ViewPager


14、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


表示內存大小为200M




最后我用eclipse也打开项目,同样还是报这个install-failed insuffient storag
应该是手机内存不足了,然后我就把手机删掉一些程序就可以了
以博客形式解决



15 getActionBar得到的actionBar是空指针异常
解决办法 


1 getActionBar()这个方法需要放在setContentView(args)之后


2 getActionBar()这个方法是在3.0以上版本才有的,所以在manifest清单文件中需要标注下


        android:minSdkVersion="11"
        android:targetSdkVersion="19" />


3 menifest清单文件中对应的该activity的主题设置


android:theme="@style/AppTheme.FullScreen"或者
android:theme="@android:style/Theme.NoTitleBar"


都需要取消,因为这样就无法找到actionBar




或者父类基类ACTIVITY中需要注释如下代码:




//requestWindowFeature(Window.FEATURE_NO_TITLE);
//getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);




16、java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list'java.lang.Runtime
那是因为我在MainActivity里面继承了ListActivity,然后我在MainActivity里面通过R.id.listview 得到的listview和ListActivity里面冲突了


17、java.lang.SecurityException: Permission denied (missing INTERNET permission?) even with adding this permission in android manifest


加上
记住不是加上
不然也是无效的


18、Error:Timeout waiting to lock buildscript class cache for settings file 'H:\android\ImageLoader\settings.gradle' (C:\Users\Think\.gradle\caches\2.4\scripts\settings_8kjkk683u0p1beph8uxo3q5nf\SettingsScript\buildscript). It is currently in use by another Gradle instance.
Owner PID: unknown
Our PID: 15396
Owner Operation: unknown
Our operation: Initialize cache
Lock file: C:\Users\Think\.gradle\caches\2.4\scripts\settings_8kjkk683u0p1beph8uxo3q5nf\SettingsScript\buildscript\cache.properties.lock


解决办法:找到红色标识部分文件然后删除文件。删除的时候会提示文件被占用。开打进程管理器把关于java的进程结束后,在Android Stuido中重新build就可以。


19、Error:Could not run build action using Gradle installation 'C:\Program Files\Android\Android Studio\gradle\gradle-2.4'.


20、Error:(45, 0) Could not read script 'H:\android\ImageLoader\lib\gradle\maven_push.gradle' as it does not exist.
Open File


解决办法:打开所导入库的build.gradle文件,将 apply from: ‘../maven_push.gradle’ 这行给注释掉,同步一下就ok。


21、java.lang.IllegalStateException: ImageLoader must be init with configuration before using
imageLoader.init(ImageLoaderConfiguration.createDefault(MainActivity.this));


public ImageLoader imageLoader = ImageLoader.getInstance();


然后在Oncreate中添加imageLoader.init(ImageLoaderConfiguration.createDefault(this));

ImageLoader.getInstance().init(ImageLoaderConfiguration.createDefault(MainActivity.this));


22 Unable to find the layout for Action Bar. Consider updating to a more recent version of appcompat, or switch the rendering library in the IDE down to API 21


下载android 21放到platforms里面就可以 


23 Can't create handler inside thread that has not called Looper.prepare()
没有在主线程里面创建Handler
应该加上
//初始化Looper对象
Looper.prepare();
handler1=new Handler(){
@Overide
public void handleMessge(Message msg){


}
};
//启动Looper
Looper.loop();




24    java.lang.NullPointerException
            at com.example.administrator.view.MainActivity$1.handleMessage(MainActivity.java:41)


    
    原来是我自己R.id.img 搞错了 应该是R.id.imageView
25、Target device: xiaomi-mi_2-1fd295bc
Uploading file
  local path: E:\android-client\build\outputs\apk\android-client-arm-debug.apk
  remote path: /data/local/tmp/com.hztcl.quickshopping.ui
Installing com.hztcl.quickshopping.ui
DEVICE SHELL COMMAND: pm install -r "/data/local/tmp/com.hztcl.quickshopping.ui"
pkg: /data/local/tmp/com.hztcl.quickshopping.ui
Failure [INSTALL_FAILED_INSUFFICIENT_STORAGE]


从新启动手机




26、Android gradle build时出现Duplicate resources错误
项目由eclipse转到Android studio时, 在eclipse中编译正常, 用gradle编译出出现Duplicate resources报错, 项目中有部分字符串资源存在重复定义, 能不能在不删除重复定义文件的情况下, 使gradle能正常编译不报错




27  android6.0 PullToRefreshWebView中的FloatMath.floor()不能用了如何替换
  Android6.0使用 Math.floor 代替 FloatMath.floor 即可;


28  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
    }
就是下面的这段代码结局我的问题
multiDexEnabled true

29java.lang.IllegalArgumentException: Wrong arguments were passed to displayImage() method (ImageView reference must not be null)

一看到这个错误,头脑里面第一条件反射就是参数传错了,但是我的确传了URL和imageView ,url有值,但是imageView那肯定没有值,原来我只把imageView定义了,没有初始化,没有findviewById(R.id.imageView);下次要记得


30 org.json.JSONException: End of input at character 0 of


10-23 21:28:11.288    7528-7528/com.kuyu.kuxianghui I/treeMapToString﹕ 199cf7bdf2dd4ea0da93cb53558e79a7
10-23 21:28:11.288    7528-7528/com.kuyu.kuxianghui D/MD5Util﹕ BAC23EF0AEDF28F7D4CE38A9D620A75D
10-23 21:28:11.298    7528-7528/com.kuyu.kuxianghui I/postUrl﹕ http://10.68.5.30/api/distributorCall?jsonParam={"sign":"BAC23EF0AEDF28F7D4CE38A9D620A75D","map":{},"openType":"getCaptcha"}
10-23 21:28:11.298    7528-7528/com.kuyu.kuxianghui I/kuxianghui﹕ url:http://10.68.5.30/api/distributorCall?jsonParam={"sign":"BAC23EF0AEDF28F7D4CE38A9D620A75D","map":{},"openType":"getCaptcha"}
10-23 21:28:11.318   7528-10533/com.kuyu.kuxianghui I/kuxianghui﹕ post Params:{jsonParam={"sign":"BAC23EF0AEDF28F7D4CE38A9D620A75D","map":{},"openType":"getCaptcha"}}
10-23 21:28:11.338    7528-7528/com.kuyu.kuxianghui I/errorMessage﹕ org.json.JSONException: End of input at character 0 of

原来我把opeType写成了openType 该死的 找了好久才找到错误


31

	at com.android.dx.command.dexer.Main.runMonoDex(Main.java:334)
	at com.android.dx.command.dexer.Main.main(Main.java:245)
UNEXPECTED TOP-LEVEL EXCEPTION:
	at com.android.dx.merge.DexMerger.merge(DexMerger.java:189)
	at com.android.dx.command.Main.main(Main.java:106)
	at com.android.dx.command.dexer.Main.run(Main.java:277)
	at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:502)
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
	at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:535)
	at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:171)
	at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:554)
	at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:596)
com.android.dex.DexException: Multiple dex files define Lcom/tencent/a/a/a/a/a;
解决办法


    defaultConfig {
        applicationId "com.kuyu.kuxianghui"
        minSdkVersion 14
        targetSdkVersion 22
        versionCode 1
        versionName "1.0"
        multiDexEnabled true
    }
就是下面这行代码起到了作用,惊叹吧
  multiDexEnabled true


32

res\drawable-mdpi-v4\guide_1.png:0: error: Resource entry guide_1 is already defined.
res\drawable-mdpi-v4\guide_1.jpg:0: Originally defined here.

Error:Execution failed for task ':app:processDebugResources'.
> com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'E:\Android\sdk\build-tools\23.0.0\aapt.exe'' finished with non-zero exit value 1

资源一开始就有

解决办法

build ->clean project

33 

为什么

Toast.makeText(RegisterActivity.this, "注册成功", Toast.LENGTH_SHORT)
 没反应 
  

我插,我在最后忘记写.show()了,妈的,下次一定要记得,忘记了要打死自己。

34、

 java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()

原来是我写的 

Toast.makeText(RegisterActivity.this, "注册成功", Toast.LENGTH_SHORT).show()
没有放在ui线程里面,所以出现这个异常,用handler去处理然后再调用就可以。

35、java.net.SocketTimeoutException: Read timed out

原因:客户端没有在限定的时间内将数据发送给服务器,服务器为了保证服务性能,认定那个连接已经失效,所以出现上述异常。 


解决办法:增大客户端的超时时间。

System.setProperty("sun.net.client.defaultConnectTimeout", String   
                    .valueOf(10000));// (单位:毫秒)   
            System.setProperty("sun.net.client.defaultReadTimeout", String   
                    .valueOf(10000)); // (单位:毫秒)  


36、android:showAsAction="never"在as里面的menu.xml里面不可以用

解决办法:改成 app:showAsAction="never"就可以了


37、当我们把github里面的模块拷贝到项目的时候,发现那个导入的包 前面是白色 后面是红色 ,一直找不到原因,后来终于找到了 

解决办法:

在app build.gradle里面忘记添加 compile project(':mplib')

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:23.0.0'
    compile project(':mplib')
}


38、

Error:Execution failed for task ':app:processDebugResources'.
> com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'C:\Users\Think\AppData\Local\Android\sdk\build-tools\23.0.0\aapt.exe'' finished with non-zero exit value 1

资源文件错了,不能识别pd

39、

    java.lang.SecurityException: Permission Denial: starting Intent { act=android.intent.action.CALL dat=tel:xxxxxxxxxxx cmp=com.android.phone/.OutgoingCallBroadcaster } from ProcessRecord{43557be8 8101:com.kuyu.kuyucontact/u0a81} (pid=8101, uid=10081) requires android.permission.CALL_PHONE

分析原因:
由于我的应用要拨打电话,所以需要配置相应的权限信息
解决办法:
需要在(功能清单文件中)AndroiManifest.xml    Application外添加
 	


40、今天程序报了这个异常

Unable to start activity ComponentInfo{com.kuyu.kuyucontact/com.kuyu.kuyucontact.ui.UserInfoActivity}: java.lang.NullPointerException
空指针啊,没有拿到数据,我还以为是我的bundle出了问题,妈的,原来findViewById(R.id.tv_name),tv_name 这个id在其它地方命名了,所以才会出现

Unable to start activity {.ui.UserInfoActivity}这个异常啊,麻痹的,以后切记。 

41

have you declared this activity in your AndroidManifest.xml

没有注册Activity


42

duplicate registration for activity

重复注册了Activity,认真检查哪个地方已经注册了


43

android.view.InflateException: Binary XML file line #13: Error inflating class com.wingsofts.simplelinechart.SimpleLineChart

自定义的时候,上面那个包名写错了


44

用eclipse 开发 android应用时出现个错误,“your project contains error(s),please fix them before running your application”

解决办法:

使用eclipse写好Android的代码,代码没有报错。想在AVD中运行测试时,总是会弹出错误框,提示信息为: 


“Your project contains error(s),please fix them before running your application.” 


不管是重启AVD 重启eclipse 甚至创建一个新的Android工程项目都不能运行 


上网查找原因,有几种可能: 


1.在不同的电脑下开发,而且文件存放路径不同,错误的主要原因是  “.classpath”  文件的载三方类库包路径错误。 


2.也可能是你的SDK版本不存在或者没有。 


3.编译的class、apk文件有问题:执行清除一下就可以了。Project→Clean→Clena Projects Selected Below 选择你出错的项目就可以了。 


4.有可能就是最重要的这一点: 
在Program提示框中会提示: 
“Error generating final archive: Debug Certificate expired on 12-7-25 下午7:52” 




原因分析: 


android要求所有的程序必须有签名,否则就不会安装该程序。在我们开发过程中,adt使用debug keystore,在 preference->android->buid中设置。debug的keystore默认有效期为一年,如果你是从一年前开始完android程序,那么在一年后导入这个app的时候很可能出现debug keystore过期,导致你无法生成apk文件。 


此时你只要删除debug keystore就行,系统又会为你生成有效期为一年的私钥。 




解决方法: 


进入C:\Documents and Settings\Administrator\.android 删除路径下的debug.keystore及ddms.cfg。 


(不同环境下的目录可能略有不同,可在eclipse中查找此路径:Window->Preferences->Android->Build下 Default debug keystore) 


我出错的原因是第4种,我直接删除了.android 文件,成功解决问题 


45 

 [2016-02-20 09:38:37 - aWork] Unable to resolve target 'android-22'

解决办法:

出现 “Unable to resolve target 'android-XX'”,解决办法进入你的android project跟目录,找到此文件 project.properties(或default.properties),找到target=android-XX出现此错是因为你的android环境跟此处不对应,那么,你只需要将此处的android版本改成你机器上配置的android版本即可,例如target=android-15

进入activity类中,一些重写的方法的地方总是出现 "Remove @Overrideannotation",解决办法:出现此错误的原因主要是 编译器 版本的 的问题,Java 1.5的编译器默认对父类的方法进行覆盖,采用@Override进行说明;但1.6已经扩展到对接口的方法;所以如果还是以Java 1.5的编译器来编译的话,会出现错误,默认是java1.5的,你需要将它设置到1.6打开你的eclipse,进入 window->Preferences->Java->Compiler 把它改为 Java1.6即可


46 把项目导入eclipse出现乱码问题

解决办法:

1.编码不对
a.对某文件或某工程更改编码:
  鼠标移到工程名或文件名,右键->Properties->Resource->Text file enCoding ->更改编码(GBK、UTF-8等)->Apply->OK退出
b.修改整个命名空间的编码
   eclipse菜单栏->Window->Preferences(preferences一般就是修改各种eclipse设置的地方)->General->Workspace->text file encoding ->更改编码(GBK、UTF-8等)->Apply->OK退出
c.修改某个特定类型的文件(如xml文件、java文件类型)的编码(不会受命名空间编码的影响)
  eclipse菜单栏->Window->Preferences->General->Content types->在右视图中选在文件类型->在Default enCoding中选择语言->Update->Ok退出
注意:若下拉菜单栏里面没有你要的语言类型,可以自己用键盘打一个进去。如果没有改语言类型,eclipse自然会报错,没有报错就说明可以用改语言类型。
2.maven的问题
 eclipse菜单栏->Window->Preferences->Maven->Installations->User Settings->导入maven的settings.xml文件->Refresh
 但是目前maven为什么会导致乱码不知道- -
3.两个工程不同编码方式放到一个工作空间里面有可能会有冲突。可以尝试着别放到一个工作空间里面看看可不可以解决问题


47、[2016-02-20 17:13:44 - aWork] ERROR: Application requires API version 21. Device API version is 16 (Android 4.1.1).
[2016-02-20 17:13:44 - aWork] Launch canceled!


解决办法:

原因是应用程序的版本跟模拟器的版本不一致导致的。

解决方法:修改两个配置文件

1:在AndroidManifest.xml里,  找到这一行,这行是表示要执行这个应用程序所需要的最低版本,把数字改成低于模拟器上面的版本。

2:在default.propertiestarget=android-14把target改为要运行模拟器的版本就OK了。


48   Failed to install*.apk on device '': timeout

解决办法:

前提:
1.adb shell是没问题,排除数据线
2.eclipse的ddms中是有设备的
3.模拟器安装N个程序是没问题的,排除程序问题

自己找到解决方法:
1.替换数据线
2.去掉延长线
3.修改windows-per-android-DDMS     5000改为10000,50000
4.工程文件clean


5.因为使用的是真机,所以不存在删掉C盘中的某些*.lock文件夹

天调试android,突然报了这个错误,很是郁闷,

意思是:把程序安装到设备失败,超时了。

研究无果,一阵搜索,最后可以通过设置eclipse解决问题,

如下设置 

在window->preferences->Android->DDMS->ADB connection time out (ms): 

设置这一项,把值设高一些  我设置了1000000

49 adb  logcat -v threadtime > xxx.log

C盘-》用户-》C里面

50 The connection to adb is down,a severe error

解决办法:adb kill-server

 adb -startserver


51 判断游标是否为空

SQLite中的Cursor千万不能使用Cursor == null 来判断是否为空,即便Cursor中什么记录都没有,他也不会是空(已测试)。

判断是否为空的方法是 Cursor.getCount()这么一个简单的函数,如果是0,表示Cursor为空;如果非0,则表示Cursor不为空。


51 我们用SimpleDateFormat 需要注意的问题

SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日hh:mm");表示是12小时制

SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日HH:mm");表示是24小时制


52 在相对布局里面 如果要把一个控件放在另一个控件的左边 记得使用 android:layout_toLeftOf="@+id/scan_code_image"


53 android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 5

自己写游标的时候,明明需要循环便利游标,而我没有加上循环,所以就出现了这个问题

if(cursor != null) {  
            // 循环遍历cursor
          while (cursor.moveToNext()) {



53  android.app.application cannot be case to package.ShotApplication

错在 AndroidManifest.xml里面

        android:name ="com.wang.capurescreen.ShotApplication"

我没有写name,所以错了,要记得加上


54 今天运行代码的时候出现了missingFormatArgumentException异常

原因:

使用string.format("aaa%d, dsaa,""%d",a)

很明显多了一个d%.

匹配不正确 。


55 java.net.socketimeoutexception

设置超市时间短了,settimeout时间久点就可以了

56 stException: com.example.dexclassloaderactivity.MyApplication cannot be cast to android.app.Activity

原因:我把在Android配置文件里面application里面的声明改到了activity里买去了,下次不要犯这个错误,写了applicaiion一定要记得写配置切记。

你可能感兴趣的:(Andriod,积累,Android,进阶)