LOCAL_STATIC_JAVA_LIBRARIES
LOCAL_STATIC_JAVA_LIBRARIES表示把引用的外部Java库直接编译打包到本模块中,在runtime时可以直接从本模块中找到相关的东西。
LOCAL_JAVA_LIBRARIES
LOCAL_JAVA_LIBRARIES表示引用的外部Java库在编译时可以找到相关的东西,但并不打包到本模块,在runtime时需要从别的地方查找,这个别的地方就是在编译时将引用的外部Java库的模块名添加到PRODUCT_BOOT_JARS,例如Android原生的framework.jar就添了,PRODUCT_BOOT_JARS+=framework,否则在runtime时ClassLoader找不到需要的class。
综上,Android中所谓的Java动态库、静态库不同于C、C++的动态库、静态库,编译为静态库时表示编译为原生的Java class压缩包,编译为动态库时表示编译为用于Android Dalvik的dex压缩包,静态引用时把外部库直接打包过来,动态引用时需要将外部库加到PRODUCT_BOOT_JARS。