Android开发主要bug汇总

我在开发过程中遇到的错误以及解决办法的汇总,解决办法大多来自网络,感谢各位作者。


------vs2010生成项目错误:LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏

原因:没有Main函数或者WinMain函数文件。此时应该添加一个Main函数文件,拖一个Main函数文件进去是没有用的。
这个是由于日志文件引起的,可以将项目\属性\配置属性\清单工具\输入和输出\嵌入清单:原来是“是”,改成“否”。 


------Eclipse错误:Can't find xxx.apk
解决办法:先clean然后重新生成,若无法解决,就找到project.properties文件里面只有target语句。其他注释掉。


------[ddms]Failed to initialize Monitor Thread: Unable to establish loopback connection
解决办法:多半是windows防火墙引起的,关掉Windows Firewall服务即可。
或者将项目\属性\配置属性\链接器\清单文件\生成清单:原来是“是”,改成“否”。


------Android开发SDK Manager 找不到系统路径或者无效路径错误。
解决办法:将tools里面的android.bat文件修改最后指定的SDKmanager的对应路径即可。


------问题描述:在eclipse的Logcat出现错误
[2014-01-08 14:00:07 - adb] ADB server didn't ACK
[2014-01-08 14:00:07 - adb] * failed to start daemon *
解决方法:先找到adb服务是否绑定端口出现问题,如果真的是绑定端口出现问题,找出该端口被哪个进程占据,最后杀掉这个进程。cmd 命令行:netstat -ano | findstr "5037"如果还是有问题,那就是因为windows firewall服务没有关闭。


------错误:java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{*****Activity}: java.lang.ClassNotFoundException: Didn't find class "*****Activity" on path: /data/app/*******.apk
解决办法:
1。Manifest文件中注册的Activity的名称,有没有写错,包名有没有搞错,有些网友,可能只写一个类名,前面用点号代替,但是这个类不在默认的包内,所以报这个错,那么只要写上类的全名,即可。
2。有些android,需要一些第三方的包,直接将其引入,在以前是可以的,但是在最新的adt中不行,必须在程序中新建一个libs文件夹,将第三方的jar文件copy到libs文件夹中,才行,很多人因为这样才报错,特别是以前的项目,默认并没有这个libs文件夹,但是新版本的adt,默认就建了libs这个文件夹。

3。有一点也很重要,在Java Build Path面板下的Order and Export中,一定要把你引入的jar文件,勾上,否则,跟没引用一样,切记。


------错误描述:Failed to unmount mnt/sda/sda1 Process has open file xxxx.xx
错误原因:当有程序正在占用U盘资源,比如后台线程在读取U盘文件内容,拔出U盘会导致此错误。
解决办法:在接收到U盘unmount广播时,将正在进行的线程终止,即停止占用U盘资源。


------错误描述:Installation error: INSTALL_FAILED_INSUFFICIENT_STORAGE
解决办法:android:installLocation="auto"


------错误描述(编译):commands commence before first target 
错误原因可能有:1. 上一行换行符号 \ 后面有空格2. 本行前面的空白有非法字符
1)Makefile可能是以命令行开始:以[Tab]字符开始,但不是一个合法的命令行(例如,一个变量的赋值)。命令行必须和规则一一对应。
2)产生第二种的错误的原因可能是一行的第一个非空字符为分号,make会认为此处遗漏了规则的“target: prerequisite”部分。


------错误描述:在用Tornado编译的时候,遇到编译器报如下错误: 
make: *** No rule to make target `e:/Tornado2.2_Project/FTTB/utils/h/nos/nos_cli.h', neede 
d by `onu07_snmp_cli.o'.  Stop.
错误原因:makefile里面的文件依赖关系有问题,导致头文件找不到。
解决办法:打开编译相关模块的makefile文件,找到.o文件的依赖关系,找到.h文件的路径,查看是否出错并改正。
原因分析:这种情况有时候是因为工程所在的目录改变,例如原来在C盘,现在移到了D盘,而makefile里面的.h文件路径没有改变.
修改方法:
#libname这个名字可以自己定  
LOCAL_STATIC_JAVA_LIBRARIES := libname  libname2
#libname必须与上面自己定义的名称一致,needimport.jar是你需要导入的第三方jar包  
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := libname:lib/needimport.jar   \
libname2:lib/needimport.jar


------错误描述:Installation error: INSTALL_FAILED_VERSION_DOWNGRADE
解决办法:因为模拟器内已经存在一个更高版本的apk,只需要将AndroidManifest.xml文件中的versionCode改高一个版本就可以了;或者直接写在掉之前的再安装。


------错误描述:android.os.SystemProperties在SDK中是隐藏的库,需要把Android SDK 目录下data下的layoutlib.jar文件加到当前工程的附加库路径中或者自建一个库layoutlib,然后在源程序中就可以Import了。但是运行时会报错并强制停止eclipse:Unable to execute dex: Java heap space .
解决办法:将自建库layoutlib设置为isSystemLibrary;当引用了某个包内的方法时,eclipse提示找不到该方法而方法确实存在,则在Java Build里面提升需要包的顺序即可。


------错误描述:Eclipse出现unable to load default SVN Client.
原因:可能是版本不对,无法加载SVN Client接口.
解决办法:重新下载一遍SVN subclipse.


------错误描述:Problems occurred when invoking code from plug-in: "org.eclipse.jface".
解决方案:看具体错误,
关闭所有工程重启eclipse解决了,或者新建一个workspace.


------错误描述:Installation error: INSTALL_FAILED_SHARED_USER_INCOMPATIBLE
原因:apk的AndroidManifest.xml中声明了android:sharedUserId="android.uid.system",但没有相应的签名
解决方案:
1. 找到编译目标系统时的签名证书platform.pk8和platform.x509.pem,在android源码目录build\target\product\security下。
没有那两个证书的话,就别指望用system用户了,赶紧地把android:sharedUserId="android.uid.system"声明删掉,不过删掉之后有些动作可能就没权限执行了。
2. 将签名工具(signapk.jar)、签名证书(platform.pk8和platform.x509.pem)及编译出来的apk文件都放到同一目录
3.执行签名命令: 
signapk.jar  platform.x509.pem  platform.pk8 Demo.apk signedDemo.apk
4.将signedDemo.apk安装即可
类似地,在android源码树编译也会存在同样的问题,解决方法类似。
或直接把目标系统的签名证书platform.pk8和platform.x509.pem(根据android.mk文件的LOCAL_CERTIFICATE 定义,也可能是shared.pk8、media.pk8等)覆盖到build\target\product\security也可,这样就不需要再手工签名了。


------错误描述:
Unable to execute dex: Multiple dex files define xxx$Application;
Conversion to Dalvik format failed: Unable to execute dex: Multiple dex files define xxx$Application;
解决办法:
1.工程下有jar包重复引用引起的,删除重复的jar包;
2.Eclipse->Project->去掉Build Automatically->Clear ->Build Project->Build Automatically,关闭Eclipse,再打开;


------错误描述:Android项目在线编译时出现:xxx can't find referenced class xxxx 或者 can't find referenced method xxx in class xxxx
错误原因:针对android 选择user版本进行编译的时候,会出现proguard错误
解决方法:proguard的作用是将java代码进行混淆的工具,所以android的mk文件也对其支持为两种方式:1.指定不需要混淆的native方法与变量的proguard.flags文件如:LOCAL_PROGUARD_FLAG_FILES := proguard.flags
2.制定编译的工程,不要使用代码混淆的工具进行代码混淆如:LOCAL_PROGUARD_ENABLED := disabled
3.不设置,默认使用LOCAL_PROGUARD_ENABLED := full.即将该工程代码全部混淆





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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值