Android系统源码阅读(5):Service在进程内绑定
该系列只记录阅读代码时遇到的问题和心得体会,具体代码讲解可以参考老罗的《Android系统源代码情景分析》,我就不班门弄斧了。我编译的AOSP版本:6.0.1_r50。
⚠️版权声明:文章可以转载,但请注明文章来源:http://itanch.github.io/
该系列只记录阅读代码时遇到的问题和心得体会,具体代码讲解可以参考老罗的《Android系统源代码情景分析》,我就不班门弄斧了。我编译的AOSP版本:6.0.1_r50。
该系列只记录阅读代码时遇到的问题和心得体会,具体代码讲解可以参考老罗的《Android系统源代码情景分析》,我就不班门弄斧了。我编译的AOSP版本:6.0.1_r50。
该系列只记录阅读代码时遇到的问题和心得体会,具体代码讲解可以参考老罗的《Android系统源代码情景分析》,我就不班门弄斧了。我编译的AOSP版本:6.0.1_r50。
这里和从Launcher启动过程几乎没分别,但是启动有些参数的设置还是有区别的。
该系列只记录阅读代码时遇到的问题和心得体会,具体代码讲解可以参考老罗的《Android系统源代码情景分析》,我就不班门弄斧了。我编译的AOSP版本:6.0.1_r50。
目前版本已经从Launcher2(packages/apps/Launcher2/src/com/android/launcher2)进化为Launcher3(packages/apps/Launcher3/src/com/android/launcher3)。两个版本的Launcher有着一定的差异,老罗书中以Launcher2为出发点。
more >>这里,我准备了Nexus 7(wifi第二版)作为测试机型,Android版本4.4.2。由于该机器是一个新机器,还没激活,需要在WLAN界面联网激活,否则无法进入系统。我已经尝试过使用代理IP,或者使用翻墙的其它手机作为热点,都以失败告终。所以,在这里我要介绍一种绕过Nexus 7激活的方法。
该过程用于Nexus 7绕过激活和设备root,有个好使的recovery也很必要。
首先保证电脑已经安装ADB环境,这里不再赘述安装过程。确保fastboot
命令可以在终端执行即可。
我在这里推荐TWRP recovery,用起来很顺手。在 TeamWin - TWRP 找到自己需要的recovery,我在这里选择Asus Nexus 7 2013 Wi-Fi (flo),这个一定要和自己移动设备匹配。
下载好twrp-xxxx.img
文件,关机后,按Power+Volumn down来重启手机,进入fastboot模式。这时,保证设备和电脑通过USB连接,同时使用命令,可以在终端显示设备名称:
如果手机初始状态为加锁状态,所以首先要解锁:
解锁成功后,然后刷入recovery:
刷入recovery,成功会显示一些Okey字样。成功刷入以后,关闭设备,使用Power+Volumn up进入recovery模式,等待一小会,如果长时间停留在twrp初始界面,可以点击音量上或下键来观察是否已经进入。如果recovery无法进入,有可能是刷入的recovery和设备版本不一致。
Recovery不仅仅用于Nexus 7绕过激活,一会root手机时,也需要用到。
Twrp recovery提供了很人性化的界面,可以使用点击操作。你需要首先利用recovery的挂在功能(mount),将/system分区挂在上,然后在计算机终端进入设备系统文件:
这时可以看到文件build.prop
,可以种cat
或者vi
来看里面内容,其中重要语句ro.setupwizard.network_required=true
,这个就是要求网络验证的配置。这里,无论你用何种方法,把true
改为false
,保存即可。
重启手机,如果卡在等待界面,则按音量键,看时候可以进入(其实我也不知其中原委,只是这样试了一下,尽量耐心等待一段时间)。进入后会发现进入了正常的初始化步骤,到达WLAN连接激活时,发现下面神奇的多了一个按钮“跳过”!过程中可能会出现一些网络错误什么的,不必关心,只要一步步初始化,就可以最终进入系统。
手机已经root请跳过此步骤。
可以使用国内的root大师、精灵之流的root软件进行root,但是并不推荐,因为它们会附加安装一些应用。这里我推荐使用SuperSU结合recovery进行root。
首先下载SuperSU zip文件,下载完毕后,将其传入手机某个位置,然后重启进入recovery模式。
在recovery选择install 这个zip文件即可。重启后可以发现应用SuperSU,可以利用它管理手机权限。
Android官方提供了很方便的image资源,其中 Nexus factory image列出了可用的所有Nexus镜像,寻找到适合的镜像进行下载,建议验证一下MD5校验码。下载完毕后,可以按照官网上的教程刷入系统,过程比较简单。
我在这里刷入了Android 4.3 (JSS15Q)版本,降低了Nexus系统的版本。刷机完毕后,可以重复上面步骤,刷入需要的的工具。需要注意的是在绕过激活时,4.3版本和4.4版本略有不同。在4.3版本中,前面步骤相同,最后修改build.prop
时,只要加入ro.setupwizard.mode=DISABLED
该配置即可绕过激活。
从SB Admin开始学习AngularJS!
SB Admin v2.0 rewritten in AngularJS是一个SB Admin的AngularJS的实现,源代码、安装和运行可以参考以上链接。
Nodejs升级:
npm升级:
|
|
Yeoman确实是一个很强大的web应用架构工具,他可以帮你完成大部分繁琐的工作,从而你可以更专心的实现你的功能。
位于app/目录下的index.html是整个网页的主要入口。
位于app/scripts/目录下,应用的主要module。
module
首先,我们可以看到sbAdminApp使用了如下module:
$route
(根据URL进行路由),UI-Router则是根据状态进行路由。 config
stateProvider:由ui.router提供,功能类似于Angular v1的router,但是它只专注于state。state就是应用中的某一个状态,到达某一个状态时,会将template插入到相应位置。该部分的主要工作是将state、html和controller对应起来。
resolve
可以提供给controller一些定制的内容,采用key:value
的格式。在这里,使用ocLazyLoad加载了一些模块。
首先加载的是sbAdminApp
模块中的header部分,然后依次为header-notification、sidebar和sidebar-search。这些部分在加载的过程中,采用了module.directive
函数,这个函数可以对指定的元素附加一些行为,如:
angular.module('sbAdminApp')
.directive('header',function(){
return {
templateUrl:'scripts/directives/header/header.html',
restrict: 'E',
replace: true,
}
});
这里就是在main.html
的<header></header>
元素替换为header.html
的内容。
从源代码中不难发现,header、header-notification、sidebar和sidebar-search文件的加载是按照一定的顺序的,因为前后顺序在View中表现为嵌套的父子关系。
然后,加载了toggle-switch
,一个开关模块;ngAnimate
,动画效果;ngCookies
,读写浏览器cookies;ngResource
,加载资源对象;ngSanitize
,可以对HTML进行清洁;ngTouch
,对可触摸设备提供服务。
其它state类似。
ocLazyLoadProvider:来自于oc.lazyLoad,events:true
可以使得加载module时可以发送广播。
urlRouterProvider:由ui.router提供,在这里只是用它来处理其它状态下的情况,统一重定向至/dashboard/home
。
系统环境:ubuntu14.04
mesos: 0.25.0
根据官网Getting Started介绍,尝试从源代码编译安装,但未成功。在make check
命令执行时出现一个错误,经过分析终于发现原因在于测试中会通过字符串比较验证结果,由于我的系统是中文系统,测试中预想的结果是英文的,所以就导致错误。最后,需要能够访问code.google.com才能进行make install
。
从源代码安装时会安装一些依赖库,同时会安装openjdk。
more >>
tag:
缺失模块。
1、请确保node版本大于6.2
2、在博客根目录(注意不是yilia根目录)执行以下命令:
npm i hexo-generator-json-content --save
3、在根目录_config.yml里添加配置:
jsonContent: meta: false pages: false posts: title: true date: true path: true text: false raw: false content: false slug: false updated: false comments: false link: false permalink: false excerpt: false categories: false tags: true