开发android的桌面小程序AppWidget
开发 android 的桌面小程序
AppWidget
#移动开发 #Android
1. 什么是 AppWidget
Android
系统允许某个应用把它自己的控件嵌入到其它的应用之中,这些被嵌入的控件就是”widget”,发布控件的应用是
”:appwidget providers”,而合成控件并显示的应用是”AppWidget
host”.
widget 常被译作小应用,小控件,小部件。最常见的 widget
是显示在桌面上时钟,日历,搜索,相框,音乐等,使用户不用进入应用,就可以方便地使用某种功能。桌面也是一个应用程序(
packages/apps/Launcher),代码中实现了”AppWidget
host”,而时钟,日历是分别实现了不同功能的
”appwidget provider”(packages/apps/Calendar)
2. 建立第一个 AppWidget
长篇大论不如立竿见影地看到效果,用以下方法,建立你的第一个 widget
_ $ cd $ANDROID_SRC/development
$ cp
$ANDROID_SRC/frameworks/base/ ...
浅析dalvik虚拟机JIT技术的实现
浅析 dalvik 虚拟机 JIT
技术的实现
#移动开发 #Android
一、说明
据说 Android 2.2 的虚拟机 dalvik 使用了 JIT 技术,使其运行 速度快了 5
倍。dalvik
解释并执行程序,JIT
技术主要是对多次运行的代码进行编译,当再次调用时使用编译之后的机器码,而不是每次都解释,以节约时间。5
倍是测试程序测出的值,并不是说程序运行速度也能达到 5
倍,这是因为测试程序有很多的重复调用和循环,而一般程序主要是顺序执行的,而且它是一边运行,一边编译,一开始的时候提速不多,所以真正运行程序速度提高不是特别明显。
二、JAVA 虚拟机主要的优化技术
1. JIT(Just In Time)
最开始指在执行前编译,但是到现在已经发展成为,一开始解释执行,只有被多次调用的程序段才被编译,编译后存放在内存中,下次直接执行编译后的机器码
method 方式:以函数或方法为单位进行编译
trace 方式:以 trace
为单位进行编译(可以把循环中的内容作为单位编译),此方法也包含
method
2. AOT(Ahead Of Time)
在程序下载到本地时就 ...
JDWP命令行调试
JDWP 命令行调试
1. JDWP 调试
JDWP 用于在 java 程序层面的调试,当然也可以在 eclipse 中使用,或利用 ddms
调试
在某一终端运行虚拟机
1234$ adb forward tcp:8000 tcp:8000 $ adb shell $ dalvikvm -agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=y-cp /sdcard/foo.jar Foo _
此时挂起等待调试
在另一终端开启调试
12$ jdb -attach localhost:8000 [jdb _ _ 提示符 _ _ ] run
此时程序继续运行
jdb 常用命令
12345[jdb 提示符 ] threads 看当前所有线程 [jdb 提示符 ] trace methods 0x12aac5a00 跟踪线程号为 0x12aac5a00 的线程 ( 线程号从threads 得到 ) [jdb 提示符 ] next/step 下一步 [j ...
各个层面的android小例程
各个层面的 android 小例程
1. 说明
在问题定位时,通常使用一些非常简单的程序来测试,以简化逻辑。下面介绍
android 各个层面的测试的编写:普通的 java 程序,加入
android 类的 java 程序,带 android 界面的 java 程序和运行在 android
平台上的 c/c++ 程序
2. 配置环境
123$ cd $ANDROID_SRC_ $ . build/envsetup.sh $ cd development
3. 普通 java 程序
建立 Foo.java,内容如下
1234class Foo { public static void main(String[] args) {System.out.println(“Hello, world”);} }
编译
12$ javac Foo.java $ dx --dex --output=foo.jar Foo.class # _ _ 把一个或多个 class 编成一个 jar
运行
12$ adb push foo ...
android的调试工具集
android 的调试工具集
#移动开发 #Android
1. 查看当前堆栈
功能:在程序中加入代码,使可以在 logcat
中看到打印出的当前函数调用关系
方法:
1new Exception(“print trace”).printStackTrace();
2. MethodTracing
功能:用于热点分析和性能优化,分析每个函数占用的 CPU
时间,调用次数,函数调用关系等
方法:
在程序代码中加入追踪开关
123456import android.os.Debug; …… android.os.Debug.startMethodTracing(“/data/tmp/test”); // _ _ 先建 _ _/data/tmp _ _ 目录 _ _ …… // _ _ 被追踪的程序段 _ _ android.os.Debug.stopMethodTracing(); _
编译,运行后,设备端生成 /data/tmp/test.trace 文件
把 trace 文件复制到 PC 端
1$ adb pull /data/tmp/test.t ...
android程序问题及解决方法
android 程序问题及解决方法
#移动开发 #Android
1. 编译报错,找不到R相关资源
在源码目录下新建一个应用,或者复制其它应用时,常出现这个错误。
什么是 R.java
R.java 中编译时自动生成的,工程用到所有的资源,都会用到 R.java
何时生成
在源码根目录下 make 全部代码时,才会对每个模块生成 R.java
对资源更改后也会重新成生 R.java
生成在哪里
out/target/common/obj/APPS/ 程序名 /…../R.java (用 find 找一下)
解决方法
只要把相关的 R.java 都删掉
再更新资源 (res 目录) 中一个资源文件(xml),使得 R.java 重新生成
重新 mm
2. 查看当前堆栈调用关系
12345$ rm /data/anr/traces.txt _ _ 清除之前 _ _ log _ _ 信息,因为 _ _ log _ _信息是追加到此文件中的 _ _ $ ps _ _ 找应用对应进程号 _ _ $ kill -3 _ _ 进程号 _ _ _ _ 该进程当前的堆栈调用写 ...
运行dalvik测试程序
运行 dalvik 测试程序
1. 说明
一般在 android
平台上的程序都运行在应用框架之中,它也可以直接运行,以下介绍最简单的运行和调试方法。
2. 运行 dalvik 自带的 test 程序
配置 ANDROID 系统环境
_ $ cd $ANDROID_SRC
$. build/envsetup.sh _
编辑桌面环境脚本 test_env.sh(否则 run-test 程序运行时报错)
内容如下: _ #!/bin/sh
base=pwd
root=\(base/out/debug/host/linux-x86/product/sim/system
export ANDROID_ROOT=\)root
bootpath=$root/framework
export
BOOTCLASSPATH=\(bootpath/core.jar:\)bootpath/ext.jar:\(bootpath/framework.jar:\)bootpath/android.policy.jar:\(bootpath/services.jar export
ANDROID_DATA=/t ...
常用的android软件列表(apk包)
常用的 android 软件列表(apk
包)
1. 常用的 android 软件列表(apk 包)
手写输入法
[http://www.kuruan.net/soft/zikushuru/2009-08-25/1745.html
](http://www.kuruan.net/soft/zikushuru/2009-08-25/1745.html)
拼音输入法
[http://www.kuruan.net/soft/zikushuru/2009-06-28/309.html
](http://www.kuruan.net/soft/zikushuru/2009-06-28/309.html)
Office 办公套件
[http://www.kuruan.net/soft/bangongshangwu/2009-10-21/3111.html
](http://www.kuruan.net/soft/bangongshangwu/2009-10-21/3111.html)
金山词霸
[http://www.kuruan.net/soft/dushuxuexi/2010-0 ...
编译android2
编译 android 2.1
(eclair) 源码 For HTC G1
1. 说明
下载编译最基本的 android 源码,无法在真机上使用(不能生成
boot.img
),只能在模拟器上使用。这是因为没有编译相关机型的内核和硬件驱动。以下介绍的是用
android 源码编译出对应 HTC G1
的版本,和烧写的过程。编译生成的版本除相机不能用之外,其它绝大部分功能都能正常使用,在
G1 上运行 2.1 版的速度也不错。
本文主要参考日文文档 G1/G2 烧机指南,感谢原文作者,原文地址: [_
http://code.google.com/p/android-development-
environment/wiki/EclaironADP1andADP2
_](http://code.google.com/p/android-
development-environment/wiki/EclaironADP1andADP2)
同时加入中文系统的支持和 JIT 支持(提高速度),以及相关文字解释。
以下步骤都经过验证(只验证 G1 手机,G2
部分请参见日文文档),实验 ...
android_G1_刷机
android_G1_ 刷机
#移动开发 #Android
(刷机有风险,操作需谨慎)
注意:虽说刷机有风险,但如果你按部就班地做下来,该注意的都注意了,想刷成砖头也很困难;
相反本来对系统就不熟,一目十行地看完说明,随便下一个升级包就野蛮操作,完全成功的可能性也不大。
1. 相关知识
分区
splash1:开机画面,备份后的文件为 splash1.img
recovery:该分区是恢复模式 (即 power+home 进入的界面),备份为
recovery.img
boot:内核启动分区,备份为 boot.img
system:Android 系统部分,目录表示为 /system,通常为只读,备份为
system.img
cache:缓存文件夹,目录表示为 /cache,备份为 cache.img
userdata:用户安装的软件以及各种数据,目录为 /data,备份为
data.img
模式
正常模式
正常开机的模式,用户使用此模式
恢复模式
开机时按 power+home 键进入该模式,通常用此模式简单地升级系统
工程模式
开机时按 power+camera 键进 ...