【Android】Monkey修改(一)—— monkey源码编译

因工作需要,需对monkey做一下定制,上网找了一些资料,动手做的时候确遇到很多的问题,写此篇文章以作汇总和记录

操作系统:Ubuntu16.04
monkey源码可参考:https://github.com/aosp-mirror/platform_development/tree/master/cmds/monkey/src/com/android/commands/monkey

monkey源码编译依赖Android源码,所以单独的monkey模块代码是不能调试的,要想调试,就需要在完整的Android源码环境下进行编译
那么第一步我们来下载Android源码

下载Android源码

Android源码下载官方文档:https://source.android.com/setup/build/downloading

操作步骤
  1. repo的下载和安装
    在电脑的主目录下新建一个 bin/ 目录,并将它加入路径
mkdir ~/bin
PATH=~/bin:$PATH
curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo > ~/bin/repo
chmod a+x ~/bin/repo

2 新建工作目录

mkdir WORKING_DIRECTORY
cd WORKING_DIRECTORY
  1. 初始化仓库,-b参数指定Android版本,使用清华镜像服务器
    Android版本细分:https://source.android.com/source/build-numbers.html
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-5.1.1_r24
  1. 下载源码
repo sync

编译之前,需要了解一下这个小坑: Android版本编译要求的JDK版本!
Android 5.x至android 6.0需使用OpenJDK 7
更多编译要求可以参考:https://source.android.com/source/requirements.html

我的操作系统是Ubuntu 16.04,下载的源码是Android5.x。因为之前安装过OpenJDK 8,所以,第二个坑就来了:下载多个jdk版本并切换
Ubuntu 16.04及之后的版本的在线安装库中只支持openjdk8和openjdk9的安装.因此,如果你想要安装openjdk 7需要首先设置ppa,再执行安装命令

sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-getupdate
sudo apt-get install openjdk-7-jdk

关于jdk版本切换,可以使用如下命令:

sudo update-alternatives --config java
sudo update-alternatives --config javac

好了,终于搞定了,可以开始编译源码了

编译源码

步骤
  1. 初始化编译环境,在工程目录下执行下面的命令
source build/envsetup.sh
初始化源码编译环境
  1. 选择编译的代码要运行在什么设备上,可以先输入lunch,看下效果


    选择编译后代码运行平台
  2. 执行编译
    如果需要源码全编的话,可以借助-j参数,设置同步线程数,执行如下命令
make-j8

如果你只想编译monkey源码,则需要打开/development/cmds/monkey/Android.mk文件,在LOCAL_SRC_FILES:=$(call all-subdir-java-files)下添加LOCAL_DEX_PREOPT:=false
然后在项目根目录下执行编译

make monkey

编译成功后,会在/out/target/product/generic/system/framework下生成monkey.jar

编译可能不成功,坑三来了:make monkey报错,报错如下:

build/core/binary.mk:539: recipe for target 'out/host/linux-x86/obj32/EXECUTABLES/aidl_intermediates/aidl_language_y.cpp' failed
make: *** [out/host/linux-x86/obj32/EXECUTABLES/aidl_intermediates/aidl_language_y.cpp] 断开的管

解决方法

sudo apt-get install flex bison

我是在这篇博客中找到了答案:https://nancyyihao.github.io/2016/10/07/complie-Android-5-1-on-Ubuntu-16-04/

坑四:make monkey编译和 mma development/cmds/monkey/
因为我有一个疑问:make和mma都可以编译源码和其依赖,想知道这两者编译方式有何不同,是否可以选择其一即可?
所以尝试了两种编译方式后,得出的答案是:不是!!
make monkey编译源码,会生成monkey.jar
mma 只是执行了编译,没有jar包生成

好了,monkey编译的踩坑指南就到这儿了,后续会继续更新monkey修改相关的文章。over!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。