原创2010年android文档的整理打包的pdf档(含目录)
原创 2010
年 android 文档的整理打包的 pdf 档 (含目录)
#移动开发 #Android
原创 2010 年 android 文档的整理打包的 pdf 档 (含目录)
文档内容不能复制, 下载分 5 分, 介意者请慎下.
大部分内容可在 http://blog.csdn.net/xieyan0811
中看到
文档目录如下
1 系统配置 1
1.1 建立 SDK 开发环境 2
1.2 Android 源码的编译 6
1.3 编译在 G1 上运行的 android 2.1(eclair) 代码 9
1.4 编译在 G1 上运行的 android 2.2(froyo) 代码 _ 旧方法 12
1.5 编译在 G1 上运行的 android 2.2(froyo) 代码 _ 新方法 15
1.6 编译在 N1 上运行的 android 2.3(GingerBread) 代码 18
1.7 系统结构 21
1.8 模拟器调试与真机调试 22
1.9 安装和卸载应用程序(apk 包)23
1.10 系统升级 26
1.11 android 系统支持 app2sd(修改 boot.i ...
解析apk包内容
解析 apk 包内容
#移动开发 #Android
1.说明
写应用程序,很多时候遇到问题想看看别人的应用是怎么实现的,又苦于没有源码,apk
是 zip 压缩格式,而解压后 xml
是加密格式,也看不到源码。下面介绍用 google 官方发布的 apktool
工具来解开 apk 包,从而得到正常显示的 xml
文件和文本格式的程序,虽然不是 java 程序,但能看出逻辑。
2.方法
下载工具
[http://code.google.com/p/android-apktool/downloads/
](http://code.google.com/p/android-apktool/downloads/)
或者
http://u.115.com/file/f12d8136c3
需要下载 apktool2.3.2.tar.bz2 和
apktool-install-linux-2.2_r01-1.tar.bz2,前面的是
jar 包,后面的是调用它的平台相关的脚本
将它们解压在同一目录下
当 java 切换成 1.6 版本
运行
apktool–d apk 名 目录名
即可将信息 ...
简单的android中C库调试方法
简单的 android 中 C
库调试方法
1.说明
android 系统中调试 Java 非常容易,一般遇到错误都在 logcat
中打印出错时函数的调用关系,而 C
库中出错时只看到一些二进制信息,使用 gdbserver
调试环境搭建又比较复杂。下在介绍一个简单的调试库的方法,当然需要有 so
库的源代码
2.举例
错误信息如下,它表示了出错时的函数调用关系(下面调上面的) I/DEBUG
(56): #03 pc 000008d8 /system/lib/libstdc++.so
I/DEBUG (56): #04 pc 00003090 /system/lib/libttssynthproxy.so
I/DEBUG (56): #05 pc 0001c174
/data/data/com.xytts/lib/libttsxyttsengine.so
I/DEBUG (56): #10 pc 0000285c /system/lib/libttssynthproxy.so
I/DEBUG (56): #11 pc 00016e34 /system/lib/libdvm.so ...
编译在N1(G5,Passion)上运行的姜饼(GingerBread,Android2
编译在
N1(G5, Passion) 上运行的姜饼(GingerBread,Android 2.3)代码
(转载请注明出处: [http://blog.csdn.net/xieyan0811
](http://blog.csdn.net/xieyan0811))
1. 修改效果
在 32 位系统上正常编译通过,N1 上能运行,带 root 权限
带 N1 原始的四色 X 开机动画,默认语言为简体中文
带 google
market,文件管理器,百度中文手写输入法,金山词霸等常用软件
打电话,收发短信,WIFI,移动网络,热点上网正常(APN
已设)
音频,视频,照像,摄像,Gps,Sensor 使用正常
目前未测到不正常的功能
2. 下载 android 2.2 或 2.3 的 sdk
刷机使用的 fastboot 和 adb 都需要从 sdk 中获得
3. 对 N1 的处理
Bootloader 解锁
关机后,按 Power+ 音量减开机,按音量键选 fastboot,然后按 Power
进入
在 PC 端运行解锁命令如下(fastboot 命令可从 SDK/tools
...
调试lib库的一些小技巧
调试 lib 库的一些小技巧
#编程语言/JNI #编程语言/C
1. lib 库中打印 log 信息
在文件头部加
1234567** #define LOG_TAG “testme” #undef LOG // ** ** 有的版本需要这句,有的版本不需要 ** ** #include <utils/Log.h> ** 在程序中用 ** LOGE(“log is xxxxx”); ** 在编 lib 库的 Android.mk 中加 ** LOCAL_SHARED_LIBRARIES:=libutils **
2. lib 库中 jni 用 c++
在每个函数前头加,以免提示找不到函数名
123** #ifdef __cplusplus extern “C” #endif **
androidflash分区(nandflash)
android flash 分区 (nand
flash)
1. 查看当前系统的分区情况
12$ adb shell $ cat /proc/mtd
2. 分区对应的 img(源码编译后生成在 out/target/product/xxx/
目录下)
modem(多个,支持电话和 GPS)
amss.mbn
bootloader(启动用)
appsboot.mbn
空中升级
fota*(升级用, 可能多个)
内核和文件系统
boot.img(内核和基本文件系统)
系统分区
system.img(系统分区)
用户数据分区
userdata.img(数据分区)
3. 参考
bootloader 启动顺序
http://blog.csdn.net/yili_xie/archive/2010/05/14/5592276.aspx
android应用的启动过程
android 应用的启动过程
#移动开发 #Android
1. 说明
应用的启动过程通常是通过 startActivity
函数,无论是在应用中调其它应用还是在桌面(桌面是 Launcher
应用)上点击,最终都将通过这个函数启动进程或者界面,下面以分析代码的方式,介绍它具体的工作过程
2. 过程
Launcher/src/com/android/launcher.java
在应用或桌面上启动应用,例如桌面应用的启动由于中调用了
startActivity() 函数
frameworks/base/core/java/android/app/Activity.java:startActivity()
Activity.java 继承了 Context.java,并实现了它的
startActivity(),它向下调用了
execStartActivity()
frameworks/base/core/java/android/app/Instrumentation.java:execStartActivity()
execStartActivity 利用 Intent ...
android权限的实现
android 权限的实现
#移动开发 #Android
1. 权限
每个程序在安装时都有建立一个系统 ID,如
app_15,用以保护数据不被其它应用获取。Android
根据不同的用户和组,分配不同权限,比如访问 SD
卡,访问网络等等。底层映射为 Linux 权限。
2. 应用申请权限
应用开发者通过 AndroidManifest.xml 中
指定对应权限,再映射到底层的用户和组,默认情况下不设定特殊的权限。AndroidManifest
加入权限后系统安装程序时会在图形界面中提示权限
如果是缺少某个权限(程序中使用的某种权限而在 AndroidManifest.xml
中并未声名),程序运行时会在 logcat
中打印出错误信息 requires
与某个进程使用相同的用户 ID
应用程序可与系统中已存在的用户使用同一权限,需要在 AndroidManifest.xml
中设置 sharedUserId,如
android:sharedUserId="android.uid.shared",作用是获得系统权限,但是这样的程序属性只能在
build
整个系统时放进 ...
android适配硬件平台
android 适配硬件平台
1. 相关硬件
电池,RTC,键值(普通键值,DOCKING 键值),LED
灯,背光,传感器(亮度,距离,速度,指南针等),振动,蓝牙,相机,音视频引擎,网络,显示,电话
2. 硬件相关的主要目录
kernel,vendor,device,hardware,bootable
3. 以 HTC G1 为例分析其主要的平台配置目录 device/htc/dream/* (froyo
源码)
注意:froyo 以前版本在 vendor/htc 中,需要单独下载,现在都已经在
git 里包含了 g1,g2 的支持。
说明 (参见 g1,g2)
AndroidProducts.mk
说明产品都需要编什么东西,定义产品使用哪个 mk 文件
vendorsetup.sh
加上某硬件的支持,以便编译前用 lunch 选择
full_dream.mk
定义产品所要编译的项目,指定需要编译哪些应用,产品名称,设备,型号(重要)
BoardConfig.mk
含 mtd 设备的分区,硬件相关的模块,及编译工具
AndroidBoard.mk
编译 kernel, boo ...
androidfota升级
android fota 升级
1. 简介
fota(Firmware Over The Air),移动终端空中下载软件升级技术。
原理是根据算法把新旧版本之间的差别做成一个软件包,手机从服务器上下载到手机里,由手机完成软件版本的升级
2. 用户操作
设置-> 关于手机-> 检查更新,检查是否有更新版本。
可以使用默认设置自动更新:设置-> 关于手机->
自动系统检查
3. 升级过程
MT710 的 FOTA 由中国移动服务器发起,服务器发送 FOTA
信息到手机,手机收到信息并确认后,手机将自动上网下载升级包,下载后,手机将重启完成软件的更新。用户需要按照手机的提示,确认下载和
安装
即可,不需要其他操作,也不需要对手机进行特殊设置。下载中断时手机会自动续接,直到下载完毕。在手机
FOTA
过程中,需要保持手机在网络良好的连接状态,电池电量充足。
4. Fota 的相关源码
升级界面
package/app/Fota/*
系统层
system/core/fota/*
底层库支持
external/fotalib/*
fota 分区
因为像 boot.im ...