mm指从当前目录开始编译,mmm是从指定目录下搜寻Android.mk编译。
模块编译完成后,回到source code所在根目录运行make snod进行打包。
在此期间遇到了如下问题:
1. 修改/frameworks/base/core/java/android/app下文件后模块编译出现找不到R.stamp错误
rm -r -f /out/target/common/obj/APPS
cd frameworks/base/core/res
mm
再重新模块化编译即可。
2. 修改libcore/luni/src/main下java 核心库导致No rule to make target `out/target/common/obj/JAVA_LIBRARIES/sqlite-jdbc_intermediates/javalib.jar
在javaLibrary.mk找到sqlite语句,发现其所在模块为test。看来是莫名其妙test模块被删了,而又无法重新编译导致的。文件最上面有官方说明“ # Built only on demand, for testing.”。目前不需做test,于是直接在makefile中加入语句export LIBCORE_SKIP_TESTS = false:$LIBCORE_SKIP_TESTS禁止test模块编译。但问题并没有完全解决,会爆出benchmark找不到test库。找到libcore下的Android.mk把include $(LOCAL_PATH)/benchmarks/Android.mk注释掉,问题解决。benchmark也是作测试的,目前并不需要。等需要时再重新全部编译一次好了。