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

DDMS的全称是Dalvik Debug Monitor Service,它为我们提供例如:为测试设备截屏,针对特定的进程查看正在运行的线程以及堆信息、Logcat、广播状态信息、模拟电话呼叫、接收SMS、虚拟地理坐标等等。

DDMS工具存放在SDK – tools/路径下,可以直接双击ddms.bat运行。DDMS对Emulator和外接测试机有同等效用。如果系统检测到它们(VM)同时运行,那么DDMS将会默认指向Emulator。

--

常用adb 命令

3 应用程序包

      (1)上传到模拟器上的应用程序.apk,放在/data/app目录下

      (2)上传到模拟器上的程序包,放在/data/data目录下

可通过adb install **.apk来进行程序的安装

卸载程序时,在/data/app下进行程序的删除(rm **.apk)

 

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目录(),输入如下命令:

  说明:

如果需要抓开机过程的Log,请一定在开机过程中尽早连接手机。

使用命令抓Log时,PC和手机一直处于通讯状态,当抓取Log完成时,在cmd命令界面按‘Ctrl+c’键终止打印输出。

同时抓取多类Log时,请尽量使用命令行抓取,同时打开多个命令终端。

打印完成后对输出的文件进行再次打开确认,避免打印出错。

--

5 使用bugreport命令抓取Log

             有时候想看的一些信息却不知道怎么看,有时候我们发现了一个bug,可又不好复现,或者需要很多信息,操作麻烦。这时候可以尝试一下adb的工具bugreport,顾名思义,就是用来获取出错时候的信息,其中包含了各种log和系统信息,内容详尽。

      使用方法:

==

Android系统开发 默认壁纸的定制 主题风格的开发及定制 DDMS 常用adb 命令 抓取Log相关推荐

  1. android adb命令 抓取系统各种 log

    android adb命令 抓取系统各种 log getLog.bat: adb root adb remount adb wait-for-device adb logcat -v time > ...

  2. Android系统修改默认语言为中文

    Android系统修改默认语言为中文 对于Android系统修改默认语言的方法,各个版本的系统方法都差不多一致,至少我在Android5.1和Android9.0使用都成功,具体方法如下: 在buil ...

  3. Android 开发常用ADB命令集合

    Android开发常用ADB命令: 1. 安装apk adb install -r apk路径(注:-r表示覆盖) 2. 启动应用 adb shell am start -n package_name ...

  4. Android 系统(19)---常用ADB 命令

    一.常ADB命令 1. adb连接成功验证 命令:adb shell 命令:adb devices 2.使用adb安装.卸载应用 安装命令:adb install apk包名.apk 举例:安装测试电 ...

  5. 移动测试基础 Android 常用 adb 命令总结

    https://testerhome.com/topics/2565 Android 常用 adb 命令总结 针对移动端 Android 的测试, adb 命令是很重要的一个点,必须将常用的 adb ...

  6. 高通平台Android 蓝牙调试和配置手册--如何抓取log

    1.Android蓝牙调试概述 使用本文档可以使用以下方法调试一些常见的蓝牙问题: ■ Android主机日志(ADB logcat) ■ 蓝牙日志 ■ 音频配置文件日志 ■ 数据配置文件日志 ■ G ...

  7. android adb 抓取log

    adb 命令大全: https://www.wanandroid.com/blog/show/2310 https://blog.csdn.net/qq_39969226/article/detail ...

  8. android系统开机默认设置修改记录

    文章目录 1. 前言 2. 默认关闭数据 3. 默认关闭蓝牙 4. 默认关闭定位 5. 默认关闭飞行模式 6. 默认关闭wifi 7. 默认关闭USB调试 8. 默认息屏时间修改 9. 默认亮度修改 ...

  9. Android系统语言默认设置为简体中文

       Android系统默认的语言是英语,但是对于中国大陆Android产品厂商来说,不会出厂之后语言还是英语,到用户手里之后,用户自己设置成简体中文吧?有如果客户不懂英语,岂不是就不能设置系统语言了 ...

最新文章

  1. Android 快速选择联系人
  2. 解析网站发布系统利用ASP生成静态页面的方法
  3. 模糊pid控制的温度系统matlab源代码_变风量空调模糊 PID 控制系统的仿真研究
  4. jsonArray转换成List
  5. Java-GUI编程实战之管理系统 Day3【学生管理系统GUI设计、学生管理系统增删改查、项目MVC结构介绍、Java技能图谱】
  6. Java如何校验中文乱码_java如何判断是否中文乱码
  7. Asp.net core与golang web简单对比测试
  8. 【转】linux /centos 中OpenSSL升级方法详解
  9. mysql5.6数据库执行mysqldump备份,报1862密码过期的处理方法。
  10. python抽取数据库元数据_0797-使用HDP或CDP的Atlas采集CDH6的元数据和血缘
  11. html跨页面提取表单,HTML页面提取参数如何通过表单传递?
  12. html ui 下拉列表,html - 如何给样式Material-ui选择字段下拉菜单?
  13. ajax每次只加载3张图片,使用加载图片解决在Ajax数据加载中页面出现短暂空白的问题(推荐)...
  14. 计算机电路电子技术试题答案,数字电子技术基础试题及答案
  15. 真-Windows用户名
  16. asus路由器无线桥接模式设置
  17. android 内存6g 8g 12g,手机多大内存够用,6g和8g要怎么选,有必要上12g运存吗
  18. db2建立表空间 linux,DB2实验教程:创建数据库/表空间
  19. Java---设计模式app小软件汇总应用
  20. vc++实现avi文件的操作

热门文章

  1. QCC3040---htf文件修改
  2. matlab2017b怎么进行sil测试,基于Matlab的模型自动测试方法与流程
  3. Pan-cancer image-based detection of clinically actionable genetic alternations
  4. php 计算百分比,获取数字的百分比。 PHP
  5. 用爬虫获取网易云音乐热门歌手评论数
  6. PO、POJO、DTO、VO
  7. Django--在线相册管理系统(2)
  8. 如何读/写论文???
  9. python自动发outlook邮件_使用python自动发邮件(163、QQ、outlook邮箱)
  10. 头条召回算法-深度检索