1. 程式人生 > >Android 模組化編譯的一些問題解決方案

Android 模組化編譯的一些問題解決方案

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也是作測試的,目前並不需要。等需要時再重新全部編譯一次好了。