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代码下来(当然需要翻墙)https://android.googlesource.com/platform/packages/apps/DeskClock,懒得翻墙的童鞋也可以从博主这里下载,博主是从官网clone的代码,然后摘的kitkat-release分支,从下图可以看到这个节点上打了所有4.4版本的tag.所以只要是Android
4.4版本的原生钟表程序都是这个源码.CSDN下载

3.导入工程

将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的源码.

转载请注明出处:http://blog.csdn.net/l2show/article/details/46709863

时间: 2024-10-12 15:47:01

Android源码之DeskClock (一)的相关文章

Android源码之DeskClock (二)

一.概述 在DeskClock(一)中介绍了该程序源码的迁出,现在开始分析该应用的源码,DeskClock主要有四个功能,闹钟,时钟,定时,和秒表,在这篇博客中主要分析DeskClock的入口和主UI上的逻辑结构,在后续的系列中会把这四个功能都串起来. 二.源码分析 1.activity-alias 多入口配置 以前装应用的时候有些应用会在桌面上生成两个图标,这两个图标有些是同一个Activity的入口,有些是另外一个Activity的入口,这样的效果是怎么实现的呢?在看Android原生Des

Android源码之DeskClock (四)

2.主页的主要结构 主页主要是由Action bar ,ViewPager 和FragmentPagerAdapter 三部分组合而成的,通过四个Action bar TAB和抽象过的Fragment由自定义的FragmentPagerAdapter适配器来完成DeskClock中四个主要功能的切换. 在DeskClock被创建的时候会先取得一个ActionBar被选中显示的标识位置,再去初始化Views.这里需要注意的是该ViewPager通过setOffscreenPageLimit方法来设

android源码编译1

一.环境说明: 1.liunx系统:Ubuntu12.04 2.jdk:sun-java6-jdk 3.g++4.5 gcc4.5 二.android源码的目录结构 |-- Makefile |-- bionic (bionic C库) |-- bootable (启动引导相关代码) |-- build (存放系统编译规则及generic等基础开发包配置) |-- cts (Android兼容性测试套件标准) |-- dalvik (dalvik JAVA虚拟机) |-- development

Android核心服务解析篇(二)——Android源码结构分析

获得Android源码后,我们来分析源码结构.源码的全部工程分为如下三个部分. ①Core Project:核心工程部分,这是建立Android系统的基础,保存在根目录的各个文件夹中. ②External Project:扩展工程部分,可以使其他开源项目具有扩展功能,保存在external文件夹中. ③Package:包部分,提供了Android的应用程序,内容提供者,输入法和服务,保存在package文件夹中. 在获取的Android4.3源码目录中,包含了原始Android的目标机代码,主机

[安卓]windows下如何安装Android源码

本文改写于:http://www.cnblogs.com/skyme/archive/2011/05/14/2046040.html 1.下载并安装git: 在git-scm.com上下载并安装git,安装后它会自动加载在windows右键菜单中. 2.生成下载命令列表: git下载的格式形如: git clone https://android.googlesource.com/name 把name换成具体的目录即可,android源码的目录极多,手动手写太过繁杂,改写文章提供了一个java程

完整版linux下android源码下载、编译、模拟器启动运行

一.环境说明: 1.VMware版本:8.0.3 build-703057 2.liunx系统:Ubuntu10.10 3.jdk:sun-java6-jdk 二.Ubuntu 10.10更新源列表 由于??Ubuntu 10.10版本的源已经过期了,所以,需要对其进行更新,Ubuntu 10.10 已经发布了,下面提供更新源方法与更新源列表地址: 1.sudo gedit /etc/apt/sources.list     编辑你的源列表,将原来的内容全部删除,添加下面的源,复制到你的列表中,

android源码地址及下载介绍

git clone https://android.googlesource.com/device/common.git  git clone https://android.googlesource.com/device/google/accessory/arduino.git  git clone https://android.googlesource.com/device/google/accessory/demokit.git  git clone https://android.go

(国内)完美下载Android源码Ubuntu版

今天写的文章莫名奇妙的没了,所以再重新写一篇. 首先,为了方便起见,我已经将系统更换成里Ubuntu,因为官方推荐使用这个Linux发行版(唉,csdn给我丢文章了,没动力写东西了.)先来一张系统的截图: Ubuntu的版本是15.04(推荐用这个版本).接下来是我们可能用到的软件. git :使用repo工具的时候会用到git,git并没有在Ubuntu中预装,所以需要事先安装git,使用命令: sudo apt-get install git 安装完成之后,需要对git进行配置,设置git的

简记Ubuntu下载 Android源码

1.下载Ubuntu系统,推荐16.04以上版本: 2. git : 使用repo工具的时候会用到git,要预先安装git,使用命令:sudo apt-get install git 3. 安装git后,对git进行配置,设置git电子邮件和用户名 (1) git config --global user.email "你的电子邮件" (2) git config --global user.name "你的名字" 4. 安装curl (开源文件传输工具) , 使用