Android.mk文件中找Apk需要用到的jar包

以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包



阅读更多
上一篇Android中声音处理流程
下一篇Android中字体设置Font
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭