android的 makefile -- Android.mk 分析

引用动态库、静态库。

关于静态库,如果是需要是在自己应用中的jar包,需要预编译,但是不知道为什么。

关于动态库,如果是自己应用中的so库,那么需要预编译,为什么呢,因为你要把这些动态库放到系统的lib或者lib64中,否则动态加载时就找不到了,而在BUILD_PACKAGE时使用LOCAL_JNI_SHRAED_LIBRARIES引用预编译后的so模块,听说会把so库包含在apk中,而不止是放进系统lib中,但是实践证明,无论是5.0还是6.0系统都不会把so库放到apk中的;如果是源码,则只需直接编译好就行,而不用预编译这些so了,因为编译时就会将so库放进系统lib中,而预编译的作用也只是这样,所以就不用做重复的事了。因为如果一个动态库是在系统中的,那么apk中并不需要包含这个so文件,在加载该动态库时再找就好了,不用提前说明。而静态库就不一样,需要在BUILD_PACKAGE时指定要使用哪些静态库,如果静态库不是系统编译生成的,还需要预编译。

include $(BUILD_PREBUILT):预编译静态库或者动态库使用的makefile

include $(BUILD_MULTI_PREBUILT):预编译多个库时使用的makefile

LOCAL_SHARED_LIBRARIES:在编译动态库时用于指定需要链接哪些动态库

LOCAL_SHARED_LIBRARIES := \
	libblf \
    libutils \
    libcutils

LOCAL_STATIC_JAVA_LIBRARIES:在编译apk时,指定需要链接哪些静态库

OCAL_STATIC_JAVA_LIBRARIES:= androidsupport android-support-v7-recyclerview settingslib2 settingslib3 settingslib4 com.mediatek.settings.ext

LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES:预编译时指定对哪些静态库进行预编译

include $(CLEAR_VARS)
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := \
	androidsupport:libs/android-support-v4.jar \
	settingslib2:libs/core-3.0.0.jar \
	settingslib3:libs/my_gson-2.3.1.jar \
	settingslib4:libs/BreathLedController.jar
include $(BUILD_MULTI_PREBUILT)

预编译so库:

include $(CLEAR_VARS)

LOCAL_MODULE := libBreathLed
LOCAL_SRC_FILES_32 := libs/armeabi/libBreathLed.so
LOCAL_MULTILIB := 32
LOCAL_MODULE_CLASS := SHARED_LIBRARIES
LOCAL_MODULE_SUFFIX := .so
include $(BUILD_PREBUILT)

 

 

 

android的 makefile -- Android.mk 分析

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值