Android源码下载与编译之emulator与adb

2023-05-16

    最近碰到一个问题,就是Android的emulator只能打开16个,在网上找到文章有说adb连接数量是16个的,但是没说这个avd也只能16个(当然是在一台电脑上)。于是,看看官方文档,自己从源码里找原因吧。不过先说明的是官方对于avd的数量说是没有限制的,自己可以看看。后面我也会简单记录一下我所了解到的和简单的分析情况。下面主要介绍自己下载Android源码与单独编译emulator和adb的过程。
    Android源码是我在出差的时候下的,直接把Android源码的全部同步下来,反正是晚上开了就没有管。记得原来在Windows下用Git单独下的时候,那个麻烦的,而且如果对Android源码树没有很好的了解的话,即使那样下载下来,用起来也是个问题。再说还有编译呢,不是说不可以,但是这个工作量还不如你直接上Linux,所以建议安装个虚拟机(如果直接Linux那就更方便了,官方建议Ubuntu10.04,更高也可以)还是老老实实下载,官方给出了详细的下载文档,懒得找的话,我给个链接:http://source.android.com/source/downloading.html;简要说明一下步骤:
   1.(1)repo目录
    创建运行repo(其实就是包装好的git)的目录,执行如下命令(弱弱的说下,可以把目录建在自己想要的地方)
    $ mkdir ~/bin
    $ PATH=~/bin:$PATH
    (2)下载repo
    (弱弱的补充下,没安装curl可以先apt-get下,注意repo的目录)
    $ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
    $ chmod a+x ~/bin/repo
    (3)创建源码目录并下载
    $ mkdir WORKING_DIRECTORY
    $ cd WORKING_DIRECTORY


    $ repo init -u https://android.googlesource.com/platform/manifest
    ($ repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.1_r1 选择执行,如果你已经确定自己想要下载的版本)
    $ repo sync
    (好吧,看着多线程下载!估计要等很久了)
    2.编译环境搭建
    (1)按照官网安排是先搭建环境,再下源码的。不过咱们编译的时候再搭建环境也不错啊。Python、git等的版本不说,首先提的是JDK版本(JDK 6 if you wish to build Gingerbread or newer; JDK 5 for Froyo or older. 如果只是想我这篇文章的目的,主要是adb和emulator的话,那么建议直接下载JDK6,如果确实需要编译整个目录而且还是2.1及以前的,那么按推荐JDK1.5)就用1.6吧,然后运行安装(chmod +x 包名.bin),环境变量设置在~/.bashrc文件中,这样登录后就自动运行了,末尾追加如下:
    #set java environment
    export JAVA_HOME=/usr/bin/jdk
    export JRE_HOME=$JAVA_HOME/jre
    export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
    export PATH=$JAVA_HOME/bin:$J上面的路径换掉,然后试下source ~/.bashrc和java
    (2)下载必要包
    看到官方文档说是建议在64位系统上编译,这个。。。。。。。,我没有条件,只好现在我的虚拟机上继续了。然后是安装必要的包,说实话,具体需要哪些我是真的不知道,看着原来有人发的文章(参考1),编译2.1的,就照着人家给的下载了:
    apt-get install git-core gnupg flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev
    因为,我是需要在Linux下编译windows下用的adb等,所以需要mingw32,这个看官方推荐的包和参考2可以知道。目前来看,还不用下官方推荐的那么多,可能还没有编译Android系统内部源码的原因。
    (3)编译
    一般的文章说到这里,都是在源码目录下 . build/envsetup.sh和choosecombo两个命令,(当然后面是要运行的,而且默认的就可以)然后make,我这里当然不用这样啦。我只是要那两部分,也就是说两个模块,直接模块编译。执行上面那两条命令。好了,准备工作好了,我们
    make USE_MINGW=y emulator 就可以了。再来个 
    make USE_MINGW=y emulator-arm 和(先运行make adb不然会出现No rule to make target `out/host/linux-x86/bin/acp'的问题。)
    make Use_MINGW=y adb

    可以再out目录host下找到生成的.exe文件和两个.dll文件,自己拿去tools下覆盖(或者是plateform-tools)试试啦。我要说的是那么这个模块的名称你是怎么找到的???LOCAL_MODULE,还有那个参数自己在.mk文件夹下看看搜搜,其实我本来也是不知道的,人家写了,自己找找,不过还是希望那些知道的人把怎么知道的说出来,先谢谢啦!

    要上图么,好吧,要来真相,只给生成的目录下的图片:


    最后注明,本文出处:http://blog.csdn.net/w7849516230/article/details/7580947 联系邮箱w.7849516230@163.com,因为发现搜索的时候,转载我的网站比我的原文好找,而且还没有出处,我比较讨厌这样,自己看别人的文章的时候也希望找到出处,最好还能讨论下的。

参考文:

1.Ubuntu 10.04环境下载&编译Android-2.1_r2源代码【20110527更新说明】 http://blog.csdn.net/jackyu613/article/details/5778646
2.在Linux下编译Windows版本的adb和fastboot http://kaiyuan.blog.51cto.com/930309/555422

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android源码下载与编译之emulator与adb 的相关文章

  • 如何使用保存实例状态来保存活动状态?

    我一直在研究Android SDK平台 并且不太清楚如何保存应用程序的状态 因此 考虑到对 Hello Android 示例的这个小改动 package com android hello import android app Activi
  • Sense 手机上的 Android 应用程序主题

    我在有关感应手机上的应用程序的 UI 项目上遇到了障碍 我无法在谷歌或SO上制作搜索查询来找到我所追求的任何参考 有没有办法让我的应用程序主题的 UI 样式与手机当前应用的样式相匹配 我基本上追求不同 UI 小部件 复选框 微调器 按钮等
  • Android 添加新日历

    我已经检查了所有从 Android 应用程序中创建新日历的方法 我见过的唯一方法是在最新的 api 版本中使用新的 Calendar API 但这似乎只有在您使用时才有效CalendarContract ACCOUNT TYPE LOCAL
  • 如何将内部类的值返回到外部类?

    我想做的是当onSuccess方法执行后 queryLogin return true 而如果onFailuer方法执行后 queryLogin return false 但如您所知 在 java 中 我无法从内部类修改外部类值 所以我只是
  • 如何在列表视图中每行右侧显示 4 个图标

    我想在列表视图的每一行右侧设置 3 个图标 我正在制作购物应用程序 我希望在列表视图中用户选择任何产品时 这样他 她可以以 3 种方式查看产品 就像用户选择图标一样1 这样用户可以在网格视图中看到产品 如果用户选择图标 2 这样用户可以在图
  • 启动时启动服务但不进行任何活动

    我想创建一个仅包含服务 无活动 的应用程序 该服务必须在启动时启动 我的问题是 如果没有活动 启动接收器似乎不会调用 我用下面的例子进行了测试 我有不同的文件 MyReceiver java package com test teststa
  • 手电筒打开时 Android 相机的奇怪行为

    我有以下 android 代码 这里用伪代码编写 mCamera configAndInitialize all I want to do before taking picture mCamera startPreview mCamera
  • 如何创建启动活动,通过按钮调用第二个活动,简单的数据表单 5 个字段和 2 个按钮

    Android 新手需要一个可靠构建的帮助 我可以参考并研究未来的项目 第一个活动是带有按钮的背景图像 单击时会出现 您将看到第二个活动 该活动是一个包含 5 个数据字段和 2 个按钮的表单 一个按钮调用在应用程序内拍照的意图 另一个按钮将
  • 服务中的膨胀视图显示视图,但不显示布局内的 ImageView

    我已经成功地在服务中扩展了我的布局 但是它没有显示ImageView在 的里面Inflated Layout我不知道为什么 我设置了一个onClickListener在图像视图上 它工作得很好 当我单击绿色方块时记录并停止服务 唯一的问题是
  • Android 4.2.1 错误的字符字距调整(间距)

    使用时Canvas and drawText 方法我在 Android 4 2 1 上看到了不同的渲染 4 2 以下 对于 Android 4 2 1 Nexus 7 我得到 正如你所看到的文字消耗很紧 似乎是4 2 1中引入的字距调整问题
  • 从 Android Intent 打开图库应用

    我正在寻找一种打开方式Android来自意图的画廊应用程序 我不想返回图片 而是只是打开图库以允许用户使用它 就像他们从启动器中选择它一样 View pictures folders 我尝试执行以下操作 Intent intent new
  • ActivityManager.getRunningTasks 已弃用 android

    我正在 android 中处理推送通知 我使用下面的方法来显示通知 但问题是现在 ActivityManager getRunningTasks 1 正在被弃用 从一个 stackoverflow 问题中我读到 你可以使用getAppTas
  • RxJava - 链接请求和更新 UI

    我遇到的问题是这样的 我需要向服务器执行几个请求 下一个请求取决于前一个请求的结果 它们看起来像这样 缩写 Observable
  • 导入 org.ksoap2.SoapEnvelope 时遇到问题

    正在使用网络服务 从互联网上获取了一些示例代码 导入时出现一些错误 import org ksoap2 SoapEnvelope import org ksoap2 serialization SoapObject import org k
  • 导航抽屉图标不显示 android

    MainActivity java public class MainActivity extends FragmentActivity public DrawerLayout mDrawerLayout public ListView m
  • setShadowLayer Android API 差异

    我为我的应用程序开发了一个自定义视图组件 并且正在努力向圆圈添加阴影 这是我的类扩展 View 的代码 public class ChartView extends View public ChartView Context context
  • 不要使用android内置的org.json

    我写了一个使用的库org json http json org A 来自 json org 假设 Android 使用相同的 在 android 中也称为org json B 只是它遗漏了一些相对关键的功能 现在我想做的是设置我的 grad
  • ExpandableListView 和复选框

    我正在 Android 中编写简单的过滤器并想使用ExpandableListAdapter与复选框 我创建列表或检查复选框没有问题 但我真的不知道如何记住选择 关闭组并再次打开后或当我尝试打开不同的组时 复选框会发生变化 我尝试在网上阅读
  • 进度对话框未显示在屏幕上

    我根据亲爱的 Mayank answer 编辑了我的代码 但它没有显示在方法开始之前在 displayMsg 方法中作为输入发送的任何消息 我应该说 MethodTest 是通过 nfc 和 onNewIntent Intent Inten
  • Android Vector Drawable 不支持。如何修复它?

    尝试从 AndroidStudio 2 2 Ubuntu 14 04 的本地 svg 文件生成矢量资源时出现此错误 Could not generate a preview In icon svg ERROR line 6

随机推荐