android源码编译步骤-如何编译和调试Android源代码

android提供的工具链和开发工具都比较完善,因此其开发环境搭建起来也比较简单。 相信很多同学已经搭建好了环境,编写了HelloActivity入门程序。 这里有几个问题:

1、android的文件系统结构是怎样的,我们安装的程序在哪里?

编译完android源代码后,out/target/product/generic中的一些文件:

ramdisk.img、system.img、userdata.img、系统、数据、根

其中system.img是系统打包压缩得到的,userdata.img是数据打包压缩得到的。

ramdisk.img 是模拟器的文件系统。 解压ramdisk.img后,ramdisk.img中的文件与根文件夹中的文件基本相同。

模拟器加载ramdisk.img并解压到显存,然后分别挂载system.img和userdata.img到ramdisk下的system和data目录。 编译好的应用程序放在system/app下。 用户安装的程序放在data/app下。

2、androidSDK和android源码可以为我们提供哪些工具?

androidSDK提供了很多工具,如adb、ddms、emulator、aapt等,并提供了kernel-qemu、ramdisk.img、system.img、userdata.img。 为此,只要有androidSDK,我们就可以在模拟器上运行android。

android源码可以编译androidSDK、adb、android文件系统、ADT插件等工具,也就是说我们可以从android源码中编译出所有android相关的东西。

3.“make”android源代码后,会生成很多工具和android文件系统(system.img等),我们可以使用“makesdk”生成androidSDKandroid源码编译步骤,androidSDK还包括工具和android文件系统(system .img等),而且我们在原始安装的时候也安装了androidSDK,那么开发时我们应该使用这些工具和android文件系统吗?

这个问题之前已经回答过了。

4、官方推荐我们使用eclipse+adt来步入应用程序的开发,我们的HelloActivity程序也是在这里开发的。 当我们将android源码/packages/apps/下的项目导出到eclipse时,通常会出现找不到包的错误。 那么我们如何修改、编译、调试android源代码呢? Google 使用什么工具来开发 Android?

这个问题之前已经回答过了。

下面系统地介绍了android开发环境的搭建以及开发工具的使用。

1、androidSDK和eclipse的安装以及android开发环境的搭建

android工具链比较健全,需要的外部工具较少。 具体安装过程请参考官方文档或和。

这里需要注意的是,使用“make”编译android源码时android源码编译步骤,我们可以使用JDK5或者JDK6; 过不了啊因此,我们可以同时安装JDK5和JDK6,然后只将javadoc和javadoc.1.gz指向JDK5对应的工具,其他工具仍然使用JDK6。 其实我们可以只安装JDK5或者只使用JDK5工具。具体操作请参考

2.使用eclipse开发android源码

这里主要参考官方文档

下面,从官方文档总结一下如何使用eclipse开发android源码

1.建立基础的android开发环境

请参考官方文档或

2.编译android源码

在android源码根目录下通过make编译。 请注意一些配置。 详情请参阅

3、将eclipse项目配置文件复制到android源码根目录下

cpdevelopment/ide/eclipse/.classpath./

chmodu+w.classpath#使副本可写

4、修改eclipse程序的配置

1)、增加eclipse内存设置

将eclipse.ini(在eclipse软件的安装目录下)的3个值修改为以下值:

-Xms128米

-Xmx512米

-XX:MaxPermSize=256m

2)、导出android-formatting.xml和android.importorder到eclipse(可选)

android-formatting.xml、.classpath和android.importorder放在development/ide/eclipse/下

android-formatting.xml用于配置eclipse编辑器的代码风格; android.importorder用于配置eclipse导入的顺序和结构。

在 window->preferences->java->Codestyle->Formatter 中导出 android-formatting.xml

在 window->preferences->java->Codestyle->OrganizeImports 中导出 android.importorder

3)、安装anyedit插件(可选)

在下载并导出eclipse中

5.将android源代码作为项目导出到eclipse中

导出前检查.classpath中的文件在android源码中是否有对应的文件(文件夹),否则会破坏android源码(通常会添加更多的文件/文件夹),.classpath中多余的路径可以删除

新建一个JavaProject(不是android项目,否则会破坏android源代码),选择从现有项目导出,项目名随意,就完成了。

导出时,eclipse需要构建项目,速度比较慢。 导入后一般不会出现错误。

这是第四个问题的答案

6.在eclipse上调试android中的程序。

为了不让其他版本的android工具和android文件系统影响下面的编译和调试,需要从环境变量中删除android工具和android文件系统的路径:

vim ~/.bashrc

看看你是否把android工具和android文件系统的路径添加到PATH变量中,如果有,注释掉。通过下面的方法,我们不需要添加android工具和android文件系统的路径在.bashrc中

实施:

cdandroid源码目录

.build/envsetup.sh#设置环境变量后,会多出mmm等命令,可以输入help查看

Lunch1#将模拟器等工具的路径与ramdisk.img等文件对应起来,然后就可以直接调用模拟器等工具了,这样也解决了第三个问题

模拟器&

数据管理系统&

注意,先启动ddms,再启动eclipse,这样eclipse中就不会说端口冲突了

然后在eclipse中配置调试类型和端口

双击Run->DebugConfigurations->Remotejavaapplication,之后“Host:”设置为localhost,“Port:”设置为8800,“ConnectionType”为Standard(SocketAttach)

“申请”后

注意其中设置的端口要与DDMS中设置的端口一致。 ADT插件使用的是8700端口,所以里面设置的端口是8800。如果出现无法连接VM的错误,请注意首先要在DDMS中选择一个进程(对应某个应用程序),然后可以在eclipse中执行Debug。

在eclipse中调试的时候,可以设置断点,单步调试。恐怕google团队也是这样开发调试android应用的

7.编译android源码

实施:

cdandroid源码目录

.build/envsetup.sh

然后就会多出mm/mmm等命令,mm/mmm用于编译模块(包括C、C++、JAVA程序)。 我们也可以直接在android源码根目录下执行“make module name”来编译模块(模块名称可以在.mk文件中找到)。 模块编译完成后,会在out/target/product/generic/system/app下生成对应的.apk包。 而且mm/mmm编译生成的.apk不会被打包到system.img中。 我们需要通过makenod自动将system文件夹打包成system.img,但这需要重新运行模拟器,也很麻烦。 对于我们开发者来说,我们可以这样做:

1)从/system/app中删除需要更改和调试的模块(如AlarmClock.apk),然后makenod,这样system.img就不会有AlarmClock.apk。

2)运行模拟器,看不到AlarmClock

3)更改AlarmClock源码并用mm/mmm编译,在/system/app下生成AlarmClock.apk

4)通过adb将AlarmClock.apk安装到android文件系统中。 有两种安装方法:

A.通过adbinstallxxx/AlarmClock.apk

B.通过adbpushxxx/AlarmClock.apk/data/app

两种方式都可以将AlarmClock安装在/data/app下,android会手动将其显示在主菜单中(只要AlarmClock.apk中有一个Activity包含android.intent.category.LAUNCHER属性),但是A方法在/data /app生成com.android.alarmclock.apk,方法B为AlarmClock.apk。 使用方法A时,如果之前已经安装了AlarmClock,则必须先adbuninstall,但方法B则不需要。 推荐方法B。同样可以通过adbuninstall或者adbshel​​lrmxxx/xxx.apk进行卸载,也建议通过删除来卸载

8. 如何开发自己的项目

下面主要讲一下如何在eclipse上开发原来的android项目。 对于我们自己的项目,我们可以这样做:

1)创建一个新的android项目。

构建android项目的好处是可以充分利用ADT的功能。

2)导出需要的包

3)编译、运行、调试

4)添加到android源码对应目录下,应用程序一般放在packages/apps下

当我们观察packages/apps的原始项目时,我们会发现他们的代码非常“干净”。 没有ADT手动生成的assets、bin、R.java等文件夹。 事实上,没有.classpath和.project

5) 编译Makefile xxx.mk

使用android源码提供的专用Makefile xxx.mk,其格式比较简单

6)将新添加的项目添加到eclipse的android项目中

可以在eclipse中添加,也可以直接在.classpath中添加对应路径。 比如在.classpath中添加:

R.java是在编译时手动生成的。 虽然所有项目都使用“资源”,但都会使用R.java。 这个R.java放在out/target/common/R下。 当我们在源码根目录下制作所有代码时,会为每个模块生成R.java; 在make期间,已经用.apk文件编译生成的模块将不会被编译。 因此,如果新添加的项目已经编译完成(使用mm/mmm),我们首先更改项目的“资源”(“资源”必须更改,因为R.java是由“资源”生成的),然后make后,你会在out/target/common/R对应的包路径下看到你项目的R.java。在eclipse中刷新out/target/common/R子项目,然后在你使用R类的地方添加它的包, 例如

导入com.android.example.test.inside.helloworld.R; 这样就不会出现找不到R的定义的错误。

虽然,这个错误对我们没有影响,因为我们是在shell中编译的。

7)在android源码目录下编译新添加的项目

您可以使用 mm/mmm 或指定模块名称

8)使用版本控制工具(svn或git或其他)将项目上传到服务器

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悟空资源网 源码编译 android源码编译步骤-如何编译和调试Android源代码 https://www.wkzy.net/game/163803.html

常见问题

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务