android 程序问题及解决方法

#移动开发 #Android

1. 编译报错,找不到R相关资源
在源码目录下新建一个应用,或者复制其它应用时,常出现这个错误。

  1. 什么是 R.java
    R.java 中编译时自动生成的,工程用到所有的资源,都会用到 R.java

  2. 何时生成
    在源码根目录下 make 全部代码时,才会对每个模块生成 R.java
    对资源更改后也会重新成生 R.java

  3. 生成在哪里
    out/target/common/obj/APPS/ 程序名 /…../R.java (用 find 找一下)

  4. 解决方法
    只要把相关的 R.java 都删掉
    再更新资源 (res 目录) 中一个资源文件(xml),使得 R.java 重新生成
    重新 mm

2. 查看当前堆栈调用关系

1
2
3
4
5
$ rm /data/anr/traces.txt  _ _ 清除之前  _ _ log  _ _ 信息,因为  _ _ log  _ _
信息是追加到此文件中的 _ _
$ ps _ _ 找应用对应进程号 _ _
$ kill -3 _ _ 进程号 _ _ _ _ 该进程当前的堆栈调用写入 _ _ traces.txt
$ cat /data/anr/traces.txt _ _ 查看堆栈信息 _

3. 修改 framework 带来的界面显示不正常
重编公共控件时,新生成了 framework.jar,常用把它复制到设备中 /system/framework/ 目录下的方法调试,有时会遇到替换

framework.jar 带来的资源不对的问题,即有些文字和图片显示不正常了。 这是由于 framework.jar 和 system 目录中其它的资源 ID 不统一造成的。解决办法是重做 system.img

并把它烧写到系统中(参见烧写文档),以下两种方法重做 system.img

  1. 使用打包命令
    _ $ out/host/linux-x86/bin/mkyaffs2image -f

out/target/product/qsd8250_surf/system

out/target/product/qsd8250_surf/system.img _

  1. 在编译时加 snod 参数,以重建系统镜像(system.img) _ $ mm snod _

4. 打印当前类名和包名

  1. 打印当前类名
    _ Log.d(“TEST”, “class “+ this); _

  2. 打印当前包名
    _ Log.d(“TEST”, “package” + context.getPackageName()); _

5. 程序中等待的实现
_ import java.lang.Thread; // sleep _ _ 属于 _ _ Thread _ _ 类 _ _

try { // sleep _ _ 必须使用 _ _ try
Thread.sleep(50);
} catch (InterruptedException e) {
} _

_ _

(转载请注明出处:http://xy0811.spaces.live.com)

__