一、编译相关资源链接
设备硬件二进制文件
Android分支支持设备列表
搭建构建环境
初始化源码仓库
repo init -u https://android.googlesource.com/platform/manifest -b android-7.1.1_r57 --depth=1 --partial-clone --clone-filter=blob:limit=10M
二、ubuntu 20 编译环境
apt-get install default-jre
apt-get install libncurses5
apt-get install clang
apt-get install make
apt-get install git-core gnupg flex bison build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig
三、常见错误以及解决方法
1. loadlocale.c:130错误
loadlocale.c:130: _nl_intern_locale_data: Assertion cnt < (sizeof (_nl_value_type_LC_TIME) / sizeof (_nl_value_type_LC_TIME[0])) failed.
export LANG=C
export LC_ALL=C
export LC_COLLATE=C
2. 关于jack-server的错误
Android7.0 配置JACK支持多用户同时编译
Android JACK 编译错误SSL error when connecting to the Jack server
3. stack frame size of bytes in function错误
修改 -Wframe-larger-than=6400
jdk版本一定要用jdk8
四、编译替换系统APK
编译完成后刷写
adb reboot bootloader
进入bootloader- 双清原系统
fastboot flashall -w
五、在开发阶段关闭dex2oat
1. 在当前module的Android.mk里关闭
LOCAL_DEX_PREOPT = false
2. 在build/core/main.mk中关闭所有module的dex优化
ifeq ($TARGET_BUILD_VARIANT), eng)
tags_to_install := debug eng
#关闭odex优化
WITH_DEXPREOPT := false
六、Framework定制
stop;start; //软重启
$(gettop) //获取top目录
七、Native层定制
godir android_util_log.cpp //查找文件所在目录
stop;start; //重启