个人建议首先依照android源码的ide/eclipse中的格式化xml和import导入到你编译的eclipse中,假设你编译的android源码是2.3以上的版本号的,建议用JDK6以上,提醒各位的是new androidProject不是Java project.

     此时你导入想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那样开发的更多相关文章

  1. 如何单独编译Android源代码中的模块

    文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6566662 第一次下载好Android源代码工 ...

  2. 【转】如何单独编译Android源代码中的模块--不错

    原文网址:http://blog.csdn.net//article/details/6566662/ 第一次下载好Android源代码工程后,我们通常是在Android源代码工程目录下执行make命 ...

  3. qemu-kvm-1.1.0源代码中关于迁移的代码分析

    这篇文档基于qemu-kvm-1.1.0源代码进行分析. 首先,源代码中的hmp-commands.hx文件里有下面内容: { .name = "migrate",/* 在moni ...

  4. 如何将 Area 中的 Controller 放到独立的程序集?

    目录 背景如何将 Area 中的 Controller 放到独立的程序集?备注 背景返回目录 本文假设您已经熟悉了 ASP.NET MVC 的常规开发方式.执行模型和关键扩展点,这里主要说一下如何使用 ...

  5. ASP.NET MVC:看 MVC 源码,学习:如何将 Area 中的 Controller 放到独立的程序集?

    背景 本文假设您已经熟悉了 ASP.NET MVC 的常规开发方式.执行模型和关键扩展点,这里主要说一下如何使用 ASP.NET MVC 的源代码解决一些问题. 如何将 Area 中的 Control ...

  6. 解压 Android 系统中的 system.img

    本篇文章讲解 system.img 是什么东西,以及它的打包和解包方式 system.img 是什么 system.img 是 Android 系统中用来存放系统文件的镜像 (image) ,文件格式 ...

  7. JRE System Library、Referenced Libraries、Web App Libraries的含义

    JRE System Library.Referenced Libraries.Web App Libraries 这三个都是jar包的存放集合. JRE System Library:指Java S ...

  8. 《AndroidStudio导入安卓源码-idegen》---可方便查看安卓源代码

    idegen是Android源码中的一个模块,需要编译一下.生成一个jar包.然后再进行构建生成AndroidStudio配置相关文件. > 什么是idegen 要将Android系统源代码工程 ...

  9. 【应用服务 App Service】如何移除App Service Response Header中包含的服务器敏感信息

    问题描述 有些情况下,当应用部署到App Service上后,在有些Response Header中,可以看见关于服务器的一些信息,这样会导致隐藏的安全问题,所以可以在web.config中移除某些关 ...

随机推荐

  1. 通过命令修改wampserver的mysql密码

    WAMP安装好后,mysql教程密码是为空的,那么要如何修改呢?其实很简单,通过几条指令就行了,下面我就一步步来操作. 首先,通过WAMP打开mysql控制台. 提示输入密码,因为现在是空,所以直接按 ...

  2. 滚动条响应鼠标滑轮事件实现上下滚动的js代码

    <script type="text/javascript"> var scrollFunc=function(e){ e=e || window.event; if( ...

  3. YII 小部件 解决多选按钮和单选按钮不在同一水平上 'separator'=>'&nbsp;'

    主要是添加separator属性(这里)$hoddy,$sex在控制器里面定义的数组,然后render传过来的 <td>          <?php echo $form-> ...

  4. Bootstrap 和 LESS

    Bootstrap 简介 什么是 Bootstrap? Bootstrap 是一个用于快速开发 Web 应用程序和网站的前端框架.Bootstrap 是基于 HTML.CSS.JAVASCRIPT 的 ...

  5. 安装search everything中文语言包

    Everything 作为很多人的必备工具,特写这篇文章,一方面让想使用国外优秀软件的英语小白有一段过渡期,另一方面也为自己整理下资料.当然,这个可不是不学好英语的正当理由. 步骤: 1. 下载好se ...

  6. QBImagePickerController 用法

    // // ViewController.m // QBImagePickerControllerDemo // // Created by Tanaka Katsuma on 2013/12/30. ...

  7. MySql拾遗

    1.“1130-Host is not allowed to connect to this MySQL server” 满世界的人都告诉你,到user表中把root + localhost的“loc ...

  8. Idea设置自动导包

    默认 IntelliJ IDEA 是没有开启自动 import 包的功能.  勾选标注 1 选项,IntelliJ IDEA 将在我们书写代码的时候自动帮我们优化导入的包,比如自动去掉一些没有用到的包 ...

  9. 转:.NET 环境中使用RabbitMQ

    原文来自于:http://blog.jobbole.com/83819/ 原文出处: 寒江独钓   欢迎分享原创到伯乐头条 在企业应用系统领域,会面对不同系统之间的通信.集成与整合,尤其当面临异构系统 ...

  10. Web工程软件升级之数据库升级(一)

    1. 首先检查oracle数据库版本是否正确 (可以使用方法 lsinventory来实现) 2. 检查oracle连接是否成功 3. 解压升级包,放到特定目录 4. 做升级前数据备份,备份主要业务数 ...