adb源码如何编译-如何编译和调试Android源代码

如何编译和调试Android源代码

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

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

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

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

其中system.img是系统打包压缩得到的adb源码如何编译,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”生成androidSDK,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源码时,我们可以使用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(不是androidproject,否则android源代码会被破坏),选择从现有项目导出,将项目命名为自己喜欢的名称,然后完成。

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

这是第四个问题的答案

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

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

vim~/.bashrc

检查 android 工具和 android 文件系统的路径是否已添加到 PATH 变量中。 如果有adb源码如何编译,则注释掉。通过下面的方法,我们不需要将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中存在包含android.intent.category.LAUNCHER属性的Activity),但方法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的原始项目时,我们会发现他们的代码非常“干净”。 没有assets、bin等文件夹以及ADT手动生成的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)

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

常见问题

相关文章

官方客服团队

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