码迷,mamicode.com
首页 > 移动开发 > 详细

Android学习之往系统应用中添加framework层的jar包

时间:2015-03-09 17:32:42      阅读:243      评论:0      收藏:0      [点我收藏+]

标签:android   framework      

Framework中的app为什么在编译的时候需要到源码中编译:

因为缺少必要的包(源码)----在连接的时候是以class文件来连接编译的

 

以Systemeui为例:

 技术分享

缺少这个包技术分享

寻找android源码的时候可以找到这个包:

技术分享

知道framework在编译的时候会打包自己的java源文件,于是在打包的out文件中寻找打包的这个技术分享 :其实也是能够找到的:

技术分享

技术分享技术分享

还有很多Permission denied(当然这是在别人权限下的查找……)

 技术分享

当然最后找到了

技术分享

里面的jar包:

技术分享

打开jar包里面是classes的dex文件:

技术分享

但是dex文件暂时不知道怎么打开,因此搜索到此结束。但是大致理解为:

framework中有一些不需要作为对外接口调用的源码包,都以dex这种直接在android系统上跑的文件格式被已经编译过了,所以在eclipse中直接编译的时候就缺少必要的包,这些包因为不需要对外开放,已经被打包成了更彻底的dex文件,只是保证运行,而不对外开放 

/****************************/

反驳以上观点


已经证实了,并不是被编译成为了所谓的更彻底的dex文件,而是在sdk中标注了@hide所以在源码编译中是有该api而sdk中没有。因此可以通过更换sdk 中的api来达到效果。

 

看组图吧!

同样是在寻找 这个类技术分享。当然这次完成的项目中就是:

技术分享

 

这种情况是为何呢?

程序当然是可以跑起来的,运行也没有问题。

具体操作步骤:(替换sdk中的android.jar包)

源码中编译的framework层的jar包文件

 技术分享

Sdk中的android.jar中的android文件(应该也基本上就是framework层的jar包)

 技术分享

两个文件中源码中的android文件夹要较于sdk中的大很多。这应该是很多源码中的类文件,及一些jar包被屏蔽或者hide掉了。打上了hide的标签。这样应该基本上是可以开发lancher或者setting之类的了。

Android学习之往系统应用中添加framework层的jar包

标签:android   framework      

原文地址:http://blog.csdn.net/feishangbeijixing/article/details/44156945

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!