没有Bug是任何产品上线前都无法达到的一个目标,包括拥有资深的测试工程师也不能保证上线后100%没问题,因为我们谁也不能把所有功能的操作、运用场景想周全,做周全 。
虽然不能做到完全零缺陷,但是每次发布的产品,我们需要追求缺陷越来越少 , 产品投诉越来越少 。
下面为大家总了一些App常见Bug以及解决处理方法 , 希望可以帮助到大家 。
No2.异常报错汇总
1.android.view.WindowManager$BadTokenException: Unable to add window — token null is not for an application
解决方案:将getApplication改成xxxx.this
2.call you are unregister onbrocastRevicer?
解决方案:忘记注销广播
3.Installation error: INSTALL_FAILED_UPDATE_INCOMPATIBLE表示某个应用没有卸载完成
4.出现launch Activtiy not found ?因为这个Activity没有写main 和luncher参数
5.R.java was removed! Recreating R.java!
6.com.process.acore 表示的是这个应用程序有电话拨号进程
7.android.database.CursorIndexOutOfBoundsException解决方案:原因是应该先调用cursor.moveToFirst; 。
数据库查询得到的cursor里面只有1个结果 , 你却查找第-1个,肯定不对
8.launcher.apk启动程序在启动动画页面卡?。?原因是开机动画很暂用cpu,如果luancher里面的某部分代码阻塞了,或者某个自定义view中部分代码太占用CPU导致的 。
9.java.lang.IllegalStateException: The specified child al
ready has a parent. You must call removeView on the child\’s parent first,表示是缺少对象,
解决方法:查找对象是否还在,要么就是多次事例化了
10.java.lang.IllegalStateException: The content of the adapter has changed but ListView did not receive a notification. Make sure the content of your adapter is not modified from a background thread, but only from the UI thread. [in ListView with Adapter]
01-01 00:51:06.320: ERROR/AndroidRuntime: at android.widget.ListView.layoutChildren
01-01 00:51:06.320: ERROR/AndroidRuntime: at android.widget.AbsListView.onTouchEvent
01-01 00:51:06.320: ERROR/AndroidRuntime: at android.widget.ListView.onTouchEvent
01-01 00:51:06.320: ERROR/AndroidRuntime: at android.view.View.dispatchTouchEvent
01-01 00:51:06.320: ERROR/AndroidRuntime: at android.view.ViewGroup.dispatchTouchEvent
01-01 00:51:06.320: ERROR/AndroidRuntime: at android.view.ViewGroup.dispatchTouchEvent
01-01 00:51:06.320: ERROR/AndroidRuntime: at android.view.ViewGroup.dispatchTouchEvent
解决方案:放入主线程中运行 , 因为此时这个LISTVIEW 加载ADAPTER是放入AsyTask里面运行的
11.Database: sqlite returned: error code = 14, msg = prepared
> statement aborts at 4: [DELETE FROM android_metadata]
> Database: DELETE failed setting locale
> Database: Failed to setLocale when constructing, closing the
> database
> Database: android.database.sqlite.SQLiteException: unable to open
> database file
> Database: at
> android.database.sqlite.SQLiteDatabase.native_setLocale
> Database: at
> android.database.sqlite.SQLiteDatabase.setLocale
> Database: at
> android.database.sqlite.SQLiteDatabase.<init>
> Database: at
> android.database.sqlite.SQLiteDatabase.openDatabase
> Database: at
> android.database.sqlite.SQLiteDatabase.openOrCreateDatabase
> Database: at
> android.database.sqlite.SQLiteDatabase.openOrCreateDatabase
> Database: at
> android.app.ContextImpl.openOrCreateDatabase
> Database: at
> android.content.ContextWrapper.openOrCreateDatabase
> Database: at
> android.database.sqlite.SQLiteOpenHelper.getWritableDatabase
> Database: at
> android.database.sqlite.SQLiteOpenHelper.getReadableDatabase
> Database: at
> com.android.providers.media.MediaProvider.query
> Database: at
> com.android.providers.media.MediaProvider.attachVolume
> Database: at
> com.android.providers.media.MediaProvider.insertInternal
> Database: at
> com.android.providers.media.MediaProvider.insert
> Database: at android.content.ContentProvider
> $Transport.insert
> Database: at
> android.content.ContentResolver.insert
> Database: at
> com.android.providers.media.MediaScannerService.openDatabase
> Database: at
> com.android.providers.media.MediaScannerService.scan
> Database: at
> com.android.providers.media.MediaScannerService.access
> $400
> Database: at com.android.providers.media.MediaScannerService
> $ServiceHandler.handleMessage
> Database: at
> android.os.Handler.dispatchMessage
> Database: at android.os.Looper.loop
> Database: at
> com.android.providers.media.MediaScannerService.run
> Database: at java.lang.Thread.run
> SQLiteOpenHelper: Couldn\’t open external.db for writing :
> SQLiteOpenHelper: android.database.sqlite.SQLiteException: unable
> to open database file
> SQLiteOpenHelper: at
> android.database.sqlite.SQLiteDatabase.native_setLocale
> SQLiteOpenHelper: at
> android.database.sqlite.SQLiteDatabase.setLocale
> SQLiteOpenHelper: at
> android.database.sqlite.SQLiteDatabase.<init>
> SQLiteOpenHelper: at
> android.database.sqlite.SQLiteDatabase.openDatabase
> SQLiteOpenHelper: at
> android.database.sqlite.SQLiteDatabase.openOrCreateDatabase
> SQLiteOpenHelper: at
> android.database.sqlite.SQLiteDatabase.openOrCreateDatabase
> SQLiteOpenHelper: at
> android.app.ContextImpl.openOrCreateDatabase
> SQLiteOpenHelper: at
> android.content.ContextWrapper.openOrCreateDatabase
> SQLiteOpenHelper: at
> android.database.sqlite.SQLiteOpenHelper.getWritableDatabase
> SQLiteOpenHelper: at
> android.database.sqlite.SQLiteOpenHelper.getReadableDatabase
> SQLiteOpenHelper: at
> com.android.providers.media.MediaProvider.query
> SQLiteOpenHelper: at
> com.android.providers.media.MediaProvider.attachVolume
> SQLiteOpenHelper: at
> com.android.providers.media.MediaProvider.insertInternal
> SQLiteOpenHelper: at
> com.android.providers.media.MediaProvider.insert
> SQLiteOpenHelper: at android.content.ContentProvider
> $Transport.insert
> SQLiteOpenHelper: at
> android.content.ContentResolver.insert
> SQLiteOpenHelper: at
> com.android.providers.media.MediaScannerService.openDatabase
> SQLiteOpenHelper: at
> com.android.providers.media.MediaScannerService.scan
> SQLiteOpenHelper: at
> com.android.providers.media.MediaScannerService.access
> $400
> SQLiteOpenHelper: at
> com.android.providers.media.MediaScannerService
> $ServiceHandler.handleMessage
> SQLiteOpenHelper: at
> android.os.Handler.dispatchMessage
> SQLiteOpenHelper: at android.os.Looper.loop
> SQLiteOpenHelper: at
> com.android.providers.media.MediaScannerService.run
> SQLiteOpenHelper: at java.lang.Thread.run
解决方案:DBHELPER打开数据库的链接后,没有关闭,导致下次进入有问题,同时有的把数据库放入SDCARD,要加SDCARD的权限 。
12.在LINUX下面出现R 。JAVA文件不生成的时候,是因为SDK下面的platforms/android-8/tools要加权限,为了方便常用
platforms/android-8/tools$ chmod a+x *
13: 问题描述:E/WindowManager: android.view.WindowLeaked: Activity com.cardroid.sdhc.medialist.SDMediaListActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@30c45e38 that was originally added here
解决方案:即未能及时销毁某个PhoneWindow 。当前Activity被关闭 。而在关闭的同时,却没能及时的调用dismiss来解除对ProgressDialog等的引用,从而系统抛出了标题中的错误,而掩盖了真正导致这个错误的异常信息 。需要在ONDESTORY方法时候关闭一些DIALOG 。
14:问题描述,在拨打电话的时候配置文件中已经添加了权限,但是提示还需要添加权限requires android.permission.CALL_PHONE
W/dalvikvm: threadid=1: thread exiting with uncaught exception
W/ActivityManager: Permission Denial: starting Intent {
act=android.intent.action.CALL dat=tel:xxx-xxx-xxxx cmp=com.android.phone/.OutgoingCall
Broadcaster } from ProcessRecord{408c2550 5709:com.um.mplus/10072}
requires android.permission.CALL_PHONE
E/AndroidRuntime: FATAL EXCEPTION: main
E/AndroidRuntime: java.lang.SecurityException: Permission Denial: starting Intent {
act=android.intent.action.CALL dat=tel:xxx-xxx-xxxx cmp=com
.android.phone/.OutgoingCallBroadcaster } from ProcessRecord{408c2550
5709:com.um.mplus/10072}requires android.permission.CALL_PHONE
解决问题:因为这个权限,有的系统级别作了限制 , 所以,添加抓取异常就可以了 。
#No3.开发类常见问题汇总
1. 如果你的项目的R文件不见的话,可以试下改版本号在保存,R文件不见一般都是布局文本出错导致.
2. 布局文件不可以有大写字母
3. 抛出如下错误WARNING: Application does not specify an API level requirement!,
是由于没有指定users sdk的缘故,修改AndroidManifest.xml文件.
加入:<uses-sdkandroid:minSdkVersion=\”8\”></uses-sdk>
4. 机器内存的瓶颈,当apk大于我们的机器内存时,模拟器无情的抛出
Installation error: INSTALL_FAILED_INSUFFICIENT_STORAGE Please check logcat output for more details. Launch canceled!
让我们无法调试,现在我们来根治这个问题,解决方法有两种
第一种
启动模拟器,然后进入菜单
settings->applications->mange
applications-> select the application->select \”unistall\”.
这样就能彻底删除了 , 然后再重新安装这个apk就没问题了
第二种
-partition-size 128
Eclipse中在项目Target的Options中添加 。
5. 启动android模拟器时候如果提示:Failed to install on device ‘emulator-5554′: timeout
这是可能因为卡的原因导致启动超时,解决办法:eclipse -> window -> Preferences -> Android -> DDMS -> ADB connection time out.把这个时间设置的长一些,默认是5秒即5000ms,我改成10秒就ok了 。
这样就不用每次重启模拟器了 。具体时间设置根据实际环境需要
6. 在开发的过程中经常在安装apk到模拟器上时会报出
ActivityManager: Error: Activity class {..} does not exist.
这样的错误,这里总结两种解决方式:
在AndroidManifest.xml文件中查看主Activity的名字前是否有\’.\’符
7.运行Eclipse时出现了这个错误
No Launcher activity found!
The launch will only sync the application package on the device!
解决办法
在AndroidManifest.xml 中添加
<category android:name=\”android.intent.category.LAUNCHER\” />
8.出现如下错误,没有写入sd卡权限 java.io.FileNotFoundException: /mnt/sdcard/update.zip
解决办法,资源文件写入如下权限
<uses-permissionandroid:name=\”android.permission.WRITE_EXTERNAL_STORAGE\”/>
Testin云测送大家一波超级福利!
① 价值5000元的Testin专属测试大礼包(包含120分钟自动化测试、120分钟远程真机调试、每日免费使用1次标准兼容测试、每日免费使用1次安全测试);
② 原51testing产品总监陈霁老师16年测试工作总结精华 -《软件测试入门必读》课程 。
如何获取福利?
登陆或者注册您的Testin账号进行企业认证,完成认证自动获得福利大礼包 , 认证请戳——> http://www.testin.cn
更多精彩内容:
为什么程序员找不出自己的BUG?
9个因Bug引发的巨大灾难
如何组建一支高效的测试团队
测试员=背锅侠?测试员:这个锅我不背
【精心整理:移动应用常见的Bug汇总及预防方法】以上就是朝夕生活(www.30zx.com)关于“精心整理:移动应用常见的Bug汇总及预防方法”的详细内容 , 希望对大家有所帮助!
猜你喜欢
- 女人最经典的5款香水举荐:罪爱上榜,第二太经典了
- 5个技巧,教你解决手机软件停止运行问题,收藏备用
- 合适学生党的潮牌排行榜:李宁上榜,第一主打街头文化
- 手机重生记
- 什么是住户贷款?个人住房贷款申请材料包括哪些?
- 我国青年失业率高吗
- 如何分辨黑色素瘤和普通痣 二者哪个更严重
- 股市当中有哪些好用的指标,带源码的?
- 嫌弃iPhone手机声音小?这几个方法帮你把手机音量扩大一倍