关闭

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

317人阅读 评论(0) 收藏 举报

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



0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:47713次
    • 积分:1454
    • 等级:
    • 排名:千里之外
    • 原创:101篇
    • 转载:0篇
    • 译文:0篇
    • 评论:9条