Android源代码之DeskClock (一)

一.概述

      一直有read the fucking source code的计划,可是实行起来都是断断续续的.到如今也没有真正得读过多少Android的源代码(主要是懒的).如今回忆起来实在是非常羞愧,再加上好久没有写博客了,经过几天的琢磨准备在CSDN博客开两个长时间更新的系列博客(Android 源代码和Android设计模式),每周更新最少一篇.以此来督促自己,而且跟其它小伙伴一起分享这个过程.

      之前是直接读的framework层的源代码,读起来比較枯燥和生涩,碰巧上周写了一篇MVP在Android中应用的博客,就萌生了想要了解Android原生应用会用哪种设计风格的想法.经过考虑后就决定Android源代码系列就先从Android原生应用源代码開始最后到framework层.这一篇就从DeskClock程序開始.


二.移植出DeskClock

1.环境平台

    博主眼下的环境配置

    系统:Ubuntu 14.04 LTS

    IDE:Android Studio 1.2.1.1 

    JDK:1.8

    SDK:全部版本号 (有百度云资源)

    Android源代码:Android kitkat 4.4 & Android lollipop 5.0(有百度云资源)


2.准备源代码

      这个系列分析的是Android kitkat(4.4)版本号的DeskClock程序.用4.4版本号来分析主要原因是博主的手机是4.4的,之前有移植lollipop的DeskClock程序到手机上,结果不兼容,后来就用kitkat的DeskClock程序了.

      既然分析參考DeskClock的内容,当然须要有源代码才行,还必须得原汁原味的.大家能够去官方直接git clone代码下来(当然须要FQ)https://android.googlesource.com/platform/packages/apps/DeskClock,懒得FQ的童鞋也能够从博主这里下载,博主是从官网clone的代码,然后摘的kitkat-release分支,从下图能够看到这个节点上打了全部4.4版本号的tag.所以仅仅要是Android 4.4版本号的原生钟表程序都是这个源代码.CSDN下载




3.导入project

      将DeskClock源代码导入到Android studio中,编译发现有非常多错误,能够发现是缺少一些依赖库,主要是support v4 和 v13,在File -> Project Structure -> app -> Dependencies -> + 选择support-v4 和 support-v13. 然后rebuild



      rebuild完之后发现错误少了一批,主要还剩下一个 package com.android.datetimepicker.time does not exist,在刚在的依赖选择那里根本没有这个库,分析主要原因就是DeskClock在源代码环境中是系统级app,他的编译环境也是在源代码环境下,所以他依赖的其它的库都在源代码路径下,我们也能够从DeskClock源代码下的Android.mk文件里看出结果.

LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)

# include res directory from timepicker
datetimepicker_dir := ../../../frameworks/opt/datetimepicker/res
res_dirs := $(datetimepicker_dir) res
LOCAL_RESOURCE_DIR := $(addprefix $(LOCAL_PATH)/, $(res_dirs))

LOCAL_MODULE_TAGS := optional

LOCAL_STATIC_JAVA_LIBRARIES := android-support-v13
LOCAL_STATIC_JAVA_LIBRARIES += android-support-v4
LOCAL_STATIC_JAVA_LIBRARIES += android-opt-datetimepicker
      从Android.mk文件里能够看到DeskClock依赖了三个库,各自是android-support-v13,android-support-v4和android-opt-datetimpicker.之前v13和v4的依赖已经加进去了,选择就差datetimpicker这个库,而这个库的位置也是知道的,在上面有载入一个路径到环境里面:/frameworks/opt/datetimepicker.这个文件别的地方就找不到了,仅仅能去Android源代码里面去找了,幸好有Android 4.4的系统源代码,在opt路径下找到这个datetimepicker库源代码.

                     

      把datetimepicker以module的形式导入到DeskClock的项目中去,而且加入项目依赖.没有系统源代码的童鞋能够点击下载:datetimepicker CSDN

                                                  

      这个时候项目的结构是这种.

                                               

      再rebuild----一个错误都没有了,然后能够直接把程序跑到手机里面了.下面是执行效果图.

                                               


三.总结

      这一篇先把DeskClock从源代码环境和各种依赖关系里剥离到Android Studio中,能够让其以第三方应用的形式跑到手机中,下一篇将会開始分析DeskClock的源代码.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值