修改android公共控件和后台服务
修改 android
公共控件和后台服务
#移动开发 #Android
1.位置
公共控件的代码在源码目录 android/frameworks/base/core/java/android/
中
后台服务的代码在源码目录
android/frameworks/base/services/java/android/server 中
2.修改
修改其中代码并执行 mm 编译
形如:
** $ cd frameworks/base/services/java/com/android/server/
$ vi IntentResolver.java
$ mm **
3.替换
编译后用生成的包替换手机上 /system/framework/ 中相应的包
编译后生成的文件见提示
形如:
** $ cd out/target/product/general/system/framework/
$ adb push services.jar /system/framework/ **
4.使新的包生效
方法 1:
重启手机后生效
方法 2:
杀死 system_server 进程,使系统重新启动, ...
动态改变Android控件大小
动态改变 Android 控件大小
一、方法
使用 getLayoutParams() 和 setLayoutParams() 方法
二、示例代码
** LinearLayout.LayoutParams linearParams =
(LinearLayout.LayoutParams)
aaa.getLayoutParams(); ** // 取控件 aaa 当前的布局参数 **
linearParams.height = 365; ** // 当控件的高强制设成 365 象素 **
aaa.setLayoutParams(linearParams); ** // 使设置好的布局参数应用到控件
aaa
三、原理
getLayoutParams() 和 setLayoutParams() 都是控件基类 view 的
public
方法,在外部也可以直接调用
由于 LayoutParams
一般是在加入容器中设置的,所以容易混淆我们所指定的布局属性究竟是保存在容器中,还是控件本身的属性,答案是控件本身。但是在设置时还是要注意布局属性与容器种类密切相关
android源码中常用于参考的代码
android
源码中常用于参考的代码
#移动开发 #Android
在应用开发时,常遇到有些功能不知是否能实现,不知如何实现的问题,在网上资料又不多的情况下,可以用参考已有源码的方式来解决这些问题,经常参考的目录如下
1、系统控件的实现:了解有什么控件,控件的功能,功能如何实现
frameworks/base/core/java/android/*
2、应用程序的实现:Android
系统中所有的应用程序都在这里实现,了解它们如何实现
package/apps/*
3、系统提供的例程:各种类型程序的实现范例
development/samples/*
安装和卸载Android应用程序_apk包
安装和卸载 Android 应用程序
_apk 包
一、安装
1. 安装第三方应用
** $ adb install apk ** ** 文件名 **
2. 安装系统应用
** $ adb remount **
** $ adb push apk ** ** 文件名 ** /system/app // apk 文件名形如
testme.apk
二、卸载
1. ** $ adb uninstall ** ** 包名 ** // 包名形如
com.android.testme
2. Home- > 设置 -> 应用程序 -> 管理应用程序 ->
选择某应用程序 -> 卸载
三、相关文件
1. /system/app/apk 文件
系统应用
2. /data/app/ 包名.apk
第三方应用
3. /data/data/ 包名
此位置用于存储用户数据
4. /data/dalvik-cache/ 组合名.dex
dex 文件是 Android 虚拟机 Dalvik 支持的字节码文件格式
5. /data/data/com.android.launcher/da ...
Android常用工具
Android 常用工具
#移动开发 #Android
一、Log
1. logcat 不同级别的打印信息,级别如下
V Verbose
D Debug
I Info
W Warn
E Error
F Fatal
S Silent
2. 如何在 log 里打行号和时间
getFileName ()
getClassName ()
getMethodName ()
getLineNumber ()
二、Adb
1. 把程序装手机里:一般程序装 apk 即可
手机打开,边上 usb 线,直接连上电脑
系统 ubuntu 8.04
sdk 包 android-sdk-linux_x86-1.5_r3/tools/adb shell
变 root 权限 (因为连接真机,若边模拟器就无所谓哪个用户了)
使用命令 adb devices 看设备是否连上了
如果同时启了模拟器和连接了手机,adb 会让你选择与谁连接
注意:如果你有多个 SDK,千万要使用匹配的 adb
命令,最好用绝对路径,否则很容易得到提示说找不设备,如果说找不到
adb
,请尝试以下方法
** $ killall adb * ...
Android模拟器调试与真机调试
Android 模拟器调试与真机调试
#移动开发 #Android
一、模拟器调试与真机调试
1. 模拟器调试
运行源码或 SDK 中的 emulator,加参数
2. 真机调试
用 usb 线连接 G1 硬件和 PC
若是 windows 系统,则安装驱动
用源码或 SDK 中的 adb 命令看硬件是否连接成功
** $ adb devices ** 正常调试
注意:
在 Linux 连接真机时需使用 root 权限
如果之前连接过模拟器,最好连接前先杀掉 adb 后台进程
** $ killall adb **
3. Eclipse 中调试
若连接真机,未打开模拟器时,直接连接真机调试
若未连接真机,已打开模拟器时,在当前模拟器中调试
若未连接真机,也未打开模拟器时,打开模拟器调试
若只开多个真机或多个模拟器时,同时有多个可连接的设备,弹出列表供用户选择
4. 命令行中使用 adb 工具调试
连接多个设备时,需要用命令行参数指示设备名或设备类型
** $ adb–s ** ** 设备名 ** ** shell ** 设备名由 adb devices 列出
** $ adb– ...
Android界面开发
Android 界面开发
#移动开发 #Android
一、界面元素
1. 窗口:Activity
应用程序中每个屏幕显示都通过继承和扩展基类 Activity 实现
分类:基本 Activity,带内容的 Activity(如 ListActivity)
2. 对话框:Dialog
一种显示于 Activity 之上的界面元素,由 Activity
管理,用于显示一些临时信息和功能,它比 Activity 开销小
常用对话框: AlertDialog:信息对话框
DatePickerDialog,TimePickerDialog:时间日期选择对话框
ProgressDialog:进度对话框
还可以设置对话框内容为我们自定义的 View
相关函数: onCreateDialog():创建对话框的实现
showDialog():需要显示的时候调用
onPrepareDialog():更改已有对话框时调用
3. 菜单:Menu
一种显示于 Activity 之上的界面元素,由 Activity
管理,用于提供用户一些额外的选项和设置
常用菜单: Options Menu:按 Menu ...
Android基本组件及其交互
Android 基本组件及其交互
#移动开发 #Android
一、Android 的基本组件
1. Activity
应用程序中每个屏幕显示都通过继承和扩展基类 Activity
在一个应用程序中每个 Activity 都是独立的
2. Service
Service 是没有可见的用户界面,但可以长时间在后台运行
3. Broadcast
用户接受广播通知的组件,广播是一种同时通知多个对象的事件通知机制
应用程序注册不同的 Broadcast Receiver,从而接收不同广播通知
不实现图形界面
4. Content Provider
应用程序彼此间需要共享资源,数据通讯时,采用 content provider 机制
它能将应用程序特写的数据提供给另一个应用程序使用
二、组件间的通讯
1. ContentProvider 用于提供,ContentResolver 用于调用
2. Intent
用于在不同组件间传递消息:Activity, Service, Broadcast
Intent
一般带有一个组件对另一组件的请求的动作名称,请求动作及相关数据
Activity 相互调用 ...
Android系统文件结构
Android 系统文件结构
#移动开发 #Android
一、镜像文件 image
1. 如何得到镜像文件
编译 android 源码之后,在 out/target/product/generic 产生
ramdisk.img、system.img、userdata.img
SDK 的 platforms/android-*/images
ramdisk.img、system.img、userdata.img
2. 各镜像文件的含义
system.img 是由 system
目录打包压缩得到的,以只读方式挂载。
userdata.img 是由 data
目录打包压缩得到的,以读写方式挂载,用于存放用户数据,用户安装的软件包在被装在这里。
ramdisk.img 是模拟器的文件系统,把 ramdisk.img
解压出来可知道,ramdisk.img
里的文件和根文件夹的文件基本一样。
3. 镜像文件的挂载顺序
模拟器装载 ramdisk.img 并解压到内存,接着分别把 system.img 和
userdata.img 挂载到 ramdisk
下的 system 和 data ...
从c++到java(一)
从 c++ 到 java (一)
#编程语言 #编程语言/C #编程语言/Java
学习 JAVA 编程(一)
一、目的
由于之前都用 C/C++ 写程序,现在改用 JAVA 写 android
程序,有些相关的认识和积累,记录下来,自已保存资料,也供大家参考,帮助您在和我遇到同样问题的时候,可以快速解决。
我遇到的问题基本分以下几类:
1. 不了解程序的流程:编译,执行,如何代码组织
2. 看不懂别人写的程序:重要的关键字不认识
3. JAVA 的特性和习惯用法:不明白什么意思
4. 某些功能不知如何实现:找不到 JAVA 对应的语法
二、流程
1. 组织代码
以类组织
整个 JAVA
语言建立在类的逻辑结构上,任何想法都必须封装在类中,也就是说不允许函数,变量定义在类以外。
程序入口
既然所有函数都必须封装在类中,主函数(main)也不例外,哪个类是入口,就把
main 放在该类里边。对其它类和方法的调用可以写在
main 中,形如: ** public class HelloWorld {
public static void main(String args[]) {
Sy ...