编译环境:
1.oracle vm virtualbox
2.ubuntu Linux version 4.4.0-31-generic (buildd@lgw01-43)
(gcc version 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04.3) ) #50~14.04.1-Ubuntu SMP Wed Jul 13 01:07:32 UTC 2016
3.jdk 1.6
//先查看虚拟机中ubuntu系统存储空间,防止空间不足导致漫长的等待结果内存不足,导致虚拟机起不来
df-TH
//pwd 查看当前目录 /home/username/
mkdir android
sudo apt-get install git curl
PATH=/home/username/android:$PATH
curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o /home/username/android #使用tuna的git-repo镜像
chmod a+x ~/bin/repo
gedit repo
#找到REPO_URL = 'https://gerrit.googlesource.com/git-repo'并替换
REPO_URL = 'https://mirrors.tuna.tsinghua.edu.cn/git/git-repo'
//下载git仓库Android清单
git clone https://aosp.tuna.tsinghua.edu.cn/platform/manifest
cd manifest
//版本列表显示不完 加上more 一个个看
git branch -a |more
//找到android-2.3_r1(4.4的版本下载下来50G,电脑硬盘存储不够,虚拟机中的ubuntu系统内存爆掉,2.3相对小一点)
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-2.3_r1
//提示git 配置邮箱和名字
git config --global user.email "xxx@qq.com" && git config --global user.name "xxx"
repo sync
//查看下载了多少,当前目录下
du -sh
git clone https://aosp.tuna.tsinghua.edu.cn/aosp/kernel/goldfish.git
//
安装 python 2.7
//后续步骤安装类库参考
https://blog.csdn.net/ylyg050518/article/details/80480966
make clean
$ source build/envsetup.sh
$ lunch full-eng
$ make
//编译过程问题
make: *** [out/host/linux-x86/obj/SHARED_LIBRARIES/libdvm_intermediates/native/dalvik_system_Zygote.o] Error 1
解决办法
添加头文件#include <sys/resource.h>到以下文件
dalvik/vm/native/dalvik_system_Zygote.cpp
//
make: *** [out/host/linux-x86/obj/STATIC_LIBRARIES/libext4_utils_intermediates/output_file.o] Error 1
由于系统的文件换了位置, 此时需要将 /usr/include/x86_64-linux-gnu/zconf.h 拷贝到上级目录,此时编译才通过
将 zconfig.h 拷贝到 /usr/include/ 目录即可
sudo cp -r /usr/include/x86_64-linux-gnu/zconf.h /usr/include
//
[out/target/product/eve/obj/STATIC_LIBRARIES/libwebcore_intermediates/WebCore/HTMLNames.h]
解决方法:
修改文件/home/istep/android/external/webkit/WebCore/WebCore/dom/make_names.pl
my $preprocessor = "/usr/bin/gcc -E -P -x c++"; 改为my $preprocessor = "/usr/bin/gcc -E -x c++";
//同時安装
sudo apt-get install libswitch-perl
配置模拟器环境变量:
#JAVE
JAVA_HOME=/home/istep/ide/jdk1.6.0_45
export JAVA_HOME
PATH=$JAVA_HOME/bin:$PATH
# Androidemulator
emulator_HOME=/home/istep/android/out/host/linux-x86
export emulator_HOME
PATH=$emulator_HOME/bin:$PATH
ANDROID_PRODUCT_OUT=/home/istep/android/out/target/product/generic
export ANDROID_PRODUCT_OUT
启动模拟器:
emulator
遇到的问题:
SDL init failure, reason is: No available video device
解决办法:
sudo apt-add-repository "deb http://archive.canonical.com/ $(lsb_release -sc) partner"
sudo apt-get update
sudo apt-get install libsdl1.2debian:i386
感谢http://blog.csdn.net/mldxs/article/details/8757106网友提供的解决方法
//模块编译,当前源码目录下
. build/envsetup.sh
//然后执行编译命令
mmm packages/apps/Launcher2
//启动模拟器后,就可以看到结果了
adb install -r out/target/product/generic/system/app/Launcher2.apk
//
mount -o remount,rw rootfs /system/
Android中为子系统重新单独编译动态库的方法
https://blog.csdn.net/Qidi_Huang/article/details/53690139
//添加core service 报错 ServiceManager: add_service('hello',62) uid=1000 - PERMISSION DENIED
找到service_manager.c 中的allowed 数组参考现有的加入自己的添加的服务