把安卓源代码中的system app独立出来,像开发普通app那样开发
此时你导入想DeskClock、Camera等没有调用到hide标签的项目时,这些项目都不会报错,你能够直接进行对应的改动或研究。呵呵,假设对应直接在eclipse或手机上执行的话,可能会提示你数字签名不对。这个你自己改下整个项目名重写个数字签名就可以,还有更狠的就是无论是手机还是模拟器你直击拿到root权限后,把原来的app删除掉,然后再执行你编译的源码。
假设涉及到hide标签怎么办咧,比如setting、Launcher2等项目,请看以下怎样操作:
以下以Launcher2为例,具体讲解一下:
1.将Launcher2项目导入eclipse中。
这时候Launcher2project已经导入到eclipse中了,只是这时候会有158个错误(呵呵,编译2.3.3的是有这么多。反正其它版本号也应该是有100多个,差不了多少).
2.加入Launcher2使用的包文件。
由于在Android源代码中,非常多方法、成员、类、包都被打上@hide标签。这些成员在SDK中没有公开,以至于在编译Launcher源代码时最常遇到的类android.view.View的成员mScrollX无法訪问。因此首先须要下载Android的代码而且编译好,由于要用到一些编译完毕的class.jar文件
这里我们用到的有:(生成的包的路径为out/target/common/obj/JAVA_LIBRARIES)
1)framework_intermediates/classes.jar :这个主要是android的框架类
2)android-common_intermediates/classes.jar :这个包括com.android.common.Search这个类
3)core_intermediates/classes.jar :这个包包括dalvik.system.VMRuntime这个类
这些都是须要导入到project里面的包,这个能够通过配置project的Build Path来增加,
右键project名称然后选择Build Path->Configure Build Path...->Libraries->Add Library->User Library->User Libraries...->New...
然后将上面3个依赖的包一个个的增加进来,分别命名为android_framework,android_common,android_core.
将3个包增加进来后,然后还须要将它们放到android2.3.3这个包的前面,能够在Build Path配置中选择Order and Export
这时候就会发现Launcher2project以及没有错误了,也能够编译了。
3.改动Launcher2包名称,在模拟器上执行更改后的Launcher2.
改掉原始包的名字,切记使用eclipse的重命名机制(在包名上按F2可改动)。不仅是类的引用。还有非常多xml文件内部的引用(如import com.android.launcher3.R;)。仅仅要重命名不错。这些都能够一次性搞定的。
New name填写你自己的包名,把以下四项所有勾选。点击“Preview”
特别注意:你的项目最好不要放在中文路径下。不然rename时会出错,我就是開始放在中文路径下出错弄了非常久才发现错误。
4.AndroidManifest.xml文件中面,找到这句话删除掉。
(android:sharedUserId="android.uid.shared")
这样就大功告成了,我是用2.3的launcher来做实验的,结果没问题,执行成功
把安卓源代码中的system app独立出来,像开发普通app那样开发的更多相关文章
- 如何单独编译Android源代码中的模块
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6566662 第一次下载好Android源代码工 ...
- 【转】如何单独编译Android源代码中的模块--不错
原文网址:http://blog.csdn.net//article/details/6566662/ 第一次下载好Android源代码工程后,我们通常是在Android源代码工程目录下执行make命 ...
- qemu-kvm-1.1.0源代码中关于迁移的代码分析
这篇文档基于qemu-kvm-1.1.0源代码进行分析. 首先,源代码中的hmp-commands.hx文件里有下面内容: { .name = "migrate",/* 在moni ...
- 如何将 Area 中的 Controller 放到独立的程序集?
目录 背景如何将 Area 中的 Controller 放到独立的程序集?备注 背景返回目录 本文假设您已经熟悉了 ASP.NET MVC 的常规开发方式.执行模型和关键扩展点,这里主要说一下如何使用 ...
- ASP.NET MVC:看 MVC 源码,学习:如何将 Area 中的 Controller 放到独立的程序集?
背景 本文假设您已经熟悉了 ASP.NET MVC 的常规开发方式.执行模型和关键扩展点,这里主要说一下如何使用 ASP.NET MVC 的源代码解决一些问题. 如何将 Area 中的 Control ...
- 解压 Android 系统中的 system.img
本篇文章讲解 system.img 是什么东西,以及它的打包和解包方式 system.img 是什么 system.img 是 Android 系统中用来存放系统文件的镜像 (image) ,文件格式 ...
- JRE System Library、Referenced Libraries、Web App Libraries的含义
JRE System Library.Referenced Libraries.Web App Libraries 这三个都是jar包的存放集合. JRE System Library:指Java S ...
- 《AndroidStudio导入安卓源码-idegen》---可方便查看安卓源代码
idegen是Android源码中的一个模块,需要编译一下.生成一个jar包.然后再进行构建生成AndroidStudio配置相关文件. > 什么是idegen 要将Android系统源代码工程 ...
- 【应用服务 App Service】如何移除App Service Response Header中包含的服务器敏感信息
问题描述 有些情况下,当应用部署到App Service上后,在有些Response Header中,可以看见关于服务器的一些信息,这样会导致隐藏的安全问题,所以可以在web.config中移除某些关 ...
随机推荐
- 通过命令修改wampserver的mysql密码
WAMP安装好后,mysql教程密码是为空的,那么要如何修改呢?其实很简单,通过几条指令就行了,下面我就一步步来操作. 首先,通过WAMP打开mysql控制台. 提示输入密码,因为现在是空,所以直接按 ...
- 滚动条响应鼠标滑轮事件实现上下滚动的js代码
<script type="text/javascript"> var scrollFunc=function(e){ e=e || window.event; if( ...
- YII 小部件 解决多选按钮和单选按钮不在同一水平上 'separator'=>' '
主要是添加separator属性(这里)$hoddy,$sex在控制器里面定义的数组,然后render传过来的 <td> <?php echo $form-> ...
- Bootstrap 和 LESS
Bootstrap 简介 什么是 Bootstrap? Bootstrap 是一个用于快速开发 Web 应用程序和网站的前端框架.Bootstrap 是基于 HTML.CSS.JAVASCRIPT 的 ...
- 安装search everything中文语言包
Everything 作为很多人的必备工具,特写这篇文章,一方面让想使用国外优秀软件的英语小白有一段过渡期,另一方面也为自己整理下资料.当然,这个可不是不学好英语的正当理由. 步骤: 1. 下载好se ...
- QBImagePickerController 用法
// // ViewController.m // QBImagePickerControllerDemo // // Created by Tanaka Katsuma on 2013/12/30. ...
- MySql拾遗
1.“1130-Host is not allowed to connect to this MySQL server” 满世界的人都告诉你,到user表中把root + localhost的“loc ...
- Idea设置自动导包
默认 IntelliJ IDEA 是没有开启自动 import 包的功能. 勾选标注 1 选项,IntelliJ IDEA 将在我们书写代码的时候自动帮我们优化导入的包,比如自动去掉一些没有用到的包 ...
- 转:.NET 环境中使用RabbitMQ
原文来自于:http://blog.jobbole.com/83819/ 原文出处: 寒江独钓 欢迎分享原创到伯乐头条 在企业应用系统领域,会面对不同系统之间的通信.集成与整合,尤其当面临异构系统 ...
- Web工程软件升级之数据库升级(一)
1. 首先检查oracle数据库版本是否正确 (可以使用方法 lsinventory来实现) 2. 检查oracle连接是否成功 3. 解压升级包,放到特定目录 4. 做升级前数据备份,备份主要业务数 ...