在android系统通过makefile方式添加第三方jar包

Android里在编译一个java应用时,如果这个应用需要一个第三方的jar包,那么就需要将这个三方的jar包通过mk文件将其编译到apk里,下面是将一个三方的jar包编译到apk包里的方法.

LOCAL_PATH:= $(call my-dir)

include $(CLEAR_VARS)
LOCAL_STATIC_JAVA_LIBRARIES += zxingtool

include $(BUILD_PACKAGE)

include $(CLEAR_VARS)
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES += zxingtool:libs/zxing.jar

include $(BUILD_MULTI_PREBUILT)


关键在于:

LOCAL_STATIC_JAVA_LIBRARIES += zxingtool

LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES += zxingtool:libs/zxing.jar



其实zxingtool是个名字可以随便取,但是两个属性的值要一样就好了,但是后面那个冒号里面就一定要写你的jar包名,你的jar包一定放在工程的根目录就是和mk文件的同级目录。

要注意:zxingtool这个名一定要是唯一的,要不编译就会出错,比如有两个应用里都用到了zxingtool这个包名,那么在编译时就会出现一下的错误信息:

***/packages/apps/ValidationTools:MODULE.TARGET.JAVA.LIBRARIES.libarityalready defined by packages/apps/camera

意思就是用两处定义了libarity,一处是/packages/apps/ValidationTools,另一处是packages/apps/camera



再补充一下,有好多遇到这样的问题的,网上给的答案都是在  build/core/base_rules.mk  


# Make sure that this IS_HOST/CLASS/MODULE combination is unique.
module_id := MODULE.$(if \
    $(LOCAL_IS_HOST_MODULE),HOST,TARGET).$(LOCAL_MODULE_CLASS).$(my_register_name)
ifdef $(module_id)
$(error $(LOCAL_PATH): $(module_id) already defined by $($(module_id)))
endif


把里面的报错注释掉,这是非常不好的事情。





评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值