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和系统信息,内容详尽。
使用方法:
==
Android系统开发 默认壁纸的定制 主题风格的开发及定制 DDMS 常用adb 命令 抓取Log相关推荐
- android adb命令 抓取系统各种 log
android adb命令 抓取系统各种 log getLog.bat: adb root adb remount adb wait-for-device adb logcat -v time > ...
- Android系统修改默认语言为中文
Android系统修改默认语言为中文 对于Android系统修改默认语言的方法,各个版本的系统方法都差不多一致,至少我在Android5.1和Android9.0使用都成功,具体方法如下: 在buil ...
- Android 开发常用ADB命令集合
Android开发常用ADB命令: 1. 安装apk adb install -r apk路径(注:-r表示覆盖) 2. 启动应用 adb shell am start -n package_name ...
- Android 系统(19)---常用ADB 命令
一.常ADB命令 1. adb连接成功验证 命令:adb shell 命令:adb devices 2.使用adb安装.卸载应用 安装命令:adb install apk包名.apk 举例:安装测试电 ...
- 移动测试基础 Android 常用 adb 命令总结
https://testerhome.com/topics/2565 Android 常用 adb 命令总结 针对移动端 Android 的测试, adb 命令是很重要的一个点,必须将常用的 adb ...
- 高通平台Android 蓝牙调试和配置手册--如何抓取log
1.Android蓝牙调试概述 使用本文档可以使用以下方法调试一些常见的蓝牙问题: ■ Android主机日志(ADB logcat) ■ 蓝牙日志 ■ 音频配置文件日志 ■ 数据配置文件日志 ■ G ...
- android adb 抓取log
adb 命令大全: https://www.wanandroid.com/blog/show/2310 https://blog.csdn.net/qq_39969226/article/detail ...
- android系统开机默认设置修改记录
文章目录 1. 前言 2. 默认关闭数据 3. 默认关闭蓝牙 4. 默认关闭定位 5. 默认关闭飞行模式 6. 默认关闭wifi 7. 默认关闭USB调试 8. 默认息屏时间修改 9. 默认亮度修改 ...
- Android系统语言默认设置为简体中文
Android系统默认的语言是英语,但是对于中国大陆Android产品厂商来说,不会出厂之后语言还是英语,到用户手里之后,用户自己设置成简体中文吧?有如果客户不懂英语,岂不是就不能设置系统语言了 ...
最新文章
- Android 快速选择联系人
- 解析网站发布系统利用ASP生成静态页面的方法
- 模糊pid控制的温度系统matlab源代码_变风量空调模糊 PID 控制系统的仿真研究
- jsonArray转换成List
- Java-GUI编程实战之管理系统 Day3【学生管理系统GUI设计、学生管理系统增删改查、项目MVC结构介绍、Java技能图谱】
- Java如何校验中文乱码_java如何判断是否中文乱码
- Asp.net core与golang web简单对比测试
- 【转】linux /centos 中OpenSSL升级方法详解
- mysql5.6数据库执行mysqldump备份,报1862密码过期的处理方法。
- python抽取数据库元数据_0797-使用HDP或CDP的Atlas采集CDH6的元数据和血缘
- html跨页面提取表单,HTML页面提取参数如何通过表单传递?
- html ui 下拉列表,html - 如何给样式Material-ui选择字段下拉菜单?
- ajax每次只加载3张图片,使用加载图片解决在Ajax数据加载中页面出现短暂空白的问题(推荐)...
- 计算机电路电子技术试题答案,数字电子技术基础试题及答案
- 真-Windows用户名
- asus路由器无线桥接模式设置
- android 内存6g 8g 12g,手机多大内存够用,6g和8g要怎么选,有必要上12g运存吗
- db2建立表空间 linux,DB2实验教程:创建数据库/表空间
- Java---设计模式app小软件汇总应用
- vc++实现avi文件的操作
热门文章
- QCC3040---htf文件修改
- matlab2017b怎么进行sil测试,基于Matlab的模型自动测试方法与流程
- Pan-cancer image-based detection of clinically actionable genetic alternations
- php 计算百分比,获取数字的百分比。 PHP
- 用爬虫获取网易云音乐热门歌手评论数
- PO、POJO、DTO、VO
- Django--在线相册管理系统(2)
- 如何读/写论文???
- python自动发outlook邮件_使用python自动发邮件(163、QQ、outlook邮箱)
- 头条召回算法-深度检索