Android系统开发 默认壁纸的定制 主题风格的开发及定制 DDMS 常用adb 命令 抓取Log
Android系统开发
Android系统本身的功能在增加和完善过程中。在系统开发中如果涉及系统API的改动,则一定要慎重,系统的API的改动可能涉及Android应用程序的不兼容。
系统开发原则:
Android系统开发只是在不改变系统API的情况下修正系统的缺陷或增强系统的功能。可以增加接口,但绝不允许修改或删除原始系统接口。
--
平台扩展功能简介
Android平台本身已经有非常强大的功能,但面对运营商的定制,在使用同一工程针对不同定制时的兼容性仍显不足,例如不同的运营商壁纸的定制、不同风格的定制、不同功能界面的定制等等。
针对定制问题,我们在原始Android平台上做了部分的功能扩充,使得在同一工程下不同的版本可以使用自定义的定制项,满足方便快捷的定制需求。
--
平台扩展功能简介
默认壁纸的定制:
原始Android平台中默认的静态壁纸是一张jpg图片(default_wallpaper.jpg),存放在:
android\frameworks\base\core\res\res\drawable目录中。
针对不同运营商需要设置不同的壁纸,此时需要替换平台中的图片进行重新编译和打包。
同时,Android平台中没有定制动态壁纸的接口,也不能针对需求方便的定制动态壁纸。
--
为了方便快捷的定制壁纸,对平台的壁纸设置方法进行了增强。
Android设置壁纸的流程如下:
1. 首先检查系统是否设置了动态壁纸,若有则将动态壁纸设为默认壁纸。此处huawei进行了增强,在配置文件中设置了动态壁纸的定制项ro.config.hw_CustomizeWallpaper,无需修改代码只需将该项设为需要壁纸的名字即可,以实现动态壁纸的定制。
2. 若未设置动态壁纸,则使用default_wallpaper静态壁纸。
此处huawei进行了增强,将定制的静态壁纸放入了手机特定路径下(如手机的userdata区),避免了资源的重新编译,便于静态壁纸的替换。
注:若huawei定制的动态和静态壁纸都未设置,则使用Android原始的default_wallpaper作为壁纸。
--
主题风格的开发及定制:
大家在Android手机中最常见的主题风格是黑底白字风格,这是平台中的默认主题风格,很多手机基本上维持了此UI界面,部分可能做了少量修改。
为了丰富UI界面和支持运营商定制不同的风格界面,在平台中开发出了一套新的huawei自定义风格。该风格可作为应用界面的切换接口,便于不同运营商定制不同风格时的主题风格切换。
--
应用无需每次根据不同风格进行代码的修改,只需使用该风格就可以方便的进行定制风格的切换:
例如在setting应用界面两种风格的转换:
平台新增资源的分离:
问题:
在android\frameworks\base\core\res目录中,定义了所有framework和APK使用的资源。在编译时生成一个framework-res.apk,里面包含了所有的资源数据,framework和应用需要使用这些资源时,只需要引用这些资源的id。这些资源分为两类:一种是public资源,另一种是internal资源。public资源的id通过public.xml进行了固定;但internal资源的id则未固定,当我们在framework中新增资源时,这些新增资源都属于internal资源,因此所有internal资源id可能发生变化。若APK使用了framework中的internal资源,而在APK编译时不基于新的framework资源进行编译,则会出现APK使用的资源错误。
--
解决方法:
在framework里面增加一个跟res并列的目录res-hwext,这个目录中存放所有framework中新增的资源。这些资源的id将全部进行固定。
huawei新增的资源可以一目了然,便于资源的管理。APK可不受framework新增资源的影响独立编译,便于版本的制作。进一步便于在平台升级时的资源移植。
--
DDMS
l DDMS的全称是Dalvik Debug Monitor Service,它为我们提供例如:为测试设备截屏,针对特定的进程查看正在运行的线程以及堆信息、Logcat、广播状态信息、模拟电话呼叫、接收SMS、虚拟地理坐标等等。
l DDMS工具存放在SDK – tools/路径下,可以直接双击ddms.bat运行。DDMS对Emulator和外接测试机有同等效用。如果系统检测到它们(VM)同时运行,那么DDMS将会默认指向Emulator。
--
常用adb 命令
l 3 应用程序包
(1)上传到模拟器上的应用程序.apk,放在/data/app目录下
(2)上传到模拟器上的程序包,放在/data/data目录下
l 可通过adb install **.apk来进行程序的安装
l 卸载程序时,在/data/app下进行程序的删除(rm **.apk)
l 4 使用logcat命令抓取Log
adb命令输入端可以同时打开多个,也就是说可以同时抓取多类Log。举例说明:
抓取LOG_ID_MAIN类Log,进入android-sdk的tools目录(),输入如下命令,
命令框显示如下:
命令说明:
adb shell:连接adb端口
logcat:抓取Log命令
>log_main.txt:抓取的Log以文件的形式输出,符号‘>’后为文件名,该文件保存在当
前的工具目录下
--
抓取LOG_ID_RADIO类Log,进入android-sdk的tools目录(),输入如下命令:
说明:
l 如果需要抓开机过程的Log,请一定在开机过程中尽早连接手机。
l 使用命令抓Log时,PC和手机一直处于通讯状态,当抓取Log完成时,在cmd命令界面按‘Ctrl+c’键终止打印输出。
l 同时抓取多类Log时,请尽量使用命令行抓取,同时打开多个命令终端。
l 打印完成后对输出的文件进行再次打开确认,避免打印出错。
--
l 5 使用bugreport命令抓取Log
有时候想看的一些信息却不知道怎么看,有时候我们发现了一个bug,可又不好复现,或者需要很多信息,操作麻烦。这时候可以尝试一下adb的工具bugreport,顾名思义,就是用来获取出错时候的信息,其中包含了各种log和系统信息,内容详尽。
使用方法:
==