Android源码下添加第三方库

最近做IPTV的客户端,用到一些第三方的加解密库,格式为so.

在/external下创建自己的文件夹,然后放上自己的SO和Android.mk文件即可。
比如我要添加lib_a.so和lib_b.so,那么在创建文件夹/external/mylib
然后把这两个so和Android.mk放入mylib文件夹,
Android.mk文件如下:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := lib_a
LOCAL_MODULE_TAGS := optional
LOCAL_PREBUILT_LIBS := lib_a.so
include $(BUILD_MULTI_PREBUILT)

include $(CLEAR_VARS)

LOCAL_MODULE := lib_b
LOCAL_MODULE_TAGS := optional
LOCAL_PREBUILT_LIBS := lib_b.so
include $(BUILD_MULTI_PREBUILT)
#表示编译当前目录和所有子目录,如果不加$(LOCAL_PATH)表示只编译当前目录
include $(call all-makefiles-under,$(LOCAL_PATH))

当然如果你不愿意用
include $(callall-makefiles-under,$(LOCAL_PATH))
也可以自己配置,XXX和YYY是当前子的目录,比如还要添加jni

LOCAL_PATH := $(call my-dir)
include $(LOCAL_PATH)/XXX/Android.mk $(LOCAL_PATH)/YYY/Android.mk

如果是源码全部编译过就直接切换到该目录,然后

mm -B

-B是强制重新编译

然后在out\target\product\xxx\system\lib下就能找到,直接在代码里load就好了。

JNI的mk文件

LOCAL_PATH:= $(call my-dir)
#自定义一个地址xxx目录
DVB_PATH := $(wildcard external/xxx)

ifeq ($(DVB_PATH), )
DVB_PATH := $(wildcard vendor/xxx/xxx)
endif

include $(CLEAR_VARS)

LOCAL_MODULE_TAGS := optional

LOCAL_MODULE:= libiptv

LOCAL_ARM_MODE := arm
#对应xxx目录下的xx.h头文件,如果在这里声明后,jni文件就可以直接引用不用目录
LOCAL_C_INCLUDES := $(DVB_PATH)/include/xx

LOCAL_LDLIBS := -llog
#这里是需要用到的动态库,后缀为so
LOCAL_SHARED_LIBRARIES += liblog libandroid_runtime
#需要编译的源码文件
LOCAL_SRC_FILES:= \
iptv_jni.cpp
#静态库,这里没有用到就注释掉了
#LOCAL_STATIC_LIBRARIES :=
# liba \
# libb \
#包含自己的头文件进去
LOCAL_C_INCLUDES += \
$(JNI_H_INCLUDE)

LOCAL_CFLAGS +=

LOCAL_PROGUARD_ENABLED := disabled

LOCAL_PRELINK_MODULE := false

include $(BUILD_SHARED_LIBRARY)


下面就是APP的Android.mk文件了,这里用了一个开源的网络请求jar,android-async-http-1.4.4.jar


LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)

LOCAL_MODULE_TAGS := optional
#定义jar的别名
LOCAL_STATIC_JAVA_LIBRARIES := aync

LOCAL_SRC_FILES := $(call all-subdir-java-files)

LOCAL_PACKAGE_NAME := IPTVtest

LOCAL_CERTIFICATE := platform

include $(BUILD_PACKAGE)

###############################

include $(CLEAR_VARS)
#这里引用别名,注意冒号前要对应上面的别名
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := aync:libs/android-async-http-1.4.4.jar
#也可以在app添加自己需要的so库
#LOCAL_PREBUILT_LIBS :=libxxx:libs/armeabi/libxxx.so
## 如果把jni放在app下的话,可以请求jni的MODULE名字
#LOCAL_REQUIRED_MODULES := libjni
##
LOCAL_MODULE_TAGS := optional
include $(BUILD_MULTI_PREBUILT)

# Use the following include to make our testapk.
include $(callall-makefiles-under,$(LOCAL_PATH))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值