以Browser(浏览器)为例
所有编译生成的jar包都在目录out\target\common\obj\JAVA_LIBRARIES下,如图:
在Android.mk中使用的时候,都是使用intermediates前面的字段。
1.首先在Android.mk中,找到所依赖的包
LOCAL_STATIC_JAVA_LIBRARIES := \
android-common \
guava \
android-support-v13 \
android-support-v4
LOCAL_JAVA_LIBRARIES := \
android.policy \
com.mstar.android
2.在Everything(一个快速查找文件的软件)中找相应的文件夹
一般文件夹的名字都是在使用的jar包后面加上_intermediates
3.打开文件,找到classes.jar就是需要的jar包。可以自己改名字
4.从源代码的import文件中看使用的哪个jar包
首先找到此文在源码中的位置
然后查看此目录下有没有Android.mk文件。
若没有再上一级查找。一直找到为止。
例如,import
android.provider.SyncStateContract;
找到位置为:Z:\base\android\frameworks\base\core\java\android\provider
找到的Android.mk文件的位置为:Z:\base\android\frameworks\base
找到Android.mk后,查看。
如果在Android.mk找不到相应的源文件,可以找到以下信息
# FRAMEWORKS_BASE_SUBDIRS comes from build/core/pathmap.mk
LOCAL_SRC_FILES := $(call find-other-java-files,$(FRAMEWORKS_BASE_SUBDIRS))
找到pathmap.mk:
#
# A list of all source roots under frameworks/base, which will be
# built into the android.jar.
#
FRAMEWORKS_BASE_SUBDIRS := \
$(addsuffix /java, \
core \
graphics \
location \
media \
media/mca/effect \
media/mca/filterfw \
media/mca/filterpacks \
drm \
opengl \
sax \
telephony \
wifi \
keystore \
)
#
说明
确实是在这个Android.mk中编译的。
然后再看这个Android.mk编译出来的jar包是什么,找LOCAL_MODULE
LOCAL_MODULE := framework-base,即要导入 framework-base包