疑问与解答:
1. 在AOSP编译过程中, 每个module, 都需要通过Android.mk, 配置编译module需要依赖的lib. 这个配置一般通过 LOCAL_JAVA_LIBRARIES 或者 LOCAL_STATIC_JAVA_LIBRARIES 实现;
2. 某些module, 如果不依赖特定的lib, 那么上述lib依赖关系的字段是可以不写的. 但是在这些module在编译过程中, 明显依赖了frameworks的一些接口, 但为什么不需要声明依赖关系?
3. 答案很简单很无聊: 系统帮你指定了默认的lib呗.
需求:
那么问题来了, 如果想往AOSP的默认lib里面, 添一个自己的lib, 要怎么实现?
实现:
简单粗暴的把代码放出来:
1. build/core/java.mk
... LOCAL_JAVA_LIBRARIES := bla-bla Ted-New-Lib ...
上述代码中的Ted-New-Lib就是新增的lib.
注意该文件中, 存在多个对LOCAL_JAVA_LIBRARIES赋值的位置, 除了最后一个排序的, 其他都得这样修改.
2. build/target/product/core_minimal.mk
# The order of PRODUCT_BOOT_JARS matters. PRODUCT_BOOT_JARS := \ ... Ted-New-Lib ...
这部分代码放在minimal下不是optional的, 可以根据需求, 放在其他几个core_xxx.mk中.
3. frameworks/base/Android.mk
... LOCAL_JAVA_LIBRARIES := bla-bla Ted-New-Lib ...
4. 其他配置了LOCAL_NO_STANDARD_LIBRARIES := true的module, 也同样需要follow第3点的修改.
原理:
晚点写.
发现某些网站会到iteye上面抓文章repost, 还不注明出处.
所以决定让它们先抓一个不完整的版本.